CS128H-Final-Project

Group Name: Advanced Keylogger Group Member: Simon Xia (hx17) and Shri (spati22)

Project Introduction: the project is about creating a simple keylogger, which can record any actions on keyboard. Moreover, The keylogger will have ability to analyze possible actions by the users by analyzing the results of the keylogger. Besides, as for the results of the keylogger, they should be encrypted so that other people cannot see the results. Only the one with decryption method can view the results of the keylogger. The reason why we choose a keylogger and add further functions to it as the topic for the final project is that we both are interested in cyber security and want to choose some topics related to it. The keylogger is very cool and flexible to other cyber security topics, like encryption and decryption. Besides, instead of doing something that others have already done, we tend to add some our own ideas into the project, which is related to the algorithm and method to analyze the result of the keylogger, and the novel way to connect different cyber security problem.

Technical Overview: The final project is composed of three parts -- creating a keylogger, designing algorithms to analyze the results of the keylogger, and using encryption and decryption to manage the results of the keylogger. The first checkpoint should be creating a simple keylogger that can function and record well. After creating the keylogger, we will try to create algorithms to analyze the results of the keylogger, which should be the second checkpoint. For instance, analyze whether the users are texting by the frequency of using the keyboard and printing the results. Also, highlight some important words, like "Password", "Account", Capitalized words, or continuous numbers, to get important information from the text. Analyze the frequency of certain buttons users used to figure out whether users are watching videos or playing games. Finally, print all the result in a certain format, which is easy to read. There may be more possible way to analyze the results, which will come later. As for the final checkpoint, we hope to encryted the results we get from the keylogger so that when other people or users find the results, they cannot understand the contents. It can be a way to disguise. For the encryption methods, we plan to use some basic and medium algorithms, like xor or DHKE algorithms.

Possible Challenges: There are a few possible challenges we may face when working on the project. First of all, as for the work of the keylogger, we may need to learn new UI or learn new knowledge, which may take some time. Secondly, as for the algorithms to analyze the results of the keylogger, it is hard to ensure the accuracy of the analysis, since different people have different habits to use keyboards and as for people who are not very familiar with the keyboard, the results will be hard to analyze. We may need to find a way to figure out this problem and improve the accuracy of the analysis. Besides, learning encryption and decryption algorithms may be challenging even a simple algorithm. New math knowledge is required.

Reference: I have got some ideas about how to create a keylogger from here https://github.com/thomaslienbacher/win-keylogger-rs.git. Learn how to use winapi here https://docs.rs/winapi/latest/winapi/. Learn how to use std::os and std::fs here https://doc.rust-lang.org/std/ and https://docs.rs/os_info/latest/os_info/ Some infomation about unsafe https://doc.rust-lang.org/rust-by-example/unsafe.html#:~:text=Unsafe%20annotations%20in%20Rust%20are%20used%20to%20bypass,modifying%20static%20mutable%20variables%204%20implementing%20unsafe%20traits Learn how to use locale here https://learn.microsoft.com/en-us/windows/win32/intl/locale-name-constants