Changeset 9813 for 2018/26/PyryS


Ignore:
Timestamp:
2018-06-29 11:58:06 (14 months ago)
Author:
pymasalm
Message:

Finished most code stuff I think

Location:
2018/26/PyryS/HackSim/HackSim
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • 2018/26/PyryS/HackSim/HackSim/HackSim/HackSim/HackSim.cs

    r9793 r9813  
    2828    IntMeter mem_counter; 
    2929    List<Ware> player_software; 
     30    Dictionary<String, Ware> all_software; 
    3031 
    3132    Label info_label = new Label("Hostname: "); 
     
    8384        null_device = new Device(null, "", "", "", new List<Tuple<int, String>> { Tuple.Create(0, "None") }, false); 
    8485        current_device = null_device; 
     86 
    8587        netmap_list = new List<Device>(); 
    86         netmap_list.Add(new Device(device_icon, "Your PC", "10.0.1.54", "ThePasswordIsVeryStronkHere", new List<Tuple<int, String>> { Tuple.Create(22, "SSH"), Tuple.Create(21, "FTP"), Tuple.Create(25, "SMTP"), Tuple.Create(9999, "PSC") }, false, new List<File> { })); 
    87         netmap_list.Add(new Device(device_icon, "CCC FileDrop", "122.34.5.99", "1331337337", new List<Tuple<int, String>> {/* Tuple.Create(22, "SSH"), Tuple.Create(21, "FTP"), Tuple.Create(25, "SMTP") */}, false, new List<File> { new File("FTPBruteForce", "ware", "FTP_Crack") })); 
     88 
     89        netmap_list.Add(new Device(device_icon, "Your PC", "101.0.1.54", "ThePasswordIsVeryStronkHere", new List<Tuple<int, String>> { Tuple.Create(22, "SSH"), Tuple.Create(21, "FTP"), Tuple.Create(25, "SMTP"), Tuple.Create(9999, "PSC") }, false, new List<File> { })); 
     90        netmap_list.Add(new Device(device_icon, "CCC FileDrop", "122.34.5.99", "fourwordsalluppercase", new List<Tuple<int, String>> {/* Tuple.Create(22, "SSH"), Tuple.Create(21, "FTP"), Tuple.Create(25, "SMTP") */}, false, new List<File> { 
     91            new File("FTPBruteForce", "ware", "FTP_Crack"), 
     92            new File("IRC_Log_309533.txt", "text", "<nedbat> [Tritium]: you youngsters and your kidding...\n<nedbat> get off my lawn!\n<[Tritium]> But im not done mowing it....did you forget you paid me to do that ?\n<[Tritium]> is this even your house ? "), 
     93            new File("IRC_Log_058217.txt", "text", "<Apollo> w00t, finally got my comp running again :D\n<Trinexx> dude, you've been gone for two weeks, wtf happened?\n<Apollo> my new processor finally arrived in the mail, so I ripped the old one out and smashed it with a hammer. It was when I put the new one in that I noticed it was missing about 6 pins >:/\n<Apollo> I fucking hate computers"), 
     94            new File("Cache_IP.txt", "text", "122.44.44.5") })); 
     95        netmap_list.Add(new Device(device_icon, "CCC Cache", "122.44.44.5", "youshallNOTpass", new List<Tuple<int, string>> { Tuple.Create(21, "FTP") }, false, new List<File> { new File("SSHDictAttack", "ware", "SSH_Crack") }, false)); 
     96        netmap_list.Add(new Device(device_icon, "J-Market Guest Router", "99.99.27.5", "admin", new List<Tuple<int, string>> { Tuple.Create(80, "HTTP"), Tuple.Create(22, "SSH") }, true, new List<File> { 
     97            new File("Client_List_Cache.log", "text", "101.0.1.54\n89.69.75.2\n55.66.3.47"), 
     98            new File("Note.txt", "text", "This thing is a security risk.\nGet someone to fix it.\n\nMark, The Engineer") }, true, 65)); 
     99        netmap_list.Add(new Device(device_icon, "xXx1337h4x0rxXx5 Minecraft Server", "92.200.6.5", "UCan'tTouchThis", new List<Tuple<int, string>> { Tuple.Create(22, "SSH"), Tuple.Create(21, "FTP") }, false, new List<File> { 
     100            new File("Server.conf", "text", "Passwd=1337PWD\nTitle=My 1337 Server"), 
     101            new File("HTTPTrojan", "ware", "HTTP_Crack"), 
     102            new File("Notes.txt", "text", "Lol I found this sick cracking thing I'm so 1337 now nobody can beatme!") }, true, 999)); 
     103 
     104        netmap_list[0].Admin = true; 
    88105 
    89106        player_software = new List<Ware>(); 
    90         Ware FTP_Crack = new Ware(true, "FTP", "FTPBruteForce", "FTP Brute Force attack complete", "Invalid port", "Security error", 3, 64); 
    91         Ware SSH_Crack = new Ware(false, "SSH", "SSHDictAttack", "SSH Cracking complete", "Invalid port", "Security error", 5, 52); 
    92         Ware SMTP_Crack = new Ware(true, "SMTP", "SMTPOverload", "SMTP Port overloaded", "Invalid port", "Security error", 7, 100); 
     107        all_software = new Dictionary<string, Ware>(); 
     108        all_software.Add("FTP_Crack", new Ware(true, "FTP", "FTPBruteForce", "FTP Brute Force attack complete", "Invalid port", "Security error", 3, 64)); 
     109        all_software.Add("SSH_Crack", new Ware(false, "SSH", "SSHDictAttack", "SSH Cracking complete", "Invalid port", "Security error", 5, 52)); 
     110        all_software.Add("SMTP_Crack", new Ware(true, "SMTP", "SMTPOverload", "SMTP Port overloaded", "Invalid port", "Security error", 7, 100)); 
     111        all_software.Add("HTTP_Crack", new Ware(true, "HTTP", "HTTPTrojan", "HTTP Server compromised", "Invalid port", "Security error", 12, 128)); 
    93112 
    94113 
     
    96115 
    97116        command_list = new List<string>(); 
    98         foreach (Ware i in player_software) 
    99         { 
    100             command_list.Add(i.Name); 
    101         } 
    102117        command_list.Add("cat "); 
    103118        command_list.Add("ls"); 
     
    108123        command_list.Add("disconnect"); 
    109124        command_list.Add("recoverpwd"); 
     125        command_list.Add("scp "); 
    110126 
    111127 
     
    137153        cmd_out.BorderColor = accent_color; 
    138154        cmd_out.TextColor = accent_color; 
     155        cmd_out.SizeMode = TextSizeMode.Wrapped; 
    139156        cmd_out.Color = Color.Black; 
    140157        cmd_out.Width = cmd_line.Width; 
     
    208225    void AutoComplete() 
    209226    { 
     227        foreach (Ware i in player_software) 
     228        { 
     229            if (!command_list.Contains(i.Name + " ")) 
     230            { 
     231                command_list.Add(i.Name + " "); 
     232            } 
     233        } 
    210234        List<String> file_matches = new List<String>(); 
    211235        List<String> matches = new List<String>(); 
     
    254278    } 
    255279 
    256     void ProcessCommands(InputBox cmd_line, Label cmd_out, String cmd="") 
     280    public void ProcessCommands(InputBox cmd_line, Label cmd_out, String cmd="") 
    257281    { 
    258282        /* 
     
    267291        String output = ""; 
    268292 
     293        // Crack firewall 
     294        if (cmd.StartsWith("BypassFirewall")) 
     295        { 
     296            if (Int32.TryParse(cmd.Split(' ')[1], out int asd)) 
     297            { 
     298                int port = Int32.Parse(cmd.Split(' ')[1]); 
     299                if (current_device.Ports.ContainsKey(port)) 
     300                { 
     301                    if (current_device.Ports[port].Item2) 
     302                    { 
     303                        PrintOutput("Firewall disabled"); 
     304                        current_device.Firewall = false; 
     305                    } 
     306                    else 
     307                    { 
     308                        PrintOutput("Port not open"); 
     309                    } 
     310                } 
     311                else 
     312                { 
     313                    PrintOutput("Invalid port"); 
     314                } 
     315            } 
     316            else 
     317            { 
     318                PrintOutput("Invalid port"); 
     319            } 
     320 
     321        } 
     322 
    269323        // Clone a file to your system (always index 0) 
    270         if (cmd.StartsWith("scp")||cmd.StartsWith("copy")) 
    271         { 
     324        if (cmd.StartsWith("scp") || cmd.StartsWith("copy")) 
     325        { 
     326            bool found_file = false; 
    272327            if (current_device.Admin) 
    273328            { 
     
    279334                        if (i.File_Type == "ware") 
    280335                        { 
    281                             // TODO: Implement this 
    282                             //player_software.Add 
    283                         }  
    284                     } 
    285                 } 
     336                            player_software.Add(all_software[i.File_Contents]); 
     337                        } 
     338                        else 
     339                        { 
     340                            netmap_list[0].Files.Add(i); 
     341                        } 
     342                        found_file = true; 
     343                    } 
     344                } 
     345                if (!found_file) 
     346                { 
     347                    PrintOutput("ERRNO2: " + file_name + ": No such file"); 
     348                } 
     349            } 
     350            else 
     351            { 
     352                PrintOutput("Operation not permitted"); 
    286353            } 
    287354        } 
     
    296363        else if (cmd.StartsWith("shutdown")) 
    297364        { 
    298             Exit(); 
     365            PrintOutput("Shutting down. All data from this session will be removed."); 
     366            Timer.SingleShot(1, () => PrintOutput("5")); 
     367            Timer.SingleShot(2, () => PrintOutput("4")); 
     368            Timer.SingleShot(3, () => PrintOutput("3")); 
     369            Timer.SingleShot(4, () => PrintOutput("2")); 
     370            Timer.SingleShot(5, () => PrintOutput("1")); 
     371            Timer.SingleShot(6, () => PrintOutput("0")); 
     372            Timer.SingleShot(7, () => Exit()); 
    299373        } 
    300374 
     
    302376        else if (cmd.StartsWith("cat")) 
    303377        { 
     378            bool file_found = false; 
    304379            if (current_device.Admin) 
    305380            { 
     
    313388                            PrintOutput(i.File_Contents); 
    314389                        } 
    315                     } 
    316                     else 
    317                     { 
    318                         PrintOutput("ERRNO2: " + file_name + ": No such file"); 
    319                     } 
     390                        else 
     391                        { 
     392                            PrintOutput("Cannot read executable file"); 
     393                        } 
     394                        file_found = true; 
     395                    } 
     396                } 
     397                if (!file_found) 
     398                { 
     399                    PrintOutput("ERRNO2: " + file_name + ": No such file"); 
    320400                } 
    321401            } 
     
    324404                PrintOutput("ERRNO1: Permission Denied"); 
    325405            } 
     406        } 
     407 
     408        // Disconnect 
     409        else if (cmd == "exit" || cmd == "disconnect" || cmd == "dc") 
     410        { 
     411            PrintOutput("Disconnected from " + current_device.Addr); 
     412            current_device.tracer.Stop(); 
     413            current_device.tracer_counter.Stop(); 
     414            current_device = null_device; 
    326415        } 
    327416 
     
    342431                if (!current_device.Firewall) 
    343432                { 
     433                    if (!current_device.tracer.Enabled) 
     434                    { 
     435                        current_device.Trace(); 
     436                    } 
    344437                    PrintOutput("Administrator Password: " + current_device.Password); 
    345438                } 
     
    352445 
    353446        // Login admin 
    354         else if (cmd == "su " + current_device.Password) 
    355         { 
    356             current_device.GetAdmin(true); 
     447        else if (cmd.StartsWith("su")) 
     448        { 
     449            if (cmd.Split(' ')[1] == current_device.Password) 
     450            { 
     451                current_device.GetAdmin(true); 
     452                PrintOutput("Logged in as administrator"); 
     453                current_device.tracer.Stop(); 
     454                current_device.tracer_counter.Stop(); 
     455            } 
     456            else 
     457            { 
     458                PrintOutput("Invalid Password"); 
     459            } 
    357460        } 
    358461 
     
    360463        else if (cmd == "ls") 
    361464        { 
    362             foreach(File i in current_device.Files) 
     465            foreach (File i in current_device.Files) 
    363466            { 
    364467                PrintOutput("- " + i.Name); 
     
    376479                if (i.Addr == address) 
    377480                { 
     481                    current_device.tracer.Stop(); 
     482                    current_device.tracer_counter.Stop(); 
    378483                    output = "Connected to " + address; 
    379484                    current_device = i; 
     485                    current_device.IsVisible = true; 
    380486                    is_dev_found = true; 
    381487                    break; 
     
    393499        else 
    394500        { 
     501            bool success = false; 
    395502            foreach (Ware i in player_software) 
    396503            { 
    397504                if (cmd.StartsWith(i.Name)) 
    398505                { 
    399                     if (Int32.TryParse(cmd.Split(' ')[1], out int asd)) 
    400                     { 
    401                         PrintOutput("Running " + i.Name + ". ETA " + i.Speed + "s"); 
    402                         i.Run(Int32.Parse(cmd.Split(' ')[1]), current_device, mem_counter); 
    403                     } 
    404                 } 
     506                    if (cmd.Contains(" ")) 
     507                    { 
     508                        if (Int32.TryParse(cmd.Split(' ')[1], out int asd)) 
     509                        { 
     510                            PrintOutput("Running " + i.Name + ". ETA " + i.Speed + "s"); 
     511                            if (!current_device.tracer.Enabled) 
     512                            { 
     513                                current_device.Trace(); 
     514                            } 
     515                            i.Run(Int32.Parse(cmd.Split(' ')[1]), current_device, mem_counter); 
     516                            success = true; 
     517                        } 
     518                    } 
     519                } 
     520            } 
     521            if (!success) 
     522            { 
     523                PrintOutput("Command not found"); 
    405524            } 
    406525        } 
     
    417536         * Prints text to the output box 
    418537         */ 
    419         txt = System.Text.RegularExpressions.Regex.Replace(txt, @"[^\u0000-\u007F]+", string.Empty); 
    420         cmd_out.Text += (txt); 
     538        /*Array txt_list = txt.Split('\n'); 
     539        List<String> txt_list_fin = new List<string>(); 
     540        foreach (String i in txt_list) 
     541        { 
     542            if (i.Length > cmd_out.Width / cmd_out.Font.CharacterWidth) 
     543            { 
     544                String i2 = i.Insert(Math.Round(cmd_out.Width), "\n"); 
     545                txt_list_fin.Add(i2); 
     546            } 
     547        }*/ 
     548 
     549        cmd_out.Text += (txt/*cmd_out.Font.WrapText(txt, cmd_out.Width, cmd_out.Width)*/); 
    421550        String[] rows = cmd_out.Text.Split('\n'); 
    422551        List<String> row_list = new List<String>(rows); 
     
    428557        foreach (String row in row_list) 
    429558        { 
    430             cmd_out.Text += row + "\n"; 
     559            String row2 = row; 
     560            if (row.Length > Math.Round(cmd_out.Width / cmd_out.Font.CharacterWidth)) 
     561            { 
     562               row2 = row.Insert(((int) cmd_out.Width / (int) cmd_out.Font.CharacterWidth), "\n"); 
     563            } 
     564            if (row2 != "") 
     565            { 
     566                cmd_out.Text += row2 + "\n"; 
     567            } 
    431568        } 
    432569        //StringBuilder text = new StringBuilder(cmd_out.Text); 
     
    459596    public bool Firewall; 
    460597    public bool Admin; 
    461  
    462     public Device(Image device_icon, String title, String address, String password, List<Tuple<int, String>> ports, bool firewall, List<File> files=null, bool isVisible=true) : base(50, 50) 
     598    private int Trace_Time; 
     599    public Timer tracer; 
     600    public Timer tracer_counter; 
     601 
     602    public Device(Image device_icon, String title, String address, String password, List<Tuple<int, String>> ports, bool firewall, List<File> files=null, bool isVisible=true, int trace_time=20) : base(50, 50) 
    463603    { 
    464604        Image = device_icon; 
     
    469609        Firewall = firewall; 
    470610        Admin = false; 
     611        Trace_Time = trace_time; 
     612 
    471613        Ports = new Dictionary<int, Tuple<String, bool>>(); 
    472614        if (files != null) 
     
    481623            Ports.Add(i.Item1, Tuple.Create(i.Item2, false)); 
    482624        } 
     625        IsVisible = isVisible; 
     626        tracer = new Timer(); 
     627        tracer_counter = new Timer(); 
     628    } 
     629 
     630    public void Trace() 
     631    { 
     632        HackSim.PrintOutput("Warning: Trace detected"); 
     633        HackSim.PrintOutput("Trace ETA: " + Trace_Time.ToString()); 
     634        tracer_counter.Start(); 
     635        tracer_counter.Interval = 5; 
     636        tracer_counter.Timeout += (() => HackSim.PrintOutput("Trace: T- " + Math.Round((Trace_Time - tracer.CurrentTime)).ToString() + "s")); 
     637        tracer.Start(); 
     638        tracer.Interval = Trace_Time; 
     639        tracer.Timeout += (() => ShutDown()); 
     640    } 
     641 
     642    private void ShutDown() 
     643    { 
     644        HackSim.PrintOutput("Warning: Trace finished. Initiating emergency shutdown."); 
     645        HackSim.PrintOutput("Shutting down. All data from this session will be removed."); 
     646        Timer.SingleShot(1, () => HackSim.PrintOutput("5")); 
     647        Timer.SingleShot(2, () => HackSim.PrintOutput("4")); 
     648        Timer.SingleShot(3, () => HackSim.PrintOutput("3")); 
     649        Timer.SingleShot(4, () => HackSim.PrintOutput("2")); 
     650        Timer.SingleShot(5, () => HackSim.PrintOutput("1")); 
     651        Timer.SingleShot(6, () => HackSim.PrintOutput("0")); 
     652        Timer.SingleShot(7, () => Game.Exit()); 
    483653    } 
    484654 
     
    583753    public String Name; 
    584754    public String File_Type; 
    585     public List<File> Folder_Contents; 
    586755    public String File_Contents; 
    587756    public File(String name, String file_type, String file_contents=null) 
Note: See TracChangeset for help on using the changeset viewer.