Scapy之ARP询问
引言
校园网中,有同学遭受永恒之蓝攻击,但是被杀毒软件查下,并知道了攻击者的ip也是校园网。所以我想看一下,这个ip是PC,还是路由器。
在ip视角,路由器和pc没什么差别。
实现
首先是构造arp报文,进行广播
send.py
from scapy.all import *
myarp = ARP()
myarp.psrc = '172.17.132.176'
myarp.pdst = '172.17.174.73'
myarp.op = 1
while True:
send(myarp)
构造arp报文,填写我的本机ip172.17.132.176 ,释放永恒之蓝的ip 172.17.174.73 ,op 为1代表查询,为2代表回应,这里我们是查询。
攻击者终端收到arp请求后,会相应arp,里面携带有攻击者的mac
receive.py
from scapy.all import *
while True:
PTKS = sniff(store = 1,timeout = 0.1)
PTKS.show()
可以从终端看到打印的arp回应,携带有mac。如下:

查询mac为什么设备
将以上mac在 https://mac.51240.com/ 输入查询,可得到厂商,基本就知道终端为路由器或者PC
例如:

进阶
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
def scapy_arp_request(ip_address , ifname = 'eth0',queue = None):
result_raw = srp(Ether(dst = 'FF:FF:FF:FF:FF:FF')#srp 二层帧
/ARP(op = 1,hwdst = '00:00:00:00:00:00',pdst = ip_address),#ARP询问操作,op置1
timeout = 1,#等待1s
iface = ifname,#二层一定要填写接口
verbose = False)#关闭发送数据提示信息
#result_raw接收到的数据如:(<Results: TCP:0 UDP:0 ICMP:0 Other:1>, <Unanswered: TCP:0 UDP:0 ICMP:0 Other:0>)
#[0]为相应的数据,[1]为未相应的数据(等待1s,所以有可能会产生未响应的数据)
try:
result_list = result_raw[0].res #把响应的数据包对,产生为清单
#result_list数据为展开的信息,如:[(<Ether dst=FF:FF:FF:FF:FF:FF type=0x806 |<ARP op=who-has hwdst=00:00:00:00:00:00 pdst=172.17.174.73 |>>, <Ether dst=e0:3f:49:a1:99:6c src=58:69:6c:5e:70:ec type=0x806 |<ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=is-at hwsrc=58:69:6c:5e:70:ec psrc=172.17.174.73 hwdst=e0:3f:49:a1:99:6c pdst=172.17.171.178 |<Padding load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |>>>)]
#可以看到,result_list中只有一组数据,下标为0。在这一组里,[1]代表接收到的包,[0]代表发送的数据包
#[2]ARP头部字段的['hwsrc']字段,作为返回值返回
if queue == None:
#return result_list[0][1][1].fields['hwsrc']
return result_list[0][1].getlayer(ARP).fields['hwsrc']
else:
queue.put((ip_address,result_list[0][1].getlayer(ARP).fields['hwsrc']))
except:
return
if __name__ == "__main__":
import sys
print(scapy_arp_request(sys.argv[1],sys.argv[2]))
执行程序,后面跟着参数 需要查询mac的ip ,网口名称 ,即可打印目标mac
send()函数将会在第3层发送数据包。也就是说它会为你处理路由和第2层的数据。sendp()函数将会工作在第2层。选择合适的接口和正确的链路层协议都取决于你。
sr()函数是用来发送数据包和接收应答。该函数返回一对数据包及其应答,还有无应答的数据包。srp()则是使用第2层报文(以太网,802.3等)。
参考
https://zhuanlan.zhihu.com/p/34843290
https://github.com/Larryxi/Scapy_zh-cn
Scapy之ARP询问的更多相关文章
- ARP 询问之 校级路由器的猫腻
前情 我为什么选定 172.17.174.73 这个 ip 来进行测试.戳前情 Scapy之ARP询问 前言 在一般家用路由器局域网下,进行 arp 广播,说:我是192.168.1.100,你们谁的 ...
- python通过scapy编写arp扫描器
多网卡的情况下发送二层包需要配置网卡 三层包不需要配置接口发包方法: sr() 发送三层数据包,等待接收一个或者多个数据包的响应 sr1() 发送三层数据包,只会接收一个数据包的响应 srp() 发送 ...
- Python黑帽编程 3.1 ARP欺骗
Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...
- Python黑客编程ARP欺骗
Python灰帽编程 3.1 ARP欺骗 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据 ...
- IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...
- (网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...
- 67.ARP协议
ARP是地址解析协议Address Resolution Protocol的缩写.是一个位于TCP/IP协议栈中的低层协议,负责将某个IP地址解析程对应的MAC地址.在局域网中,网络实际传输的是“帧” ...
- ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者
[故障原理] 要了解故障原理,我们先来了解一下ARP协议. 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议对网络安全具有重要的意义.通过伪造IP地址和M ...
- arp:地址解析协议(Address Resolution Protocol)(来自维基百科)
地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I ...
随机推荐
- PHP+MySQL实现海量数据导入导出的总结:is_numbric函数的坑
前段时间有个需求:将生产环境的部分数据转移到测试服务器进行测试.由于只需要导入特定账号的数据,我就想着将写个脚本,将数据组装成sql语句导出为sql文件,然后转移到测试服务器,导入到MySQL中.想象 ...
- Ubuntu18.04编译S3的Linux SDK(Zeta)
按照S3官方Wiki(http://www.sochip.com.cn/s3)的陈述,推荐使用Ubuntu16.04作为Host端系统,笔者是一名乐于并热衷于尝鲜的搬砖工,于是,尝试在最新的18.04 ...
- linux ssh 连接设置
! 本文编辑中 centos ssh 无法连接
- 3992: [SDOI2015]序列统计
3992: [SDOI2015]序列统计 链接 分析: 给定一个集和s,求多少个长度为n的序列,满足序列中每个数都属于s,并且所有数的乘积模m等于x. 设$f=\sum\limits_{i=0}^{n ...
- IDEA中java文件的左下角有个像乐符一样的J符号
- java多线程系列(二)---对象变量并发访问
对象变量的并发访问 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我 ...
- 使用web api开发微信公众号,调用图灵机器人接口(二)
此文将分两篇讲解,主要分为以下几步 签名校验; 首次提交验证申请; 接收消息; 被动响应消息(返回XML); 映射图灵消息及微信消息; 此篇为第二篇. 被动响应消息(返回XML) 上一篇中,我们已经可 ...
- django套用模板404报错小结
首先,我的项目名是MyProject.每次当我运行,然后测试页面的时候,总是弹出 其实根据stackoverflow上某大佬的解释大意就是在setting.py和urls.py的匹配上出了问题 此处放 ...
- 取消Ubuntu18.04开机输入密码登录
设置>>详细信息>>用户>>解锁>>(输入密码进行认证)>>{自动登录}选项打开
- Idea for Mac 快捷键(快捷键选择:Mac OS X 10.5+)
删除一行 command + delete 查找 command + f 查找替换 command + r 复制一行 comma ...