概念:
scapy是一个可以让用户发送、侦听和解析并伪装网络报文的Python程序。可以用于制作侦测、扫描和攻击网络的工具。
作用:
定制ARP,PING,TCP等协议的数据包
目的:定制协议获取返回报文
scapy定制ARP协议
ARP().display() #查看ARP协议的用法,注意ARP大写
###[ARP]###
hwtype= 0x1 硬件类型
ptype= IPv4 协议类型
hwlen= None 硬件地址长度(MAC)
plen= None 协议地址长度(IP)
op= who-has who-has查询
hwsrc= 00:0c:29:69:cb:49 源mac地址
psrc= 192.168.24.128 源IP地址
hwdst= 00:00:00:00:00:00 目的MAC地址
pdst= 0.0.0.0 向谁发送查询请求(目的IP)
sr1函数作用:sr1函数包含了发送数据包和接受数据包的功能
sr1(ARP(pdst="192.168.1.1")) 向该ip发送ARP请求数据包并显示返回的数据包内容
ps:返回的数据包目的地址是本机地址
scapy定制ping包
>>> IP().display()
###[ IP ]###
version= 4 版本
ihl= None 首部长度
tos= 0x0 服务
len= None 总长度
id= 1 标识
flags=
frag= 0 标志
ttl= 64 生存时间
proto= hopopt 传输控制协议 IPV6逐跳选项
chksum= None 首部校验和
src= 127.0.0.1 源地址
dst= 127.0.0.1 目的地址
\options\
>>> ICMP().display()
###[ ICMP ]###
type= echo-request 类型,标识ICMP报文类型
code= 0 代码
chksum= None 校验和
id= 0x0 标识
seq= 0x0
ps:IP()生成ping包的源IP和目标IP,ICMP生成pign包类型。使用IP()和ICMP()两个函数,可以生成ping包,进行探测
组装:
sr1(IP(dst="192.168.1.1")/ICMP(),timeout=1) 向该ip发送IP数据包并显示返回的数据包内容,设置超时时间为1
scapy定制TCP协议的SYN请求
>>> TCP().display()
###[ TCP ]###
sport= ftp_data TCP源端口
dport= http TCP目的端口
seq= 0 32位序号
ack= 0 32位确认序号
dataofs= None 4位首部长度
reserved= 0 保留6位
flags= S 标志域,URG、ACK、PSH、RST、SYN、FIN
window= 8192 窗口大小
chksum= None 16位校验和
urgptr= 0 优先指针
options= [] 选项
sr1(IP(dst="192.168.1.1")/TCP(flags="S",dport=80),timeout=1)
发送SYN数据包到该IP的80端口,超时时间为1
属于TCP半连接