Entwickler-Ecke
Netzwerk - Computer auf offene Ports scannen
Pfammi - So 01.11.09 23:21
Titel: Computer auf offene Ports scannen
Sali
Ich würde gerne mal herausfinden auf wievielen PCs (bei mir im Netzwerk) MSN gestartet ist.
Darum habe ich mir überlegt ich könnte doch mit den PCs eine Verbindung eingehen auf dem Port 1863 (Dieser nutzt MSN).
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| using System; using ASOCKETLib;
namespace namespace1 { class Class1 { [STAThread] static void Main(string[] args) { string strHost = "192.168.1."; Tcp objTcp = new Tcp(); SocketConstants objConstants = new SocketConstants(); System.Int32 numPort = 1234; objTcp.Protocol = objConstants.asSOCKET_PROTOCOL_TELNET; for(int x = 30; x< 50; x++) { strHost = "192.168.1." + x; objTcp.Connect( strHost, numPort ); if( objTcp.LastError == 0 && objTcp.ConnectionState == objConstants.asSOCKET_CONNSTATE_CONNECTED ) { Console.WriteLine( strHost ); { objTcp.Disconnect(); } } } string pause; pause = Console.ReadLine(); } } } |
leider ist das alles sehr sehr langsam. Wie kann ich das beschleunigen?
Das selbe Problem habe ich bei meinem IP scanner.
schonmal danke
Moderiert von
Christian S.: Topic aus Off Topic verschoben am So 01.11.2009 um 22:24
Marmelade - Mo 02.11.09 16:19
Hallo Pfammi
Ich habe das selbe Problem auch mit meinem Portscanner. Ich habe mir da überlegt, dass man mehrere Threads generieren müsste die dann immer einen Port scannen.
Das dürfte die Sache beschleunigen. Ich vermute mal das du ein besserer Programmierer bist als ich (mach das nur aus Fun so ab und zu), also dürfte das mir ein bischen Nachdenken kein Problem sein.
PS: Solltest du das so in der Art machen, könntest du mir dann deinen Source-Code schicken? Damit ich verstehen kann wo mein Fehler liegt?
Pfammi - Di 03.11.09 01:17
Hallo Marmelade
Leider muss ich dich endtäuschen... ich habe erst vor drei Wochen mit C# begonnen.
Google unterstützt mich da sehr xD.
Darum hats auch geklappt.
Es is noch sehr billig aufgebaut aber erfüllt vorerst seinen Zweck. Es gehen einfach 100 Fenster auf welche sich nach ein paar Sekunden wieder schliessen. Mit Ausnahme der IPs auf welchen der Port offen ist.
So siehts aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| using System; using ASOCKETLib;
namespace namespace1 { class Class1 { [STAThread] public static void Main(string[] args) { String[] parms = Environment.GetCommandLineArgs(); foreach(string s in parms) { string strHost = "192.168.1."; Tcp objTcp = new Tcp(); SocketConstants objConstants = new SocketConstants(); System.Int32 numPort = 1234; objTcp.Protocol = objConstants.asSOCKET_PROTOCOL_TELNET; strHost = "192.168.1." + s; objTcp.Connect( strHost, numPort ); if( objTcp.LastError == 0 && objTcp.ConnectionState == objConstants.asSOCKET_CONNSTATE_CONNECTED ) { Console.WriteLine( strHost ); string pause; pause = Console.ReadLine(); objTcp.Disconnect(); } } } } } |
Diesem Programm werden nun Parameter übergeben.
Dafür habe ich ne Batch geschrieben...
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| @echo off set cnt=1 :start start port.exe %cnt% if %cnt% EQU 100 goto ende set /a cnt="cnt+1" goto start :ende |
Noch intressant wie schnell man die Prozessorauslastung auf 100% kriegt xD
Pfammi - Di 03.11.09 10:14
Endtäuschend...
das programm funktioniert bei mir unter win 7. unter win xp schiesst es nur Errors.
Woran liegt das?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!