![]() |
daten über eth0 senden
hey leute brauch dringend hilfe komme nicht mehr weiter :wall:
wir wollen pakete die wir mit ethereal gesnifft haben nun wieder versenden und brauchen dazu ein programm oder tool leider sind unsere ansätze nicht die besten: :coder:
Code:
wir stecken ganz gewaltig in der klemme und finden keine möglichkeit dies zu bewerkstelligen da das ganze auf osi-schicht 2 ablaufen muss
#include <iostream>
#include <cstdio> #include <pcap.h> #include <fstream> using namespace std; int main(int argc, char *argv[]) { char filename[128]; ifstream file; char zeile[1024]; cout << "Datei angeben: " << flush; cin.getline(filename, 127); cout << filename << endl; const unsigned char *pkt = (const unsigned char*)*filename; unsigned int pkt_length = 6; pcap_t *my_capture_descriptor; char *errbuf="fehler"; my_capture_descriptor = pcap_open_live("eth0",2000,1,1000,errbuf); if(pcap_sendpacket(my_capture_descriptor, pkt, pkt_length) < 0) return 1; return 0; } also nun zu euch vlt hat einer von euch eine idee ein programm tipps zu anderen programmen oder unseren und kann uns so weiter helfen :coder2: mfg peter |
Re: daten über eth0 senden
Zitat:
eure Sprache ist C++ und das BS linux - damit solltet ihr euch an ein "zuständiges" Forum wenden, hier wäre es reiner Zufall, wenn sich jemand damit auch auskennt. Gruss Reinhard |
Re: daten über eth0 senden
Zitat:
![]() ne da muss ich meinem vorredner recht geben. ![]() gruß reli |
Re: daten über eth0 senden
dort haben wir auch schon nachgefragt und die kommen auch nicht viel weiter
|
Re: daten über eth0 senden
was genau funktioniert denn nicht an dem sample?
|
Re: daten über eth0 senden
Hi,
mal ein zwei Anmerkungen: Erstmal ist der Fehlerpuffer echt mal individuell gewählt. Man sollte hier keinen festen String übergeben, sondern die Adresse eines Speicherbereichs, der einfach groß genug für einen möglichen Fehler ist. Die für C/C++ übliche Form (die auch hier Anwendung findet) ist das deklarieren eines Char-Arrays, dessen Länge durch eine Konstante (max. Fehlerlänge) festgelegt wird. An sich ist die Funktion pcap_open_live auch mit einem Rückgabewert versehen, diesen solltest Du auch auswerten. Die Doku sagt, dass ein null hier für den Fehlerfall steht und selbst ein erfolgreicher Abschluss kann eine Fehlermeldung mit sich bringen (dies sollte man also ggf. auch prüfen). Vielleicht solltet ihr auch erstmal schauen, ob überhaupt eth0 für das Capturing in Frage kommt. Versucht mal erstmal alle möglichen Karten auszugeben, müsste ungefährt (ungetestet) so aussehen:
Code:
Wie gesagt, ungetestet (mache zu selten was mit C, kann also sein dass die eine oder andere Indirektion hier falsch ist). Da solltest Du jedenfalls erstmal schauen, ob es überhaupt ein eth0 Device gibt, sonst ist das Device nicht für die Bibliothek geeignet.
#include <iostream>
#include <cstdio> #include <pcap.h> #include <fstream> using namespace std; int main(int argc, char* argv[]) { char errbuf[PCAP_ERRBUF_SIZE]; pcap_if_t **devs; if (pcap_findalldevs(devs, errbuf) != 0) { cout << "Fehler: \n" << errbuf << "\n"; } else { pcap_if_t *dev = devs[0]; cout << "Gefundene Devices: \n"; while ((*dev) != 0) { cout << dev->name; dev = dev->next; } } } Gruß Der Unwissende PS: Herzlich Willkommen in der DP :dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz