SCAPY学习笔记

Scapy是一个强大的,用Python编写的交互式数据包处理程序,它能让用户发送、嗅探、解析,以及伪造网络报文,从而用来侦测、扫描和向网络发动攻击。Scapy可以轻松地处理扫描(scanning)、路由跟踪(tracerouting)、探测(probing)、单元测试(unit tests)、攻击(attacks)和发现网络(network discorvery)之类的传统任务。

1)基础命令

    ls():可以显示所有支持的数据包对象。例:list show、ls()

    ls(IP) 查看默认参数,注意大写

    lsc():列出所有函数

如:arpcachepoison(用于arp毒化攻击,也叫arp欺骗攻击),arping(用于构造一个ARP的包) ,send(用于发3层报文),

sendp(用于发2层报文), sniff(用于网络嗅探), sr(发送+接收3层报文),srp(发送+接收2层报文) 

    简单的构造IP包

  不同层包之间通过“/”来连接,display()和show()可以查看目前的取值情况。

    conf:scapy的配置信息,修改方式,conf.verb = *

2)不同数据包操作函数的区别

         1、send()在第三层发送数据包,但没有接收功能

                  >>> send(IP(dst="192.168.115.188")/ICMP()) 

         2、sendp(),在第二层发送数据包,同样没有接收功能         

                  >>> sendp(Ether()/IP(dst="www.baidu.com",ttl=1)/ICMP())                 

         3、sr(),在第三层发送数据包,有接收功能   

                  >>> sr(IP(dst="192.168.115.1")/TCP(dport=[21,22,23]))

         4、sr1(),在第三层发送数据包,有接收功能,但只接收第一个包

                  >>> sr1(IP(dst="192.168.115.188")/ICMP()/"test")

         5、srloop(),在第三层工作,如下:

                  >>> p=srloop(IP(dst="www.baidu.com",ttl=1)/ICMP())

                  >>> p=srloop(IP(dst="www.baidu.com",ttl=1)/ICMP(),inter=3,count=2)

                  这里第一条语句在执行时,将会不停的ping百度,第二条执行时每隔3秒ping一次,一共执行两次。

         6、srp()、srp1()、srploop()与上面3、4、5相同,只是工作在第二层。

         7、简单构造包并返送接收

3)小实验

     1、SYN扫描(也叫“半开式扫描”(half-open scanning),因为它没有完成一个完整的TCP连接。)

    这种方法向目标端口发送一个SYN分组(packet),如果目标端口返回SYN/ACK,那么可以肯定该端口处于检听状态;否则,返回的是RST/ACK。

    >>> ans,unans=sr1(IP(dst="61.135.169.105")/TCP(dport=80,flags="S"))

    >>>ans.summary(lambda(s,r):r.sprintf("%TCP.sport% \t %TCP.flags%"))显示

    >>>ans.make_table(lambda(s,r):s.dst,s.src,s.ttl)

    2、TCP traceroute(traceroute:用来追踪出发点到目的地所经过的路径)

    >>>res,unans=traceroute(["www.baidu.com","www.kali.org"],dport=[80,443],maxttl=20,retry=-2)

    >>>res.graph() 显示图形

    >>>res.graph(target=">/tmp/graph.svg")

    3、简单的SNIFF嗅探

    >>> sniff(filter="icmp and host 61.135.169.125",count=2)

    >>> sniff(iface="ppp0",prn=lambda x:x.summary())

   4、二层扫描之ARP扫描

   >>>ARP().display()

   >>>arp=ARP()

   >>>arp.pdst=”192.168.1.1”

   >>>anser=sr1(arp) #发送同时收到回应包

  5、实现ping命令

  >>>i = IP()

  >>>p = ICMP()

  >>>ping = (i/p)

 >>>ping[IP].dst=”192.168.1.1”

 >>>ping.display()

 >>>anser=sr1(ping)   #发送同时收到回应包

安全交流群:687398569

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值