Я некоторое время возился с Wireshark, и мне интересно, может ли кто-нибудь помочь мне. Я записал случайный просмотр с ним, и я сохранил его в файле pcap. Я хотел бы создать C/C++ (я знаю, что многие существуют, но я хочу практиковать), который извлекает каждую информацию из пакетов, например, исходный и целевой IP, используемый порт, данные и т. Д. Моя цель заканчивается в обучении заключается в извлечении изображения или видео Youtube или что-либо из потока (я знаю, мне придется группировать пакеты и сортировать их и т. д.), но это более поздний проект, я думаю. :)Извлечение информации о пакетах с использованием C++
Я использую libpcap (в Linux), и мой код до сих пор может читать пакет офлайн-файла по пакету, и - поскольку я знаю, что это PPP-пакеты в моем случае - если я загружаю собственную структуру с помощью информация из 20-го байта пакета, я могу просматривать адреса mac и ip-адреса.
Мои проблемы:
1) Как я знаю/определить без Wireshark, что, какой тип соединения данных, используется? (Ethernet, WiFi, PPP и т. Д.)
2) Как читать дополнительные данные пакетов? Если я просто прочитал один байт, моя программа не делает ничего, каждая переменная становится пустой.
У меня есть ppphdr-структуру, которая содержит:
u_int16_t htype;
u_int16_t ptype;
u_char hplen;
u_char plen;
u_int16_t oper;
u_char sha[6];
u_char spa[4];
u_char tha[6];
u_char tpa[4];
И называем это для каждого пакета:
pppheader = (struct ppphdr*)(packet+20);
Поскольку ррр кадр начинается с 20-го байта. Он возвращает обратно отправителя и целевого mac и IP-адрес.
После того, как я продолжаю читать следующие несколько байтов, с тем же вызовом только разная структура, он возвращается пустым, а программа останавливается после 1 пакета. Я пытаюсь использовать это руководство: http://www.tcpipguide.com/free/t_PPPGeneralFrameFormat.htm
Начало здесь: http://en.wikipedia.org/wiki/Ethernet_frame – Nim
У вас будет гораздо больше шансов получить разумный ответ, если вы добавите немного кода в вопрос, а также некоторую информацию о том, какой захват файлы, которые у вас есть, точно. Особенно проблема 2 звучит как проблема с вашим кодом. – hyde
http://en.wikipedia.org/wiki/Pcap – hyde