Portscanner

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Portscanner

Beitrag von Kyoko12 »

Hi

Ich hab heute mal nen Portscanner geschreiben, und wollte jetzt von euch wissen, was ihr davon haltet.

Hier der Code:

Code: Alles auswählen

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Luasiv PortScan v0.01;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;(C) 2006 by Maximilian Mayerl;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;Variablen
port = 0
start_port = 0
end_port = 0
start_port_str$ = ""
end_port_str$ = ""
ip_val = 0
ip_str$ = ""
host$ = ""
connection_id = 0
event.l = 0
current_text$ = ""


;;;Inits
If InitNetwork()
  ;;;
Else
  MessageRequester("Fehler", "Netzwerk konnte nicht initialisiert werden!")
  End
EndIf
  

;;;User-Interface
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_SystemMenu, "Luasiv PortScan v0.01")
  ;;;
Else
  MessageRequester("Fehler", "Fenster konnte nicht inizialisiert werden!")
  End
EndIf

If CreateGadgetList(WindowID(0))
  TextGadget(0, 20, 20, 60, 20, "Ziel-IP:")
  StringGadget(1, 90, 18, 100, 20, "")
  TextGadget(2, 20, 50, 60, 20, "Start-Port:")
  StringGadget(3, 90, 46, 100, 20, "")
  TextGadget(4, 20, 80, 60, 20, "End-Port:")
  StringGadget(5, 90, 74, 100, 20, "")
  StringGadget(6, 20, 110, 260, 160, "")
  ButtonGadget(7, 210,18, 80, 35, "Scan")
  ButtonGadget(8, 210, 59, 80, 35, "Stop")
Else
  MessageRequester("Fehler", "User-Interfce konnte nicht initialisiert werden!")
  End
EndIf

If CreateStatusBar(0, WindowID(0))
  AddStatusBarField(200)
  StatusBarText(0, 0, "Fertig")
Else
  MessageRequester("Fehler", "Statusleiste konnte nicht initialisiert werden!")
  End
EndIf


;;;Hauptschleife
Repeat
  event = WaitWindowEvent()
  If event = #PB_Event_Gadget
    Select EventGadgetID()
      Case 0
        ;;;
      Case 1
        ;;;
      Case 2
        ;;;
      Case 3
        ;;;
      Case 4
        ;;;
      Case 5
        ;;;
      Case 6
        ;;;
      Case 7
        ip_str$ = GetGadgetText(1)
        start_port_str$ = GetGadgetText(3)
        end_port_str$ = GetGadgetText(5)
        SetGadgetText(6, "")
        start_port = Val(start_port_str$)
        end_port = Val(end_port_str$)
        end_port = end_port + 1
        port = start_port
        Repeat
          current_text$ = GetGadgetText(6)
          StatusBarText(0, 0, "Scanne Port: "+ Str(port))
          event = WindowEvent()
          If event = #PB_Event_Gadget
            Select EventGadgetID()
              Case 8
                Break 1
            EndSelect 
          EndIf 
          If OpenNetworkConnection(ip_str$, port)
            SetGadgetText(6, current_text$ + "Port " + Str(port) + " offen!" + Chr(10))
          Else
            ;;;
          EndIf
          port = port + 1
        Until port = end_port
        StatusBarText(0, 0, "Fertig")
    EndSelect
  EndIf
Until WindowEvent() = #PB_Event_CloseWindow
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Eventschleife in der Eventschleife und 2x Select EventGadgetID() kann nicht
vernünftig funktionieren :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

@Kyoko12:
Für Portscanner gab es schon einmal einen riesigen Thread.
Wenn Feedback erwünscht ist, dann ist das hier das falsche Forum.
Hab das Teil jetzt aber noch nicht ausprobiert.

@ts-soft: So wie er das hier benutzt, funktioniert das schon, ist nur
ziemlich ungewöhnlich.
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Also, hat bis jetzt keine Probleme gemacht, ausser dass die Benutzeroberfläche während eines Scans sehr langsam zB auf das Drücken es Stop-Buttons reagiert. Das kommt vom 2. Select EventGadgetID().
Aber funktionieren tut alles.

mfg,
Maximilian Mayerl
Benutzeravatar
mk-soft
Beiträge: 3856
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Nicht schlecht. Ist eine wenig langsam, aber das liegt daran das OpenNetworkConnection() der Timeout so lange eingestellt ist.
Das Programm konnte nicht Beendet werden wegen doppelte Abfrage von Windowsevent(). Nach finden eines Port´s sollte der Port´s wieder geschlossen werden. Dieses Erweitert.

Code: Alles auswählen

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Luasiv PortScan v0.01;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;(C) 2006 by Maximilian Mayerl;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;Variablen
port = 0
start_port = 0
end_port = 0
start_port_str$ = ""
end_port_str$ = ""
ip_val = 0
ip_str$ = ""
host$ = ""
connection_id = 0
event.l = 0
current_text$ = ""


;;;Inits
If InitNetwork()
  ;;;
