├── Cargo.toml ├── README.md └── src └── main.rs /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "RustCrackMaster" 3 | version = "1.0.0" 4 | authors = ["Your Name "] 5 | edition = "2021" 6 | description = "Educational CrackMe project in Rust for reverse engineering practice." 7 | license = "MIT" 8 | 9 | [dependencies] 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RustCrackMaster 2 | 3 | RustCrackMaster is an educational CrackMe project written in Rust, designed to enhance skills in reverse engineering, code analysis, and software security. The program verifies user-entered activation passwords using basic obfuscation techniques to complicate code analysis. 4 | 5 | ## Features 6 | 7 | - Simple command-line interface 8 | - Activation password verification with basic obfuscation 9 | - Protection against straightforward code analysis 10 | - Detailed documentation for beginners 11 | 12 | ## Installation 13 | 14 | ### Prerequisites 15 | 16 | - Rust (version 1.50 or above) 17 | - Cargo (comes with Rust) 18 | 19 | ### Steps 20 | 21 | 1. **Clone the repository:** 22 | ```bash 23 | git clone https://github.com/yourusername/RustCrackMaster.git 24 | cd RustCrackMaster 25 | ``` 26 | 27 | 2. **Build the project:** 28 | ```bash 29 | cargo build --release 30 | ``` 31 | 32 | The compiled binary will be located in `target/release/`. 33 | 34 | ## Usage 35 | 36 | Run the program using the following command: 37 | 38 | ```bash 39 | ./target/release/RustCrackMaster 40 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use std::io::{self, Write}; 2 | use std::thread; 3 | use std::time::Duration; 4 | 5 | // Function to obfuscate characters 6 | fn obfuscate(c: char) -> char { 7 | (c as u8 ^ 0x5A) as char 8 | } 9 | 10 | // Function to get the obfuscated correct password 11 | fn get_obfuscated_password() -> String { 12 | let password = "SecurePass123"; 13 | password.chars().map(obfuscate).collect() 14 | } 15 | 16 | // Function to check the password 17 | fn check_password(input: &str) -> bool { 18 | let obfuscated_password = get_obfuscated_password(); 19 | let obfuscated_input: String = input.chars().map(obfuscate).collect(); 20 | obfuscated_input == obfuscated_password 21 | } 22 | 23 | fn main() { 24 | println!("Welcome to RustCrackMaster!"); 25 | print!("Please enter the activation password: "); 26 | io::stdout().flush().unwrap(); 27 | 28 | let mut input = String::new(); 29 | if io::stdin().read_line(&mut input).is_ok() { 30 | let input = input.trim_end(); // Remove trailing newline 31 | 32 | // Small delay to complicate analysis 33 | thread::sleep(Duration::from_millis(500)); 34 | 35 | if check_password(input) { 36 | println!("Congratulations! You have cracked RustCrackMaster."); 37 | } else { 38 | println!("Incorrect password. Please try again."); 39 | } 40 | } else { 41 | println!("Error reading input."); 42 | } 43 | } 44 | --------------------------------------------------------------------------------