2016-03-07 8 views
1

Я работаю в C и используя библиотеку pcap для анализа файла cap, который имеет пакеты, которые были отправлены/получены во время выполнения traceroute. Проблема, которую я испытываю, - это идентификация пакетов, которые были отправлены/получены от traceroute, так как файл cap также содержит другие пакеты.Как определить пакеты traceroute?

Есть ли какие-либо конкретные критерии, которые я мог бы проверить при попытке определить, имеет ли данный пакет от traceroute? Или это невозможно?

Поблагодарили бы за помощь или совет, который вы могли бы предложить.

ответ

2
$ man traceroute 

TRACEROUTE(8)    BSD System Manager's Manual   TRACEROUTE(8) 

NAME 
    traceroute -- print the route packets take to network host 

    ... 


    -I  Use ICMP ECHO instead of UDP datagrams. (A synonym for "-P 
      icmp"). 

    ... 


    This program attempts to trace the route an IP packet would follow to 
    some internet host by launching UDP probe packets with a small ttl (time 
    to live) then listening for an ICMP "time exceeded" reply from a gateway. 
    We start our probes with a ttl of one and increase by one until we get an 
    ICMP "port unreachable" (which means we got to "host") or hit a max 
    (which defaults to net.inet.ip.ttl hops & can be changed with the -m 
    flag). Three probes (changed with -q flag) are sent at each ttl setting 
    and a line is printed showing the ttl, address of the gateway and round 
    trip time of each probe. If the probe answers come from different gate- 
    ways, the address of each responding system will be printed. If there is 
    no response within a 5 sec. timeout interval (changed with the -w flag), 
    a "*" is printed for that probe. 

    We don't want the destination host to process the UDP probe packets so 
    the destination port is set to an unlikely value (if some clod on the 
    destination is using that value, it can be changed with the -p flag). 

Таким образом, по умолчанию пакеты traceroute представляют собой UDP-пакеты, отправленные на некоторый случайный порт; что делает их несколько трудно отличить от другого трафика.

Если кто использует опцию -I, он будет использовать ICMP ECHO пакеты, которые легче отличить от другого трафика, хотя и не легко отличить от, например, трафик из команды «пинг».

Вы можете попробуйте найти пакеты с небольшим TTL.

+0

Я думаю, что окончательный вывод состоит в том, что нет реального способа проверить, принадлежат ли эти пакеты трассеру. –

0

Программа traceroute работает, отправив пакеты UDP/ICMP с добавочным IP TTL-полем. Это поле IP TTL обычно очень мало по сравнению с тем, что отправит типичное приложение (у меня 64).

Так что, если вы захватить с фильтром с

< ip.ttl 20

Вы можете получить эти пакеты (вы можете настроить количество в указанном выше фильтре), помните, если ваши близкие к хосту которые запускают программу traceroute, вы можете даже поймать ее «ip.ttl < 5».