Else
  MessageRequester("Fehler", "Netzwerk konnte nicht initialisiert werden!")
  End
EndIf
 

;;;User-Interface
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_SystemMenu, "Luasiv PortScan v0.01")
  ;;;
Else
  MessageRequester("Fehler", "Fenster konnte nicht inizialisiert werden!")
  End
EndIf

If CreateGadgetList(WindowID(0))
  TextGadget(0, 20, 20, 60, 20, "Ziel-IP:")
  StringGadget(1, 90, 18, 100, 20, "")
  TextGadget(2, 20, 50, 60, 20, "Start-Port:")
  StringGadget(3, 90, 46, 100, 20, "")
  TextGadget(4, 20, 80, 60, 20, "End-Port:")
  StringGadget(5, 90, 74, 100, 20, "")
  StringGadget(6, 20, 110, 260, 160, "")
  ButtonGadget(7, 210,18, 80, 35, "Scan")
  ButtonGadget(8, 210, 59, 80, 35, "Stop")
Else
  MessageRequester("Fehler", "User-Interfce konnte nicht initialisiert werden!")
  End
EndIf

If CreateStatusBar(0, WindowID(0))
  AddStatusBarField(200)
  StatusBarText(0, 0, "Fertig")
Else
  MessageRequester("Fehler", "Statusleiste konnte nicht initialisiert werden!")
  End
EndIf

Exit = 0

;;;Hauptschleife
Repeat
  event = WaitWindowEvent()
  If event = #PB_Event_Gadget
    Select EventGadgetID()
      Case 0
        ;;;
      Case 1
        ;;;
      Case 2
        ;;;
      Case 3
        ;;;
      Case 4
        ;;;
      Case 5
        ;;;
      Case 6
        ;;;
      Case 7
        ip_str$ = GetGadgetText(1)
        start_port_str$ = GetGadgetText(3)
        end_port_str$ = GetGadgetText(5)
        SetGadgetText(6, "")
        start_port = Val(start_port_str$)
        end_port = Val(end_port_str$)
        end_port = end_port + 1
        port = start_port
        Repeat
          current_text$ = GetGadgetText(6)
          StatusBarText(0, 0, "Scanne Port: "+ Str(port))
          event = WindowEvent()
          If event = #PB_Event_Gadget
            Select EventGadgetID()
              Case 8
                Break 1
            EndSelect
          EndIf
          Connection = OpenNetworkConnection(ip_str$, port)
          If Connection <> 0
            SetGadgetText(6, current_text$ + "Port " + Str(port) + " offen!" + Chr(10))
            CloseNetworkConnection(Connection)
            Connection = 0
          Else
            ;;;
          EndIf
          port = port + 1
        Until port = end_port
        StatusBarText(0, 0, "Fertig")
    EndSelect
  ElseIf event = #PB_Event_CloseWindow
    Exit = 1
  EndIf
Until Exit
 
FF :allright:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Danke für die Tipps!
Kann ich denn den Timeout von OpenNetworkConnection() irgnedwie verstellen??

mfg,
Maximilian Mayerl
Hallo, ich bin eine Sig...(ENDE DER DEMOVERSION, BITTE VOLLVERSION KAUFEN!)

PB 3.92
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> @ts-soft: So wie er das hier benutzt, funktioniert das schon
Programme die nur über den Taskmanager beendet werden können, empfinde ich als nicht funktional. Aber egal :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Das nur über den Task-Manager beenden kam wegen dem 2. WindowEvent.

Hab jetzt am Ende einfach stehen:

Until event = #PB_Event_CloseWindow

Da event ja schon oben durch ein WaitWindowEvent() definiert wurde, funktioniert das wunderbar! Aber mit den Select...Case und Repeat...Until Schleifen hatte das nix zu tun :wink:

mfg,
Maximilian Mayerl
Hallo, ich bin eine Sig...(ENDE DER DEMOVERSION, BITTE VOLLVERSION KAUFEN!)

PB 3.92
Benutzeravatar
mk-soft
Beiträge: 3856
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

@ts-soft
Die Macke habe ich gefunden und beseitig.

Für die Timeout einstellung habe noch nichts in der MSDN gefunden.

Zum ausprobieren ist das Beispiel so Ok. Aber ich selber nehme zum Testen von Netzwerken lieber ein Fertiges Programm "IPSCAN.EXE"

http://ipscan.sourceforge.net/

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Ja, das ist mir schon klar, zum Scannen von Netzwerken nehmen ich LanGuard und Retina! Ich wollt eben nur mal nen Portscanner programmieren, mir war eben langweiligm udn wenn mir langweilig ist mach ich immer Netzwerk-Sachen in PB :wink:

Meistens ein Remote-Controll Programm oder so was ähnliches 8)

mfg,
Maximilia Mayerl
Hallo, ich bin eine Sig...(ENDE DER DEMOVERSION, BITTE VOLLVERSION KAUFEN!)

PB 3.92
Antworten