Not that bad of a description i guess.
Genpass-RS is my flagship project that I have been working on since 2023. It was originally written in C and then refactored into the powerful tool that it is today.
The idea came from one bored day at work when I was working at an arcade and had 0 customers. At which point, I’d already completed all my tasks for the day; no repairs, no customers, no restocking– nada. So I pulled out my notebook from my bag and after giving my coworker an elongated spiel about the infinite monkey theorem, I came up with the idea for trying to create a bruteforce generator using the infinite monkey theorem.
Of course, using a random generation for each password was going to be super inefficient, but I was curious to see if I was able to make it– and sure enough with the help of some early AI tools I was able to make it.
only small parts of the project used AI generated code. At the time I was comfortable with AI tooling. Nowadays I reject it all together for the sake of our planet’s survival, and for political and moral implications.
The project was originally written in C, but as time went on; I kind of abandoned the old project. I was relatively new to writing C, so a lot of the code used was rather redundant, buggy or outright just bad. The code base could have been so much more efficiently written, but that was on me.
So after a while, the project was abanoned– until the next year.
At the time I wanted to give other languages a try. I wasn’t a large fan of the way that C’s functional programming style was and writing a project in a language without modern features can be a bit of a pain in the ass, especially as a solo-dev. The thing was was that I didn’t want to abandon the speed of C, and more importantly; I wanted to be able to add more features fast and easily.
I gave it some thought, and I decided that my best course of action forward was to write it in Rust due to its Zero-Cost Abstractions. I’ve experimented a little in Rust, but unlike how I started with Genpass, I didn’t want to use AI for generating any code. Instead, I opted for reading documentation and learning features from the official Rust Book and using my project to solidify the fundamentals.
This project I learned about how Cargo worked and it was an absolute life-saver when it came to finding crates that would help speed up the development process. Of course, it didn’t come without some trial and error, but I eventually got things to work out.
For a period of time, I had liked a lot of features that KeePassXC had in their tool, so I decided to copy some over into genpass-rs. I mostly liked the estimation of password strength that they had using zxcvbn, and the password management feature which made things pretty easy to find. However, I wanted to make something different– I wanted to not just make a regular old password tool; you can just use KeePassXC for that. I wanted to make something more fun, but still useful, which is when I implemented the steganography module for the tool. Luckily, there already was a library written that I could use to implement that feature.
What was missing was that added layer of protection before hand before inserting the bytes into the images, so for a period of time I used another crate to implement that cryptography feature before just handwriting that one feature instead of loading all of that project’s depenedencies.
Now, the project was practically complete, but to this very day I still come up with new ideas for it.
From this project, I gained a lot of insight into how Rust works as a language, and numerous security concepts regarding safe password generation. For Rust, I learned about how the language works:
These became heavily influential in other projects, but more than that what drives me to continue improving the project all together.
In regards to my security journey, development on this project taught me: