首先,使用Wireshark验证您的欺骗数据包是否有正确的TCP校验和。如果您的欺骗数据包有无效的TCP校验和,它们将被接收器丢弃。要在Wireshark中打开这个功能:编辑>首选项>协议> TCP>验证TCP校验如果可能的话
除了序列号,也确认您正确操纵TCP时间戳值。如果序列号是正确的,但TCP时间戳选项是旧的,那么接收器仍然会丢弃数据包。
这是一个函数来增加TCP时间戳,它可能会为你做伎俩。
def inc_timestamp(packet, TSval_inc, TSecr_inc):
if packet.haslayer(TCP):
for i, option in enumerate(packet[TCP].options): # Timestamp option format: tuple(name, tuple(time1, time2))
if str(option[0]) == "Timestamp": # Ex. ('Timestamp', (7797613, 414050))]
packet[TCP].options[i] = option[0], (option[1][0]+TSval_inc,option[1][1]+TSecr_inc)
如果要创建从Scapy的从无到有这些数据包,您可能需要添加TCP时间戳选项字段,因为它不是由Scapy的TCP默认值()层包括在内。无论哪种方式,上面提供的代码都应该为您提供必要的格式信息。
恶搞mac地址? – Orbit 2011-03-03 14:43:52
@Orbit - MAC地址应该不重要 - 它可以合法地来自LAN段上的任何路由器,这将导致不同的MAC地址。 – Flexo 2011-03-03 15:02:22