Stocker is a python based application that allows the user to track crypto prices in realtime. Market prices are grabbed using the Coinbase API. Various price target alerts, based on time elapsed or based on percent change, can be set that help the user never miss a price target. Aside from a built in auditory and visual warning in the GUI, this application utilizes the AWS simple notification service for optional phone text alerts as well.
This python application monitors the network for TCP port scanners and alerts based on the specified port range and the fan-out rate. There are two threads at work here, a sniffer thread that logs new connections to a table, and a table processing thread that checks for any anomalies. If an anomaly is detected, an alert is sent to the console.
Sniffer: This part of the program captures packets and unpacks the Ethernet and IP headers. It then checks the protocol for TCP before further unpacking. The TCP header bytes are parsed and we grab the source and destination IP addresses, destination port, and the ACK/SYN flags. The sniffer records the data and a timestamp of any non-existing connections in a hash table.
Table Processor: This thread constantly iterates over the table. It checks and removes any expired entries based on the contact life value (5 minutes). Additionally, a separate algorithm calculates the fan-out rate for each existing connection. It prompts a warning and flags the relative connection as a port scanner in the console if the limit has been exceeded.
This is a Caesar cipher breaker written in python. It uses a frequency attack approach to decipher the message. It works by first finding the most frequent letter in the provided ciphertext. It then utilizes an array containing a set of letters arranged in order of their occurrence found in the English language (though the letter set would be very similar to many of the other common languages, this one is focused on an English result). In a loop, the first (being most common in order) item of the letter set is popped and used to check against the most frequent character in the cipher. By using the ASCII table we can calculate the ASCII value difference between these two characters. Given the difference, the cipher characters are all shifted by this value to provide a possible result. The loop continues checking the next best possibility until the user confirms the result correct.
This is a PowerShell script that monitors certain registry keys, startup folders, and the task scheduler by printing a log of any new changes every five minutes. This program can help system administrators stay up to date on any system changes. It works by first creating a base snapshot of the system. After five minutes, it creates a current reference snapshot of the system and compares that with the base to determine if any changes have been made. Findings are logged and the current snapshot now becomes the new base snapshot for the next iteration. Aside from noting any changes in scheduled tasks, this program examines the HKCU/HKLM/HKCR startup keys, "Shell Folders","User Shell Folders","Run", and "RunOnce" in the HKLM/HKCU directories. Anything in these directories will run at system startup so we want to monitor these locations. Additionally, it is possible to subvert .exe/.bat/.com/.bat/.hta/.pif files by modifying the corresponding shell key and prepending with a malicious program executable, resulting in said malicious program being silently executed anytime a program with the applicable extension is ran. We also monitor for any change to the explorer.exe path, to avoid subversion of the explorer executable. Lastly, we also want to keep an eye on the Active-X component entries; these specify programs that are ran before explorer.exe is executed at startup.
Monitoring a network for newly up IP addresses and opened ports can be done using this script. This Bash script initially logs all hosts and ports currently up at start, and then watches for any new changes every five minutes. New hosts or open ports are logged for the user to review.
This application takes a CIDR (Classless Inter-Domain Routing) IPv4 address as input and prints the subnet along with a list of all possible host IP addresses (not including 0 and 255).
This program takes an assembly file and its format (ELF/WIN/WIN32) as inputs and generates a shellcode sequence. It first uses the NASM assembler to create an object file. Then based on the resulting file format (.o or .obj) we utilize objdump to disassemble the object file itself. Focusing on the .text portion of the disassembled code, we can parse out the opcodes to create the shellcode sequence. The shellcode can then be used as payload for code injection attacks.
This program is written in C++ and it utilizes a prefix tree data structure to store a set of words provided by the user in order to optimize prefix lookup, as well as the word search (complexity of a prefix tree search is just based on the length of the words inserted [M], O(M)). Each path in the tree represents a word and each word is terminated with a null node that contains a boolean flag true value to mark an existing word. Pointers are used to represent each of the nodes. Adding a new word to the tree is done by recursively traversing the tree and checking if the letter already exists. If not, we add a new node for the given letter in the word and move to the next iteration in the recursion until the last letter is reached.
Written in C, this is a simple, TCP based, FTP client/server program. Once started, the server continually listens for a connection from a client on a desired port. Once the connection is established with the client, the filename and the file contents are sent to the server. The client can continue to send files or terminate the connection.
Client: The client establishes a connection with the server using a stream socket to maintain easy reliability. It calculates the given file name length and the file size, converts these values to a network to host type and sends them to the server. The return code is checked for each write to server. Following this the file contents are pushed to a buffer and then sent to the server. The client then listens for an ACK message from the server to confirm everything was sent correctly. The user can then either send another file, or terminate the connection with a command ("DONE").
Server: The server initializes by binding its address to a socket descriptor and then proceeds to listen for a connection on this socket. Upon a client connection, the server waits for the client to send the file information (byte count for file name and file size) and then listens for the incoming data stream. The data is pushed to a buffer and once all the bytes are read, this is used to generate the sent file on the server end. At completion, the server sends an acknowledgement to the client. It then returns to listening for new connections.
For context, DCS is a combat aircraft simulator where instances of the game rely on what are called "mission files" which have a proprietary syntax, but they do share similarities with XML. The game allows players to design custom scenarios, or missions, however, it is a time-consuming process and there is no possibility for collaboration with other players to make the process easier. The purpose of this program is to introduce the ability for multiple people to work on the same mission by taking multiple mission files and combining them into one. Although crude and with certain faults, such as not supporting combination of all the parts of the game's mission editor functions, this does address the issue of time; unit placement on the map is a time-consuming process. The program deconstructs two mission files at a time. Once the mission files are parsed and necessary data is extracted, a new mission file is created that combines all the units in lists and ultimately provides a combined mission. Running it over again, with the newly generated mission file and an additional mission file, would mean virtually no limit to collaborator count.
This is a conversational chat bot that piggybacks off of GPT-3 artificial intelligence to liven up the chat. The chat bot only responds to discord server members that subscribe to the conversation in chat. This bot has several other functionalities aside from opting in and out of conversation, it also allows for a chat member to adjust the "intelligence" model level of the AI, meaning the intricacy of the response can be adjusted with a single command. Aside from that, users can request the AI to generate for them a horror story given a few words for context, they can do a quick wikipedia term search, list current chat members, pause/restart/terminate bot chat session, conduct an image search, and lastly a user can invoke a AI/human-to-AI chat session where two AI instances are present in the session.
This is a port scanner written in Java. Its functionalities consist of host discovery, single and multiple host port scanning, and a few extra functions of convenience, such as saving the online host list to a file, and loading scan host range from a file. The program does allow a user to adjust the network address. The AUTO scan function gives the user the ability to select the port scan range, timeout, the scan type (in order, or randomized), as well as the option to show/hide closed ports in scan result to declutter.