首先,使用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