>>собрал программу анализатор сетевого трафика с этого сайта
>>немного доработал,вывел на экран содержимое пакетов.
>>ip , tcp все есть
>>а заголовка eth нет вообще.
>>подскажите как просмотреть mac адреса?
>>ос alt linux 2.2
>
>А что именно Вы доработали?
>Программа прекрасно оображает и MAC-заголовок.
>Если хотите, я Вам исходники вышлю, Вы сможете сравнить со своими.
>
>Ещё небольшое замечание.
>Ethernet-заголовок прогамма выкинет, если тип пакетного сокета будет задан как SOCK_DGRAM. Если
>же тип == SOCK_RAW, то пакет целиком, со всеми заголовками, попадет
>на обработку. Об этом в статье сказано, см. п.3.
вот установил libpcap.
mac адресов так и не увидел,
подскажите где копать.
может у меня ядро криво настроено?
исходник шлите сравню обязательно anogin@bk.ru
//gcc cap.c -o cap /usr/lib/libpcap.a
#include <pcap.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int i;
pcap_t *handle; /* Session handle */
char errbuf[PCAP_ERRBUF_SIZE]; /* Error string */
struct pcap_pkthdr header; /* The header that pcap gives us */
const u_char *packet;/* The actual packet */
if (argc < 2)
{fprintf(stderr, "Usage: %s <interface>\n", argv[0]); return -1;}
if ( (handle = pcap_open_live(argv[1], BUFSIZ, 1, 500, errbuf)) == NULL)
printf("pcap_open_live: %s", errbuf);
for(;;)
{
printf("\n---------------------------\n");
while ( (packet = (char *) pcap_next(handle,&header)) == NULL);
for( i=0; i< header.len; i++) {
printf("x ", (int)*(packet+i));
if (!((i+1))) printf("\n");
};
printf("\nPacked length [%d]\n", header.len);
}
pcap_close(handle);
return(0);
}