scapy - How to get number of hops to a website in python -
addr = socket.gethostbyname('dalitstan.org') target = [addr] result, unans = traceroute(target,maxttl=32)
i using above code , getting below output. how can number of hops in between machine , server i.e 18 below case?
begin emission: *finished send 32 packets. ************************ received 25 packets, got 25 answers, remaining 7 packets 185.53.178.6:tcp80 1 192.168.43.1 11 3 10.71.80.2 11 4 172.16.26.245 11 5 172.26.31.242 11 11 49.44.18.38 11 13 103.198.140.164 11 14 103.198.140.27 11 15 80.81.194.27 11 16 217.64.161.25 11 17 217.64.170.214 11 18 185.53.178.6 sa 19 185.53.178.6 sa 20 185.53.178.6 sa 21 185.53.178.6 sa 22 185.53.178.6 sa 23 185.53.178.6 sa 24 185.53.178.6 sa 25 185.53.178.6 sa 26 185.53.178.6 sa 27 185.53.178.6 sa 28 185.53.178.6 sa 29 185.53.178.6 sa 30 185.53.178.6 sa 31 185.53.178.6 sa 32 185.53.178.6 sa 25
the result you're looking first answer tcp layer (since previous hops answer icmp packet). more precise, you're looking lower ttl of packets have sent got tcp answer.
in scapy, can select (probe, answer)
tuples sndrcvlist
object containing tcp layer using [tcp]
: result[tcp]
. can compare result.show()
result[tcp].show()
if i'm not clear enough.
now, extract ttl
values of sent packets, use [snd[ip].ttl snd, _ in result[tcp]]
. need minimum value using min()
(or first value using [0]
or next()
actually, since packets sorted; feel using min()
safer however):
result, _ = traceroute('dalitstan.org') min(snd[ip].ttl snd, _ in result[tcp])
Comments
Post a Comment