因为是ARP协议(Address Resolution Protocol,地址解析协议),ARP只能在局域网内使用,如果熟悉该编程,不仅可以对包的结构更熟练,还能进行某些攻击。

代码区:

from scapy.all import * #主要是用来构造包(Windows系统需要安装scapy模块,如果不懂安装可以看https://blog.csdn.net/q759451733/article/details/84038114)

def scapy_arp_request(ip_address):#定义函数

packet = Ether(dst = 'FF:FF:FF:FF:FF:FF')/ARP(op = 1,hwdst = '00:00:00:00:00:00',pdst = ip_address)

#构造ARP包,dst是广播地址,op = 1 和op = 'who-has'是一个意思,意思是发一个广播问谁是XXX(IP地址),告诉发送者。hwdst是目的MAC地址,由于不知道对方的ACM地址,所以设置为全0。pdst是目的地址。(如图一所示)

packet.show()#展现自己构造的包,可有可无,可以更熟悉哪些参数可以修改

result_raw = srp(packet,timeout=2,verbose = False)#发送二层数据包,并且等待响应,timeout定义超时的时间,verbose如果不将该参数定义为False,那么屏幕将会打印一些不相关的字符串,定义为False之后,就可以打印自己想看到的字符串

result_list = result_raw[0].res#表示接收到的数据包的第0层里面的res全部赋值给result_list(如图二所示)

return result_list[0][1].getlayer(ARP).fields['hwsrc']#返回目的MAC地址,在第0层中的第1层,并获取ARP层里面的hwsrc(MAC地址)(如图三所示)

if __name__ == '__main__':
    print(scapy_arp_request('192.168.1.1'))#传参进去,然后打印出来

(图一) 2 是目的地址的MAC地址。

(图二)这就是没有过滤后接收到的数据包。

(图三)

下图便是用wireshark抓到的包:

总结:如果有很多不明白的地方都是可以调试来了解,这样有助于自己对代码和数据包有更深的理解,虽然代码量很少,但是掌握更深内涵还是需要一番功夫。

如果有什么讲解得不好的地方,或者想问的问题都可以在下方评论区评论哟!

Python之ARP协议探测MAC地址相关推荐

  1. 利用ARP协议查询服务器的MAC,HTTP报文格式又是怎样的 如何使用ARP协议查询Mac地址...

    浏览器从地址栏得到服务器 IP,接着构造一个 HTTP 报文,其中包括: 请求行包含请求方法.URL.协议版本 请求报头(Request Header):由 "关键字: 值"对组成 ...

  2. arp协议获取mac地址,同网段和不同网段。

    arp协议属于OSI模型第二层(数据链路层) 计算机实现网络通信在数据链路层发送数据帧(链路层数据包)实现通讯.而数据帧要发送到目标计算机需要知道,发送端的ip地址和mac地址还有接收端的ip地址和m ...

  3. HCIA-第二节课学习笔记总结(ARP协议与IP地址)

    "ping"---检测网络连通性的工具(ICMP协议) 上图是因特网包探索器,用于测试网络连接量的程序.Ping发送一个ICMP:回声请求消息给目的地并报告是否收到所希望的ICMP ...

  4. ios根据ARP表获取mac地址

    ios根据ARP表获取mac地址 #ios -(NSString*) getMacAddress:(NSString *)strIP {NSString *macAddr = nil;const ch ...

  5. 《每日一记 》网络篇-ARP协议与IP地址MAC地址

    一.ARP/RARP协议 1.地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的AR ...

  6. 网络协议 一 MAC地址、IP地址、子网掩码

    目录 MAC地址(40-55-82-0A-8C-6D) MAC地址的表示格式(Windows.Linux) MAC地址操作(ipconfig /all) MAC地址的获取(arp -a) ARP(Ad ...

  7. 关于局域网ARP攻击,MAC地址欺骗的解决方法

    最近很多网络反映频繁断线并且网速较慢,已经确认:这是由于一种名为"网吧传奇杀手Trojan.PSW.LMir.qh " 的病毒爆发引起的,现我们发布查找病毒以及基本解决办法:    ...

  8. TCP/IP协议专栏——MAC地址详解——网络入门和工程维护必看

    以太帧格式 前导同步符:共8字节,由7个字节的前同步信号和一个分界符开始字节构成. DA/SA:共6个字节,前3个字节代表供应商代码,后3个字节代表厂商序列号. TPID:标记协议标识符,2个字节,值 ...

  9. Winpcap网络编程九之Winpcap实战,ARP协议获得MAC表及主机通信

    大家好,本次我们需要完成的任务是: 完成两台主机之间的数据通信(数据链路层) 仿真ARP协议获得网段内主机的MAC表 使用帧完成两台主机的通信(Hello! I'm -) 声明:本文章的目的是为大家的 ...

最新文章

  1. GitHub上整理的一些工具【转载】
  2. 数据库专家Michael Stonebraker获得2014年图灵奖
  3. MySQL命令行下执行.sql脚本详解
  4. Linux C :线程操作和线程同步的多线程并发编程
  5. 你知道GNU C 对C语言的扩展吗?
  6. Mybatis(9)Dao实现类和无实现类的执行过程
  7. 快速正确的修改变量的命名和如何正确规范的注释
  8. Python 进阶篇
  9. JAVA后端开发浅谈
  10. zen brush 2 android,zen brush2
  11. euraka 启动报错
  12. 【科研绘图】Adobe illustrator加Origin组合绘图
  13. 计算机的所有符号,电脑上怎么打各种符号
  14. 你有你的计划,世界另有计划这本书 万维钢
  15. 基于在线学习行为的评价模型的设计与实现
  16. Android webview实现QQ一键登录授权
  17. Log4j2配置SMTP邮件实现邮件发送
  18. python手机版下载官方3.4.6,python手机版下载苹果版
  19. for循环中的三语句执行顺序
  20. Fast Furious face detection with OpenCV

热门文章

  1. 图灵C/C++图书阅读路线图
  2. java word 批注_Java 添加、回复、修改(替换)、删除Word批注
  3. 计算机硬盘计入哪个会计科目,电脑加装固态硬盘如何做分录
  4. 搭配Online:瑞幸昔日“盟友”神州优车,与北汽集团达成战略合作
  5. 只要干不死,就往死里干
  6. MATLAB将数据存在TXT文件中
  7. Java web项目如何在服务器上跑起来(有源码)
  8. 【无标题】三星Xpress M2020打印机刷免芯片
  9. 如何将python代码封装成app_python打包成可执行文件app
  10. 深度学习之参数计算(CNN为例)