My first ever Rust program meant to bruteforce the AES encryption that https://aesencryption.net/ uses. Named "Robloxia" after the 3 billion Roblox puzzles using this stupid website.
https://aesencryption.net/ specifications
It's pretty similar to the PHP code at the bottom of the site. It encrypts/decrypts with AES in CBC mode using the constant IV of 12345678b0z2345n
and pads with PKCS#7. The key is generated without any hashing, it just shortens your password or pads it with null bytes to fit the length of whatever keylength you request it.
- Asks for base64-encoded ciphertext
- Asks for a wordlist to perform a dictionary attack with. I would reccomend ignis-10m for a small attack, and weakpass_3p for a big attack.
- Asks for the keysize. If you don't know, give it
911
and it'll brute 128/192/256.
- In order to eliminate possible keys, the program checks if the plaintext is valid UTF-8. This should always work as a check, but if your plaintext isn't valid UTF-8 for whatever reason then the program won't print out that.
- This definitely isn't as optimized as it only uses 10% of my CPU
- Some wordlists will crash the program due to encoding issues (expects UTF-8)
I believe compilation is as simple as:
git clone https://github.com/corgeman/robloxia.git
cd robloxia
cargo build --release
Inside ./robloxia/target/release should be robloxia.exe, the compiled binary.
If your computer's CPU supports AES-NI, then you can confirm the binary uses those instructions by doing:
Windows:
SET RUSTFLAGS=-Ctarget-feature=+aes,+ssse3
cargo build --release
SET RUSTFLAGS=
Linux:
RUSTFLAGS="-Ctarget-feature=+aes,+ssse3" cargo build --release