python scapy traceroute_07python实现traceroute程序

该脚本演示如何使用Python的Scapy库实现类似Linux traceroute的功能,通过发送UDP包并逐步增加TTL值来探测到目标IP的完整路由路径。程序捕获超时ICMP响应和端口不可达消息,从而确定网络中的跃点。
摘要由CSDN通过智能技术生成

# 这个脚本是实现Linux中traceroute程序的,是探测从我们这个机器到我们要探测的IP地址中间都需要经过那些路由。

# 原理:我们的机器发送UDP高端口的数据包,发送给目的地址,首先设置ttl为1,然后逐次增加,在没有到达我们的目的IP

# 地址的路由,会发送ICMP的超时报文,然后我们从中提取IP地址,因为我们发送的是高端口的报文,到达目的地址的时候,

# 目的地址会发送ICMP的端口不可达报文,这样我们就探测出从我们源端口到目的端口的路由。

from scapy.all import *

import struct,re,random

# 跟我们实现ping程序的想法是一样的,首先构造一个发送一个UDP报文的函数,

# 入参为目的地址,ttl数。

def traceroute_one(dst,ttl_no,dport):

# 定义发包时间。

send_time = time.time()

try:

# 发送一个包,接收一个包。

traceroute_one_reply = sr1(IP(dst=dst, ttl=ttl_no) / UDP(dport=dport) / b'hello world', timeout=1,

verbose=False)

# 判断ICMP包是不是超时回答。

if traceroute_one_reply.getlayer(ICMP).type == 11 and traceroute_one_reply.getlayer(ICMP).code ==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值