Python写ARP局域网主机存活扫描与ARP欺骗工具

简介:

起源

最近一直在研究网络协议,为了加深理解就自己构造了数据包发送并用抓包工具进行分析,在研究arp协议时顺便写了一个简单的类似网络剪刀手的小脚本用于测试,下面开始我们的arp研究吧。

简单协议分析

网络协议大致分为应用层•传输层•网路层•链路层,以http为例,传输层封装tcp头,网络层封装ip头,链路层封装以太头(如下图所示),而arp报文就是包含在链路层以太帧的数据包里面,下面我们来讲讲以太帧格式。


以太帧

以太帧工作在链路层,以太帧格式多达五种,但今天的tcp/ip应用都是用Ethernet V2格式,下面我们分析Ethernet V2格式(如图),各数据段的解释图上也标出来了,其中“类型”是指明上层协议,0x800代表网际协议,0x0806代表arp协议


下面我用wireshark抓一个arp回复包来分析一下是否能与上面数据格式对应上(如下面截图)此处wireshark把前导码与CRC包给丢弃了,截图中的“数据”里面就包含着我们要研究的arp报文

Arp报文数据结构的研究

Arp报文数据结构就是对上面截图中“数据”的具体研究,arp报文格式如下图,操作类型有四种,这里只讲arp的两种:1表示发送的包为请求包,2表示发送的包为回复包:


下面我用wireshark对上面截图“数据”展开进行研究:

好,说了这么多我们下面来讲讲arp欺骗的原理吧!

Arp欺骗

两台计算机通信需要ip地址与mac地址,此时把两台计算机当作快递的起始站和终点站,要传送的数据当作你要邮寄的物品,那么ip地址就相当于起始站的寄件地址和终点站的收件地址,而mac地址就相当于中间要经过的中转站地址。当一个数据发出后,要经过一个一个mac中转站才能到达终点站。 

(1)此时如果你把起始站要发往中转站的mac地址改为你的mac地址,那么起始站的数据包就直接发到你手中,如果你做一个路由转换,再转换到正确的mac地址,那么起始站能正常收发邮件,而你却能看其中的内容,如果不做路由转换便实现了断网功能 

(2)如果你把mac中转站(网关)要发往起始站的mac地址改为你的mac地址,那么回复的请求包就发到你手中,起始站就得不到回复包,实现断网功能。 

方法一是欺骗目标机,修改目标机的mac缓存表,如果目标机有arp防火墙便成功不了; 

方法二是欺骗路由器,修改路由器的mac缓存表,即使目标机有arp防火墙,也能实现断网功能,因为目标机的mac缓存表并没有修改 

Arp协议是一个不安全的协议,只要你发送数据包就能修改目标的mac缓存表,基于这种不安全性,便能实现arp欺骗。

Python写arp欺骗工具

思路(及数据包的构造):不断发送修改对方mac缓存表的arp

欺骗目标机:以太头:本机mac•目标机mac数据(Arp包):目标机mac•目标机ip•操作类型请求或回复都行•本机mac•网关ip

欺骗路由器:以太头:网关mac•本机mac数据(arp包):网关mac•网关ip•操作类型请求或回复都行•本机mac•目标机ip

Arp主机存活扫描

遍历你要扫描的ip段地址并发送一个广播mac地址的请求包,收到回复则代表这台主机存活,并打印其ip地址及mac地址,用于arp欺骗。

Python写扫描工具

思路:
以太头:本机mac•ff:ff:ff:ff:ff:ff

数据:00:00:00:00:00:00(因为不知道目标mac于是用0填充)•目标机ip(一个一个遍历)•操作类型请求•本机mac•本机ip

具体代码如下:



代码效果(以欺骗目标机为例):

注意

使用arp欺骗路由器时,不能用本机和虚拟机做路由欺骗实验,因为无论你怎么分配虚拟机mac地址,在路由器上的mac缓存表中本机和虚拟机mac地址都是用的本机mac地址,如下图




原文发布时间为:2016-12-03 

本文作者:exploit

本文来自云栖社区合作伙伴“Python中文社区”,了解相关信息可以关注“Python中文社区”微信公众号

相关文章
|
2月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
78 4
|
5月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
152 7
|
5月前
|
运维 监控 算法
基于 Python 迪杰斯特拉算法的局域网计算机监控技术探究
信息技术高速演进的当下,局域网计算机监控对于保障企业网络安全、优化资源配置以及提升整体运行效能具有关键意义。通过实时监测网络状态、追踪计算机活动,企业得以及时察觉潜在风险并采取相应举措。在这一复杂的监控体系背后,数据结构与算法发挥着不可或缺的作用。本文将聚焦于迪杰斯特拉(Dijkstra)算法,深入探究其在局域网计算机监控中的应用,并借助 Python 代码示例予以详细阐释。
132 6
|
9月前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
257 66
|
6月前
|
监控 算法 安全
基于 Python 广度优先搜索算法的监控局域网电脑研究
随着局域网规模扩大,企业对高效监控计算机的需求增加。广度优先搜索(BFS)算法凭借其层次化遍历特性,在Python中可用于实现局域网内的计算机设备信息收集、网络连接状态监测及安全漏洞扫描,确保网络安全与稳定运行。通过合理选择数据结构与算法,BFS显著提升了监控效能,助力企业实现智能化的网络管理。
97 7
|
8月前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
137 17
|
8月前
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
197 28
|
9月前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
189 20
|
11月前
|
网络安全 Python
Python编程--目标IP地址段主机指定端口状态扫描
Python编程--目标IP地址段主机指定端口状态扫描
150 1
|
11月前
|
缓存 网络协议 Linux
Python渗透测试之ARP毒化和协议应用
Python渗透测试之ARP毒化和协议应用
164 0

推荐镜像

更多