【问题标题】:scapy.srp() doesn't responds with expected resultscapy.srp() 没有响应预期的结果
【发布时间】:2020-04-16 12:43:21
【问题描述】:

我正在尝试对网络扫描仪进行编码,并且一旦我尝试打印响应,它就不会显示任何内容。

import scapy.all as scapy


def scan(ip):
    packet1 = scapy.ARP(pdst=ip)
    etherpacket = scapy.Ether(dst = 'ff:ff:ff:ff:ff:ff')

    broadcast_packet = etherpacket/packet1
    ans, unans = scapy.srp(broadcast_packet, timeout=10)

    print(ans.summary())





scan("192.168.1.1-254")

下面是结果。

$sudo python3 networkscanner.py 
Begin emission:
........Finished sending 1 packets.
..........
Received 18 packets, got 0 answers, remaining 1 packets
None

【问题讨论】:

  • Scapy 可能使用了错误的接口,您可以做的一件事是使用iface 参数将显式接口名称传递给srpconf.iface 会告诉你默认界面。

标签: python python-3.x scapy arp network-scan


【解决方案1】:

使用 scapy 的内置 arping 代替进行 ARP 扫描:

from scapy.all import arping

arping("192.168.1.0/24")

然后在你的外壳中:

$ python3 arping.py
Begin emission:
*****************Finished sending 256 packets.

Received 17 packets, got 17 answers, remaining 239 packets
  00:1b:78:20:ee:40 192.168.1.48
  a4:77:33:88:92:62 192.168.1.66
  6c:33:a9:42:6a:18 192.168.1.67
...

Arping 文档是 here

【讨论】:

    【解决方案2】:

    变化应该是在函数被调用的时候,应该是/24而不是上面写的方式。

    import scapy.all as scapy
    
    
        def scan(ip):
            packet1 = scapy.ARP(pdst=ip)
            etherpacket = scapy.Ether(dst = 'ff:ff:ff:ff:ff:ff')
    
            broadcast_packet = etherpacket/packet1
            ans, unans = scapy.srp(broadcast_packet, timeout=10)
    
            print(ans.summary())
    
    
    
    
    
        scan("192.168.1.1/24")
    

    【讨论】:

      猜你喜欢
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 2020-05-29
      • 1970-01-01
      • 2015-04-20
      相关资源
      最近更新 更多