此文章仅用于学习研究使用,请勿用于违法犯罪,请遵守《网络安全法》等相关法律法规。
使用scapy定制数据包进行高级扫描
scapy概述
Scapy是一个可以发送、侦听和解析并伪装网络报文的Python程序。这些功能可以用于制作侦测、扫描和攻击网络的工具
scapy定制ARP协议
首先使用scapy
命令打开工具
查看ARP函数的用法(ARP格式)
>>> ARP().display()
例:自定义向192.168.20.134发送arp请求的数据包
这里我们会使用到其中的sr1函数,sr1函数包含了发送数据包和接收数据包的功能
修改ARP函数中的目的参数,以进行发送
>>> sr1(ARP(pdst="192.168.20.134"))
scapy定制PING包
scapy定制PING包需要使用到IP和ICMP这两个函数,IP()生成ping包的源ip和目的ip,ICMP()生成ping包的类型
首先查看这两个函数中的参数有哪些
例:自定义向192.168.20.134发送的PING包,命令如下
>>> sr1(IP(dst="192.168.20.134")/ICMP(),timeout=1)
timeout:超时时间
scapy定制TCP协议SYN请求
首先查看TCP函数的参数
标志域具体类型介绍
- URG:紧急标志
- ACK:有意义的应答标志
- PSH:急迫标志
- RST:重置连接标志
- SYN:同步序号标志(图中S即SYN)
- FIN:完成发送数据标志
例:自定义向192.168.20.134的80端口发送TCP协议包,命令如下
>>> sr1(IP(dst="192.168.20.134")/TCP(flags="S",dport=80),timeout=1)
响应包中的
flag=SA
即SYN+ACK
这里我们收到的是TCP三次握手中的第二个包,收到后不再发送ACK完成三次握手。因此这里的扫描是基于tcp的半连接扫描,更不容易被发现。根据下图可方便理解