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模块学习参考:

最新文章

  1. 实现php连接memcached
  2. CSharpGL(12)用T4模板生成CSSL及其renderer代码
  3. 利用vim查看日志,快速定位问题
  4. 几个简单的css样式使用说明
  5. mod_PHP&amp;fastcgi
  6. 【BZOJ 3672】【UOJ #7】【NOI 2014】购票
  7. windows和linux文件共享
  8. Google地图接口API之地图类型(六)
  9. 在 Node.js 上调用 WCF Web 服务
  10. GetSurfaceLevel
  11. CATALOGUE 目录
  12. struts2初印象
  13. Android再学习-20141022-Activity的生命周期
  14. UVA 11525 Permutation(树状数组)
  15. Konckout第三个实例:循环绑定 -- table列表数据的填充
  16. 小程序图片转Base64
  17. switch与if语句的应用
  18. Pandas处理丢失数据
  19. python实现归并排序算法
  20. 将MySQL数据库转移到SqlServer2008数据库

热门文章

  1. Android之Activity小结
  2. MongoDB的复制一:复制的原理
  3. HDU 4725 The Shortest Path in Nya Graph(最短路径)(2013 ACM/ICPC Asia Regional Online ―― Warmup2)
  4. lintcode-118-不同的子序列
  5. 【Linux】如何设置Linux开机 ,默认进入图形界面或命令行界面?
  6. 【题解】SCOI2009围豆豆
  7. 【题解】[WC2006]水管局长
  8. [LOJ #2538][PKUWC 2018]Slay the Spire
  9. POJ3415 Common Substrings 【后缀数组 + 单调栈】
  10. 【bzoj2756 奇怪的游戏】