代码之家  ›  专栏  ›  技术社区  ›  Sam Skuce

软件生成错误的ARP请求?

  •  1
  • Sam Skuce  · 技术社区  · 14 年前

    编辑:在服务器故障时回答。谢谢!

    我正在测试的一个产品在收到一个发送IP地址为0.0.0.0的ARP请求时,看起来很奇怪。这不是一个ARP探针,因为请求被发送到我的模块,客户的系统在它开始使用它自己的有效IP地址之前发送请求,这与我的模块的IP地址不同。问题是在实验室里重新创建了它,而不是必须去客户的网站。

    有没有可以用来从假地址生成ARP请求的软件?这与ARP欺骗类似,但并不完全相同,因为我试图伪造请求而不是回复。是否有任何欺骗工具具有此功能?或者有没有办法强迫Windows或Linux发送一个ARP探测器?

    1 回复  |  直到 11 年前
        1
  •  1
  •   Jonathon Reinhart    11 年前

    你可以用python2来完成这项工作。这真是一项非常简单的任务。您将需要根权限来打开原始套接字,以及一些关于Python的知识。

    import socket
    import struct
    
    #Packet structure explanation:
    #destmac = 0xff,0xff,0xff,0xff,0xff,0xff
    #sourcemac = 0x00,0x11,0x22,0x33,0x44,0x55
    #etherflags = 0x0806,0x0001,0x0800
    #arpflags = 0x6,0x4,0x0001
    #sourcemac = 0x00,0x11,0x22,0x33,0x44,0x55
    #sourceip = 0xc0,0xa8,0x2b,0x7a
    #targmac = 0x00,0x00,0x00,0x00,0x00,0x00
    #targip = 0xc0,0xa8,0x2b,0x0c
    
    packet = struct.pack('!12B3H2BH10B10B', 0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x11,0x22,0x33,0x44,0x55, 0x0806,0x0001,0x0800, 0x6,0x4,0x0001 ,0x00,0x11,0x22,0x33,0x44,0x55, 0xc0,0xa8,0x2b,0x7a, 0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0xa8,0x2b,0x0c)
    
    sock = socket.socket(socket.PF_PACKET, socket.SOCK_RAW)
    sock.bind(('eth0', 6)) # 6 its protocol number
    sock.send(packet)
    sock.close()