scapy模块是干嘛用的?
答:Scapy的是一个强大的交互式数据包处理程序(使用python编写)。它能够伪造或者解码大量的网络协议数据包,能够发送、捕捉、匹配请求和回复包等等。它可以很容易地处理一些典型操作,比如端口扫描,tracerouting,探测,单元测试,攻击或网络发现(可替代hping,NMAP,arpspoof,ARP-SK,arping,tcpdump,tethereal,P0F等)。最重要的他还有很多更优秀的特性——发送无效数据帧、注入修改的802.11数据帧、在WEP上解码加密通道(VOIP)、ARP缓存攻击(VLAN)等,这也是其他工具无法处理完成的。
src:源IP
dst:目的IP
1.Sniff方法
Sniff拿来干嘛的?答:用来嗅探数据
案例一:b = sniff(filter="icmp and host 127.0.0.1", count=2)
filter:过滤器
count:指定你需要嗅探的数据包的个数,留空则默认为嗅探无限个
prn:表示每个数据包处理的函数,可以是lambda.如:prn=lambda x:x.summary() #summary是总结的意思。
iface:用来指定要在哪个网络接口上进行抓包(通常不指定即所有网络接口)
发送ICMP数据包:
ARP:
首先需要了解ARP的具体原理:
由于局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输,这样的一个网络协议,称之为arp协议。
首先网络一经启用,客户端就会每隔一定时间发送ARP数据包给网关,网关是通过MAC来识别这个客户端的,客户端是通过IP去识别网关的(一般网关都是1)
这里涉及到“找”的关系,那么网关如何找到客户端呢?
网关会对整个网络进行广播找客户端的MAC(可以理解为一个操场上放广播喊某个学生的名字,而这个名字就是MAC)如果MAC这个对应的人听到了就会去给网关发送一个ARP数据包,并且告诉网关自己的IP以及MAC。那么这里就会导致一个欺骗,也就是说本来网关找的是客户端A,但是客户端B却骗网关说我就是你要找的那个MAC,然后伪造A的MAC并且将自己的IP以及伪造的MAC告诉网关。(因为客户端B比客户端A还要快速到达网关所以网关就认为客户端B是正确的)[更加形象化的来说就是校运会颁发奖状,学校通过广播的形式找得奖的A,但是B却以A的名字去把奖状领了。此时这个人的名字是MAC,这个人就是IP,学校颁发奖状的人只认识这个名字,并不认识这个人]
同理上面是欺骗网关,也可以欺骗客户端。
假设现在客户端A要发送ARP数据给网关,那么客户端B就篇客户端说我是网关,因为客户端是通过IP去识别网关的。客户端B将自己的IP改为1客户端A就会以为是客户端B是网关,就会将数据包传输给B。
拓展:ARP缓存表
https://zhidao.baidu.com/question/111688702.html
所以总结上面的来说。ARP的欺骗有三种欺骗,欺骗网关,欺骗客户端 ,欺骗所有客户端。=>ARP协议本身就是有漏洞的<=
#pkt = srploop(Ether(dst=d_mac)/ARP(psrc=route_ip,hwsrc=lcoal_mac,pdst=d_ip,hwdst=d_mac,op=2)) #欺骗目标计算机 告诉目标机器我是网关
#pkt = srploop(Ether(dst=route_mac)/ARP(psrc=d_ip,hwsrc=lcoal_mac,pdst=route_ip,hwdst=route_mac,op=2)) #欺骗网关 告诉网关我是目标机器
#pkt = srploop(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(hwsrc=lcoal_mac,psrc=lcoal_ip,op=2)) #广播APR欺骗 告诉我各位我是网关
arp = ARP(hwsrc=src_mac, psrc=gateway_ip, hwdst=tgt_mac, pdst=tgt_ip, op="is-at")
scapy模块学习参考: