| Network · LAN, WAN, Firewalls Alle Fragen rund um das große, kleine Internet finden hier eine Antwort. LANs, WANs, Router, Switches, Bridges, Verkabelung... |
Diskussion: Ein paar dumme Fragen zum Thema Sniffing :S im Forum Network · LAN, WAN, Firewalls, in der Kategorie Web, Network & Multimedia Palace; Hallo zusammen ich habe jetzt mit libpcap einen kleinen Sniffer geschrieben (der Code funktioniert nicht richtig :S (gibt auch ne ...
![]() |
| | #1 (permalink) |
| Registriert seit: 25.11.09 ![]() Likes: 0 | Hallo zusammen ich habe jetzt mit libpcap einen kleinen Sniffer geschrieben (der Code funktioniert nicht richtig :S (gibt auch ne Warnmeldung aus)): PHP-Code: PHP-Code: also: wenn ich jetzt den sniffer starte passiert nichts. ich denke das liegt daran dass ich ethernet Packets sniffen möchte obwohl mein Netbook per W_Lan angeschlossen ist lige ich da richtig wenn ich denke dass das unter anderem desshalb nicht funktioniert? meine zweite Frage ist was die warnung versucht mir zu sagen: Code: test.c: In Funktion »main«: test.c:27: Warnung: Zuweisung streicht Qualifizierer von Zeiger-Zieltyp so das wars auch schon... Hoffe auf Hilfe auch wenns dumme Fragen sind ![]() mfg st4cky |
| | |
| | #2 (permalink) |
| Moderator ![]() | Also erstmal was Grundsätzliches. Ich würde den Code so aufbauen: Code: if((dev = pcap_lookupdev(err)) == NULL)
error("pcap_lookupdev()");
else {
if((handle = pcap_open_live(dev, BUFSIZ, 1, 10000, err)) == NULL)
error("pcap_open_live()");
else {
for(i = 0; i < 10; i++) {
pack = pcap_next(handle,&head);
printf("GOT A PACKET [SIZE: %i]",head.len);
dump(pack,head.len);
}
pcap_close(handle);
}
} Was sagt denn Dein Debugger? Die Fehlermeldung besagt, dass Du z.B. eine direkte Zuweisung auf einen generischen Zeiger machst - also z.B. einen Zeiger auf einen char direkt mit einem char belegst. Gib mal die Zeile, bei der der Fehler kommt - leider hat die von Dir gepostete main ja nicht mal 27 Zeilen. Nachtrag: Ach so...für die genutzte Bibliothek ist es egal, was für ein Netzwerkadapter es ist - fürs System ist es einfach ein Ethernetadapter, das physikalisches Übertragungsmedium ist absolut uninteressant.
__________________ Geändert von sTEk (06.12.09 um 14:35 Uhr) |
| | |
| HaBOT | |
| |
| | #3 (permalink) | |
| Guest Likes: | Zitat:
Unter Windows habe ich an einem Notebook hier auch noch weitere merkwürdige Sachen festgestellt: Über meinen WLAN Treiber hier, capture ich z.B. keine Pakete über den prom. mode. Wenn ich nicht über prom. mode sniffe, bekomme ich merkwürdiger weise die Menge der Pakete aus dem prom. mode. | |
|
| | #4 (permalink) |
| Themenstarter Registriert seit: 25.11.09 ![]() Likes: 0 | PHP-Code: ![]() Also die Warnung heißt dass ich dem Zeiger nicht die Adresse von einem Wert übergeben habe sondern den Wert selber? Warum muss ich den da immer ein else{} machen das Programm wird doch beendet wenn ein Fehler auftaucht oder? Und es ist vollkommen egal ob ich per W-Lan, Ethernet, Token Ring oder was auch immer an das Netzwerk angebunden es wird einfach alles eingefangen? Vielen Dank für die Hilfe !!! PS: hier nochmal der Header: HTML-Code: #include <stdio.h> ////////////////////////////////////////////////////////////////////////////////// //prints a string on stderr and klls the programm: void error(const char *str) { fprintf(stderr,"%s",str); exit(EXIT_FAILURE); } ///////////////////////////////////////////////////////////////////////////////// //dumps receved datagramms: void dump(const char *pack, int packsize) { int i, j = 0; for(i = 0; i < packsize; i++) { for(j = 0; j <= 16 ; j++) { printf("%x",pack[i*16+j]); } for(j = 0; j <= 16 ; j++) { if((pack[i*16+j] >= 33) && (pack[i*16+j] <= 126)) { printf("%c",pack[i*16 + j]); } else { printf("."); } } printf("\n"); } } ///////////////////////////////////////////////////////////////////////////////////// |
| | |
| | #5 (permalink) |
| Guest Likes: | probierst Du mal pcap_next_ex anstatt pcap_next ? die Singatur ist im Übringen: pcap_next_ex(Handle, header , rdata); |
|
| | #6 (permalink) |
| Themenstarter Registriert seit: 25.11.09 ![]() Likes: 0 | ich habe es jetzt mit pcap_loop() gemacht. Es kommen keine Fehler aber wenn ich eine Seite aufrufe (mit dem Browser) werden auch keine Packts gedumpt woran kann das liegen? hier der Source: PHP-Code: |
| | |
| | #7 (permalink) |
| Guest Likes: | hast Du denn nun pcap_next_ex probiert ? die callback Implementierung ist offenbar buggy, so meine Erfahrung. |
|
| | #8 (permalink) |
| Themenstarter Registriert seit: 25.11.09 ![]() Likes: 0 | genau so wars bei pcap_next() auch... aber ich werde es mal mit pcap_next_ex() schreiben ![]() mfg st4cky |
| | |
| | #9 (permalink) |
| Themenstarter Registriert seit: 25.11.09 ![]() Likes: 0 | sry für doppelpost aber wie zur hölle kann ich hier meinen thread editieren? @topic ich denke nicht das es an der Callback funktion liegt denn ich hatte mit der pcap_next() funktion das gleiche Problem wie mit pcap_loop :S (ich denke ich war einfach nur 2 mahl zu blöd für die selbe sache -.-) mfg st4cky |
| | |
| | #10 (permalink) |
| Guest Likes: | bei der pcap_open_live implementierung zum schluss hast du den timeout auf 0 gesetzt, da können keine Pakete kommen ! |
|
| | #11 (permalink) |
| Moderator ![]() | Den Button dazu findest Du am unteren Ende des Beitrags links neben dem Zitat-Button. |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |