Projects

During and after my attendance University of North Georgia several major projects were developed, they are listed here as a noteworthy mention of their complexity and knowledge level to complete.

Two Factor Authentication Project

The Two Factor Authentication Project fully shows the knowledge and inner workings of modern 2FA system. I was given only a token generator and was tasked with creating a program which will use the token generator to generate tokens via 2FA during login of a Linux system. The file 2FA.py file gives the user the option to create new users, login, update password, and delete a user. When logging in the program will ask for username, password, current token and next token. To start the login, process the program checks the username if it exists. After the username is proven to exist, we continue by cryptographically hashing the combination of the password + current token + salt to create a hash which should match the hash for that user stored in the password shadow file. After the hashed password is matched for that user the same salt and hash process will commence again using the next token which will now be stored in the password shadow file for next time a user logs in. The token generator is simulating how a secondary device’s token generator, the 2FA program emulates the combined login and token needed process. I developed 2FA.py, check_login.py, and create_user.py. See the readme and project files below to check out the code.

The Compiler Project

The Compiler Project tests one’s knowledge and emulates the steps of compiling Java. First by generating lexemes, then generating tokens and checking syntax, then generate machine code to be executed by the JVM. I was tasked to build a simple compiler to read Java code. In this project I created a file named LexicalAnalyzer.java, A lexical analyzer, which reads a given text file with Java code and creates tokens. The tokens are to be used in conjunction with the syntax analyzer to check for proper syntax of the Java code. If no error tokens are produced from the syntax analyzer the output would then be, in this particular project, converted to SUBLC3 Language to be read by the JVM, or our version of a JVM with VirtualMachine.java. This VirtualMachine.java file will read the SUBLC3 text file and will be able to execute the operations. The files associated with this project are below.

PCAP/Snort Output Parser Project

For the PCAP/Snort Output Parser project I created a Java file which reads provided PCAP files (Snort output files) and outputs the IP addresses as well as identification on Hosts.txt & connections.txt. I was tasked to create a program which can read this text file to filter through the benign, malicious, and just regular internet traffic. The program I created, project4_main.java, reads through the text snort output files and determines, to a high degree of certainty, which IP addresses are most likely a Bot, Benign, an Isolated Infection, involved in CNC, or other based on the flags for the IP address output from the snort rules file. This project also checks for duplicate IP addresses and will only output an IP address once if found one or more times to increase readability for the user. The files for this project can be found below.

Files