Hallo,
ich hab grad die Idee gehabt, einen Portscanner mit GUI zu basteln. Für die GUI hab ich FLTK und FLUID genommen. Als ich dann alles soweit hatte, wollte ich, dass während dem Scanvorgang Daten in einem Output-Multiline-Fenster ausgegeben werden:
Die Funktion client_init() und close() sind von mir selbst geschriebene Funktionen.
Wenn ich jetzt einen Scanvorgang starte, dann werden mir die Daten nur in der Shell angezeigt, nicht aber in der Output-Box. Erst wenn der Scanvorgang beendet ist sehe ich die Daten auch in der Outputbox und die Prgressbar ist voll. Ich möchte die Daten und den Fortschritt aber schon während dem scanvorgang sehen, nicht erst nachher, wie mach ich das?
Gruß
cesupa
ich hab grad die Idee gehabt, einen Portscanner mit GUI zu basteln. Für die GUI hab ich FLTK und FLUID genommen. Als ich dann alles soweit hatte, wollte ich, dass während dem Scanvorgang Daten in einem Output-Multiline-Fenster ausgegeben werden:
Code:
SOCKADDR_IN addr;
SOCKET s;
int p1,p2,ip1,ip2;
char ipp[256];
string output;
char port[256];
p1=atoi(input_port1->value()); //Eingegebene Werte einlesen
p2=atoi(input_port2->value());
ip1=ntohl(inet_addr(input_ip1->value()));
ip2=ntohl(inet_addr(input_ip2->value()));
cout<<"Port anfang: "<<p1<<" Port ende: "<<p2<<endl;
prbar1->minimum(0); //Progressbar konfigurieren
prbar1->maximum(100);
for(int z=ip1;z<=ip2;++z) //IPZählschleife
{
for(int i=p1;i<=p2;++i) //Ports werden hochgezählt
{
IntToString(i,port); //Port wird in zeichenkette umgewandelt
addr.sin_addr.s_addr=htonl(z);
cout<<inet_ntoa(addr.sin_addr)<<endl; //ausgabe der derzeitigen IP
strcpy(ipp,inet_ntoa(addr.sin_addr)); //IP in char variable kopieren
s=client_init(i,htonl(z),AF_INET,SOCK_STREAM,0,false); //Mit IP Adresse und Port verbinden
if(s==1) //Falls Fehlermeldung(Port geschlossen)
{
output=output + "Port geschlossen: " + port + " bei " + ipp + "\n"; //String Variable wird mit Daten gefüttert
}
else //Port geöffnet
{
output=output + "Port geöffnet: " + port + " bei " + ipp + "\n";
}
close(s); //socket schließen und WSA bereinigen für nächsten Scan
prbar1->value((p2/i)*100); //Progressbar- fortschritt anzeiegn
out1->value(output.c_str()); /7Daten ausgeben
}
}
Die Funktion client_init() und close() sind von mir selbst geschriebene Funktionen.
Wenn ich jetzt einen Scanvorgang starte, dann werden mir die Daten nur in der Shell angezeigt, nicht aber in der Output-Box. Erst wenn der Scanvorgang beendet ist sehe ich die Daten auch in der Outputbox und die Prgressbar ist voll. Ich möchte die Daten und den Fortschritt aber schon während dem scanvorgang sehen, nicht erst nachher, wie mach ich das?
Gruß
cesupa