La création d'un fichier pcap
J'ai besoin d'enregistrer des paquets UDP vers un fichier et que vous souhaitez utiliser le ppce format de réutiliser les différents outils disponibles (wireshark, tcpdump, ...).
Il y a quelques informations à ce fil mais je ne trouve pas comment écrire le fichier global de l'en-tête 'struct pcap_file_header'.
pcap_t* pd = pcap_open_dead(DLT_RAW, 65535);
pcap_dumper_t* pdumper = pcap_dump_open(pd, filename);
struct pcap_file_header file_hdr;
file_hdr.magic_number = 0xa1b2c3d4;
file_hdr.version_major = 2;
file_hdr.version_minor = 4;
file_hdr.thiszone = 0;
file_hdr.sigfigs = 0;
file_hdr.snaplen = 65535;
file_hdr.linktype = 1;
//How do I write file_hdr to m_pdumper?
while( (len = recvmsg(sd, &msg_hdr, 0)) > 0 )
pcap_dump((u_char*)m_pdumper, &m_pcap_pkthdr, (const u_char*)&data);
Comment dois-je écrire le fichier global de l'en-tête?
Si il n'y a pas ppce fonction est disponible, comment puis-je récupérer le descripteur de fichier pour insérer l'en-tête à l'aide de write()?
OriginalL'auteur Robert Kubrick | 2012-04-11
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas avoir besoin d'écrire cet en-tête,
pcap_open_dead
le faire pour vous. Vous avez seulement besoin de remplir et d'écriture de l'en-tête vous-même si vous voulez écrire le fichier directement au lieu d'utiliserpcap_dump
et amis. Il y a un exemple ici d'un banal programme d'écrire un fichier pcap avec ces fonctions.réponse originale à cette question, concernant l'écriture du fichier directement:
Je ne me souviens pas exactement comment cela fonctionne, mais j'ai écrit un patch pour
redir
il y a un moment qui permettrait d'écrire ppce de fichiers, vous pourriez être en mesure de l'utiliser comme un exemple.Vous pouvez trouver qu'il attache à l' ce bogue debian. (bug de lien fixe.)
Certains de il est pour simuler l'ethernet et les en-têtes IP, et peuvent ne pas être applicables que vous utilisez
pcap_dump_open
etpcap_dump
où, comme le patch ci-dessus écrit lepcap
fichier sans l'aide de toutes les bibliothèques, mais je vais laisser cette ici de toute façon dans le cas où il aide.Mise à jour ci-dessus. J'ai quitté la réponse originale à cette question car même avec
pcap_dump
vous aurez toujours besoin d'un faux en-tête IP, et le patch ci-dessus peut vous aider.Vrai, pas besoin d'écrire le fichier global de l'en-tête, j'ai juste vérifié.
utilisation pcap_fileno() pour obtenir un descripteur de fichier à partir d'un pcap_t*. Vous pouvez cependant appeler pcap_dump() directement pour écrire des paquets de données à un pcap_t
OriginalL'auteur je4d
Si vous êtes intéressé par UDP et TCP uniquement, vous devez utiliser
DLT_EN10MB
au lieu deDLT_RAW
( cf pcap_open_dead pour simuler complète des paquets UDP de capture ).Il est beaucoup mieux que lors de l'édition dans WireShak.
OriginalL'auteur poukill