python利用scapy模块发送arp包

**

一、基础知识

**
python利用scapy模块发送arp包_第1张图片

**

二、发送ARP包

**

python利用scapy模块发送arp包_第2张图片
python利用scapy模块发送arp包_第3张图片
python利用scapy模块发送arp包_第4张图片

root@kali:~# scapy
WARNING: No route found for IPv6 destination :: (no default route?)
Welcome to Scapy (2.3.2)
>>> a=ARP()
>>> a.show()
###[ ARP ]###
  hwtype= 0x1
  ptype= 0x800
  hwlen= 6
  plen= 4
  op= who-has
  hwsrc= 00:0c:29:b6:71:0c
  psrc= 192.168.19.140
  hwdst= 00:00:00:00:00:00
  pdst= 0.0.0.0
>>> a.pdst="192.168.1.107"
>>> a.display()
###[ ARP ]###
  hwtype= 0x1
  ptype= 0x800
  hwlen= 6
  plen= 4
  op= who-has
  hwsrc= 00:0c:29:b6:71:0c
  psrc= 192.168.19.140
  hwdst= 00:00:00:00:00:00
  pdst= 192.168.1.107
>>> sr1(a)  //s:sent r:recv 1:返回收到的包的第一个
Begin emission:
.*Finished to send 1 packets.

Received 2 packets, got 1 answers, remaining 0 packets
<ARP  hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=is-at hwsrc=00:50:56:c0:00:08 psrc=192.168.19.1 hwdst=00:0c:29:b6:71:0c pdst=192.168.19.140 |<Padding  load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |>>
>>> recv=sr1(a)
Begin emission:
..............*Finished to send 1 packets.

Received 15 packets, got 1 answers, remaining 0 packets
>>> recv.show()
###[ ARP ]###
  hwtype= 0x1
  ptype= 0x800
  hwlen= 6
  plen= 4
  op= is-at
  hwsrc= 00:50:56:c0:00:08
  psrc= 192.168.19.1
  hwdst= 00:0c:29:b6:71:0c
  pdst= 192.168.19.140
###[ Padding ]###
     load= '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

ps:关于arp协议

python利用scapy模块发送arp包_第5张图片

sr1(),发送方法是发出去一个包还必须返回一个包,但是加入我们发送的目的地址主机存活但是没有在线,以至于我们不能收到返回的包,这时候我们可以手动的设置一个参数timeouts,verbos参数(默认为1)的意思是是否显示详细信息。
1.只发不收send、sendp区别是在第二层还是第三层发包,我们手动指定Ether的时候我们是在第二层发包,需要用sendp方法。
2.发包且接受回复:sr() srp() sr1() srp1()。

你可能感兴趣的:(python)