簡體   English   中英

無法在 python3/Mac OS 上以 scapy 發送數據包

[英]Not able to send packets in scapy on python3/Mac OS

我是 scapy 的新手,並試圖使用我的無線接口發送 icmp 數據包。 我不斷收到以下錯誤。 我在 python3 上使用最新的 scapy 版本。 當我嘗試使用 python3 shell 發送數據包時,我不斷收到分段錯誤 11 錯誤。 sr 和 send 都失敗了。

bash-3.2$ ifconfig en1
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 24:a0:74:ef:c2:0a 
inet6 fe80::1421:2877:9b9f:8b7e%en1 prefixlen 64 secured scopeid 0x5 
inet 192.168.0.56 netmask 0xffffff00 broadcast 192.168.0.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
bash-3.2$ ping -S 192.168.0.56 www.google.com
PING www.google.com (172.217.166.68) from 192.168.0.56: 56 data bytes
64 bytes from 172.217.166.68: icmp_seq=0 ttl=55 time=26.458 ms
64 bytes from 172.217.166.68: icmp_seq=1 ttl=55 time=21.927 ms



bASH-3.2$ scapy
WARNING: Cannot read wireshark manuf database 
WARNING: Crypto-related methods disabled for IPsec, Dot11 and TLS 
         layers (needs python-cryptography v1.7+).
WARNING: No route found for IPv6 destination :: (no default route?)
INFO: Can't import python-cryptography v1.7+. Disabled WEP 
decryption/encryption.
INFO: Can't import python-cryptography v1.7+. Disabled IPsec 
encryption/authentication.
WARNING: IPython not available. Using standard Python shell instead.
AutoCompletion, History are disabled.

                   aSPY//YASa       
           apyyyyCY//////////YCa       |
          sY//////YSpcs  scpCY//Pp     | Welcome to Scapy
 ayp ayyyyyyySCP//Pp           syY//C    | Version 2.4.0rc4
 AYAsAYYYYYYYY///Ps              cY//S   |
     pCCCCY//p          cSSps y//Y   | https://github.com/secdev/scapy
     SPPPP///a          pP///AC//Y   |
          A//A            cyP////C   | Have fun!
          p///Ac            sC///a   |
          P////YCpc           A//A   | To craft a packet, you have to be a
   scccccp///pSP///p          p//Y   | packet, and learn how to swim in
  sY/////////y  caa           S//P   | the wires and in the waves.
   cayCyayP//Ya              pY/Ya   |        -- Jean-Claude Van Damme
    sY/PsY////YCc          aC//Yp    |
     sc  sccaCY//PCypaapyCP//YSs  
              spCPY//////YPSps    
                   ccaacs         

>>> sr(IP(dst='www.google.com')/ICMP())
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Library/Python/2.7/site-packages/scapy-2.4.0rc4-
py2.7.egg/scapy/sendrecv.py", line 364, in sr
s = conf.L3socket(promisc=promisc, filter=filter, iface=iface, 
nofilter=nofilter)
File "/Library/Python/2.7/site-packages/scapy-2.4.0rc4-
py2.7.egg/scapy/arch/bpf/supersocket.py", line 57, in __init__
(self.ins, self.dev_bpf) = get_dev_bpf()
File "/Library/Python/2.7/site-packages/scapy-2.4.0rc4-
py2.7.egg/scapy/arch/bpf/core.py", line 98, in get_dev_bpf
raise Scapy_Exception("No /dev/bpf handle is available !")
Scapy_Exception: No /dev/bpf handle is available

sudo scapy試試,它對我sudo scapy

在這里我找到了解決方案: https : //github.com/secdev/scapy/issues/1343

guedou 於 9 月 8 日評論Scapy 需要以 root 身份運行才能發送數據包。

我遇到了同樣的問題,但也只是嗅探數據包(即,不發送,我知道需要 root)。 因此,只需啟動scapy並運行>>> sniff()將返回Scapy_Exception: No /dev/bpf handle is available

事實證明,默認情況下 /dev/bpf* 設備歸wheel擁有,而我的普通用戶不屬於該wheel 這就是sudo scapy起作用的原因。 問題是在 sudo 下運行並不總是很方便。

我不知道 /dev/bpf* 設備是否歸任何其他組所有,但快速解決方法表明他們可以...

只需安裝 Wireshark! 一旦安裝了wireshark,/dev/bpf* 設備就歸access_bpf ,非root 用戶添加到該組中。

我在 Mac 上以具有管理員權限的用戶身份使用 scapy 運行時遇到了同樣的問題。

解決方案是以超級用戶身份運行 - sudo

我在 python 2.7.17 和 3.7.6 上都試過了。 確保您有更新的 scapy 包,請參閱https://scapy.readthedocs.io/en/latest/installation.html 上的安裝說明

scapy 的 root 管理員權限列在以下 github 問題文檔https://github.com/secdev/scapy/issues/1851

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM