当前位置: 首页 > article >正文

Python嗅探和解析网络数据包

网络工具解释

Scapy是Python2和Python3都支持的库。 它用于与网络上的数据包进行交互。 它具有多种功能,通过这些功能我们可以轻松伪造和操纵数据包。 通过 scapy 模块,我们可以创建不同的网络工具,如 ARP Spoofer、网络扫描仪、数据包转储器等。该模块可用于创建与网络安全相关的更高级的工具。

网络扫描是指扫描我们所连接的整个网络,并尝试找出连接到我们网络的所有客户端。 我们可以使用 IP 和 MAC 地址来识别每个客户端。 我们可以使用 ARP ping 来找出网络中活动的系统。

ARP():该函数在 scapy 模块中定义,允许我们创建 ARP 数据包(请求或响应)。默认情况下,如果我们调用它,它会为我们创建一个 ARP 请求数据包。

import scapy.all as scapy 

request = scapy.ARP() 

现在我们已经创建了一个ARP请求包。程序的输出将是这样的——

rootakali: /Desktop\# python3 networkscanner.py 
ARP who has 0.0 .0 .0 says 192.168 .215 .144 
root@kali: /Desktop\#

show() 方法:该方法与summary() 方法非常相似。它提供了有关数据包的更多详细信息。该函数的用法也与summary()方法非常相似。

import scapy.all as scapy 

request = scapy.ARP() 
print(request.show()) 

rootakali: /Desktop\# python3 networkscanner.py
###[ ARP ]###
hwtype =0x1
ptype  =IPv4
hwilen = None
plen   = None
op     = who-has
hwsrc  =00:0c:29:a5:94:cf
psrc   =192.168.215.144
hwdst  =00:00:00:00:00:00
pdst   =0.0.0.0

None
rootolkali: /Desktop\#

ls() 函数:该方法存在于 scapy 类中。通过使用此方法,我们可以看到可以为特定数据包设置哪些字段。

在我们的示例中,我们将创建一个 ARP 数据包,并在 ls() 函数的帮助下,我们将看到该数据包的可用字段有哪些。

import scapy.all as scapy 

request = scapy.ARP() 
print(scapy.ls(scapy.ARP())) 

root@kali:!/Desktop# pyton3 networkscanner.py
hwtype :XShortField           = 1        (1)
ptype  :XShortEnumField       = 2048     (2048)
hwlen  :FieldLenField         = None     (None)
plen   :FieldLenField         = None     (None)
op     :ShortEnumField        = 1        (1)
hwsrc  :MultipleTypeField     ='ac:2b:6e:2a:e5:ae' (None)
psrc   :MultipleTypeField     ='172.17.222.138' (None)
hwdst  :MultipleTypeField     = None (None)
pdst   :MultipleTypeField     = None (None)
None
root@kali:~/Desktop#
创建网络扫描仪的步骤
  1. 使用 ARP() 方法创建 ARP 数据包
  2. 使用变量设置网络范围。
  3. 使用 Ether() 方法创建以太网数据包。
  4. 使用变量 hwdst 设置要广播的目的地。
  5. 使用“/”组合 ARP 请求数据包和以太网帧。
  6. 将其发送到您的网络并捕获来自不同设备的响应。
  7. 打印响应数据包中的 IP 和 MAC 地址。

下面是Python的实现:

import scapy.all as scapy 

request = scapy.ARP() 

request.pdst = 'x'
broadcast = scapy.Ether() 

broadcast.dst = 'ff:ff:ff:ff:ff:ff'

request_broadcast = broadcast / request 
clients = scapy.srp(request_broadcast, timeout = 1)[0] 
for element in clients: 
	print(element[1].psrc + "	 " + element[1].hwsrc) 

这里 x = 网络范围。例如 x = 192.168.1.1/24、172.16.5.1/16 等

创建 ARP 伪程序

数据包嗅探

查找所有wifi连接设备和断开链接

测试TCP端口

源代码

参阅 1 - 亚图跨际
参阅 2 - 亚图跨际


http://www.kler.cn/news/163147.html

相关文章:

  • 线性回归模型标准公式
  • 解决MySQL字段名与关键字冲突
  • 身份统一管理创新与优化 ——华为云OneAccess应用身份管理服务的2023年
  • cookie总结
  • 什么是自动化测试?什么情况下使用?
  • 【1day】泛微e-office OA系统xml.php 文件 SORT_ID 参数 SQL 注入漏洞学习
  • 计算机基础知识65
  • Linux文件系统与基础IO
  • 【hugging face】bitsandbytes中8 bit量化的理解
  • 在oracle的scn详细说明
  • Kotlin 中密封类、枚举类与密封接口的对比分析
  • Linux——基本指令(一)
  • Nginx按指定格式记录访问日志
  • 联邦多任务蒸馏助力多接入边缘计算下的个性化服务 | TPDS 2023
  • 【LeetCode】28. 找出字符串中第一个匹配项的下标 【字符串单模匹配:KMP算法】
  • Linux设备分类与设备号
  • Django讲课笔记01:初探Django框架
  • 面试宝典之自我介绍
  • 【嵌入式开发 Linux 常用命令系列 4.2 -- .repo 各个目录介绍】
  • 集简云 x 零售企业丨快速集成有赞商城和微盛企微管家,实现私域运营自动化
  • YOLOv8分割训练及分割半自动标注
  • Android MVVM+coroutine+retrofit+flow+hilt
  • LSTM_预测价格问题_keras_代码实操
  • 喜讯:加速度商城系统全系列产品品牌全新升级为Shopfa
  • Java工程找不到javax.xml.bind.annotation包
  • 【flink番外篇】1、flink的23种常用算子介绍及详细示例(3)-window、distinct、join等
  • STM32 map文件详解
  • Kubernetes(K8s 1.27.x) 快速上手+实践,无废话纯享版
  • running小程序重要技术流程文档
  • 【ELK03】ES 索引的Mapping映射详解、数据类型和settings属性设置