Projects

Ryukendo

Wordlist generator • Python

A wordlist generator that leverages social connections to produce candidate passwords. Uses cartesian products, permutations & combinations and probability distributions to generate, sort and rank possible passwords.

Ngzl

IRC C2 prototype • Python

A prototype botnet script using the IRC protocol as command-and-control. Implements a client–server model with custom sockets for receiving shell commands and relaying output through an IRC server.

WhatsApp Chat Summariser

Chat summarisation pipeline • Node.js

A chat summary service that pulls messages, sends them to a local LLM, and returns notifications via a publish–subscribe system. Built using Axios, whatsapp-web.js, NTFY, Ollama, and Deepseek-r1:7b.

Logo Interpreter

Interpreter • TypeScript

A minimalistic Microsoft Logo interpreter featuring a custom tokenizer, recursive parser, AST generator, and an HTML5 Canvas drawing engine with angle-based turtle movement.

Moodle Scraper

Web scraper • Python

A proof-of-concept data extraction tool for retrieving public profile details from a private Moodle instance. Handles login token authentication and stores the extracted data in a local SQLite database.

Hashing Implementations

Data structures • C

Implementations of basic hashing concepts and collision resolution techniques, including chaining using linked lists, linear probing, and quadratic probing, in memory-safe C.

Bus Reservation System

Terminal application • C

A terminal-based bus reservation system written in C, featuring interactive seat selection and formatted CLI layouts.

Dots and Boxes

Terminal game • Python

A command-line implementation of the classic Dots and Boxes board game, focusing on custom grid and connection logic.

Drunken Bishop

Key visualizer • C

An implementation of the Drunken Bishop algorithm used by OpenSSH to generate ASCII art representations of cryptographic keys.

Tic Tac Toe

Terminal game • C

A command-line Tic Tac Toe game written in C, featuring a board state managed using a flattened 2D array.