Вот тут задался задачей написать сниффер, нашёл несколько примеров, в них используется такая конструкция: /*********** prog1.cpp ***********************/ unsigned char buf[1600]; void init() { int sd; socklen_t sizeaddr; struct sockaddr saddr; sizeaddr = 1600; while (1){ length = recvfrom(sd, buf, 1600, 0, &saddr, &sizeaddr); if (length == -1)continue; handle(buf, length, &saddr); } } и затем: void handle(unsigned char buf[], int length, struct sockaddr *saddr) { char dest_addr[17]; char source_addr[17]; unsigned int type_len; sprintf(source_addr,"%02X-%02X-%02X-%02X-%02X-%02X",buf[6],buf[7],buf[ 8],\ buf[9],buf[10],buf[11]); sprintf(dest_addr,"%02X-%02X-%02X-%02X-%02X-%02X",buf[0],buf[1],buf[2] ,\ buf[3],buf[4],buf[5]); if ((strcmp(dest_addr,target) == 0 ) | (strcmp(source_addr, target) == 0\ | (strcmp(target,"FF-FF-FF-FF-FF-FF") == 0))) { printf("%s -> %s: ",source_addr, dest_addr); } ... } /*********** end prog1.cpp ***********************/ а вот вопрос такой, почему на выводе я вижу 00-0B-CD-1A-84-E7FF-FF-FF-FF-FF-FF -> FF-FF-FF-FF-FF-FF 00-12-A9-F7-52-B801-80-C2-00-00-00 -> 01-80-C2-00-00-00 00-16-E6-45-58-C0FF-FF-FF-FF-FF-FF -> FF-FF-FF-FF-FF-FF 00-01-03-31-EC-C3FF-FF-FF-FF-FF-FF -> FF-FF-FF-FF-FF-FF интересует вот этот кусок 00-16-E6-45-58-C0FF-FF-FF-FF-FF-FF -> FF-FF-FF-FF-FF-FF а ищё конкретнее 00-16-E6-45-58-C0FF-FF-FF-FF-FF-FF откуда берётся этот хвост FF-FF-FF-FF-FF-FF. Как я проверил он лежит в buf[11], т.е. когда я убераю его то и этот хвост не выводится. К тому же получается что этот хвост лежит в одном элементе массива. В чём засада и как это можно пофиксить?! P.S. и вопрос в догонку, где можно прочитать о структуре этого буфера, гуглил, но не смог обнаружить... :( Заранее спасибо!!!
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/photos/9322.gif)
Ответ на:
комментарий
от cyclon
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/photos/9322.gif)
Ответ на:
комментарий
от cyclon
![](/photos/9322.gif)
Ответ на:
комментарий
от cyclon
![](/photos/26285:1375738021.jpg)
Ответ на:
комментарий
от cyclon
![](/img/p.gif)
Ответ на:
комментарий
от anonymous
![](/photos/9322.gif)
Ответ на:
комментарий
от cyclon
![](/photos/26285:1375738021.jpg)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [pthread][c][socket] recvfrom возвращает «bad file descriptor». (2011)
- Форум Странные баги в маленьком примере на C (2006)
- Форум куда пойдём мы с recvfrom? (2016)
- Форум Почему не читаются пакеты из raw socket? (2023)
- Форум socket error (2009)
- Форум GLib проблема с потоками GMainLoop (2014)
- Форум Почему программа выключается? (2017)
- Форум Помогите разобраться с sendmsg & recvmsg. (2013)
- Форум Производительность AF_PACKET RAW и AF_INET SOCK_STREAM сокетов в ядре. (2010)
- Форум Пример программы UDP-сервера (2014)