from scapy.all import *
import socket 

s = socket.socket(socket.AF_INET, socket.SOCK_RAW,socket.IPPROTO_RAW)
s.bind(("127.0.0.1", 0))
pe=Ether()/IP(src="10.0.0.1",dst="10.0.0.2")/ICMP()
data = pe.build()
while True:
     s.send(data)

Though I had mention the destination address but still with this script I got this error

WARNING: No route found for IPv6 destination :: (no default route?)

Traceback (most recent call last):

File "testing.py", line 12, in

s.send(data)

socket.error: [Errno 89] Destination address required
有帮助吗?

解决方案

  1. Use AF_PACKET instead of AF_INET.

    s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,socket.IPPROTO_RAW)
    
  2. Bind to the device name instead of address.

    s.bind(("lo", 0))
    

    (lo is loopback device name. Replace it with actual device name if you want to send the packet outside the machine.)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top