Вот тут задался задачей написать сниффер, нашёл несколько примеров, в
них используется такая конструкция:
/*********** 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. и вопрос в догонку, где можно прочитать о структуре этого буфера,
гуглил, но не смог обнаружить... :(
Заранее спасибо!!!
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от cyclon
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от cyclon

Ответ на:
комментарий
от cyclon

Ответ на:
комментарий
от cyclon
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от cyclon

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [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)
- Форум Пример программы UDP-сервера (2014)
- Форум Производительность AF_PACKET RAW и AF_INET SOCK_STREAM сокетов в ядре. (2010)