Я использую winpcap для прослушивания сетевого трафика.
Есть ли способ извлечь пакет из фрейма (т.е. получить уровень 3 и выше без уровня 2), если я не знаю, какой протокол уровня 2 используется в сети?
Я использую winpcap для прослушивания сетевого трафика.
Есть ли способ извлечь пакет из фрейма (т.е. получить уровень 3 и выше без уровня 2), если я не знаю, какой протокол уровня 2 используется в сети?
Нет. WinPcap доставляет пакеты уровня 2 (уровень канала передачи данных), поэтому при необходимости необходимо просмотреть заголовок уровня 2, чтобы определить, какой протокол уровня 3 (сетевой уровень) используется, а затем извлечь пакет уровня 3.
Однако pcap_datalink()
сообщит вам сообщит, какой протокол уровня 2 используется, поэтому не будет случая, когда вы не знаете, какой протокол уровня 2 используется в сети. См. список значений типа уровня ссылки pcap; сравните значение, возвращаемое pcap_datalink()
, со значениями DLT_
, упомянутыми на этой странице.
pcap_datalink()
не возвращает значение DLT_
для поддерживаемого вами типа связующего слоя, сообщить пользователю об ошибке, чтобы он знал, что ваш программа не может захватить в этой сети.
- person ; 22.12.2014
Используйте этот код в модуле TestPacketCapture.
fp = fopen("D:\\Payload_data\\example.txt", "w+");
for ( i=0; i<ulLines; i++ )
{
pLine =pChar;
printf( "%08lx : ", pChar-base );
ulen=tlen;
ulen = ( ulen > 16 ) ? 16 : ulen;
tlen -= ulen;
for ( j=0; j<ulen; j++ )
{ printf( "%02x ", *(BYTE *)pChar++ );
// ch = *(BYTE *)pChar; // variable for writing to file
fprintf(fp, pChar); //writing to a file
//fputs("data is", fp);
}