IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Scapy 发送带数据的TCP报文 wireshark抓不到scapy发出的包 -> 正文阅读

[网络协议]Scapy 发送带数据的TCP报文 wireshark抓不到scapy发出的包

scapy的发送包函数

scapy中,将Ether()看作是第二层,IP()看作是第三层

  • send()是发送第三层的包,也就是IP层,会自动处理路由和第二层
  • sendp()是发送第二层的包,需要自己选择正确的接口和正确的链路层协议 sendp(Ether()/IP(dst=“1.2.3.4”,ttl=(1,4)), iface=“eth1”)
  • sr() 函数用于发送数据包和接收答案。该函数返回几个数据包和答案,以及未应答的数据包。
  • sr1() 是一个变体,它只返回一个响应发送的数据包(或数据包集)的数据包。数据包必须是第 3 层数据包(IP、ARP 等)
  • srp() 对第 2 层数据包(以太网、802.3 等)执行相同的操作。如果没有响应,则在达到超时时将分配一个 None 值。

send函数和sendp是不接收返回包的,如果想要得到返回包,可以使用sr或sr1

构造带数据的TCP数据包

#想要传输的1440字节的数据
data = b'\x00\x00\xa6\x89\xe5\x91f\xed\xbb\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00H\x006\n\x00\x00p\x00\x00\x00\x00\x00\x00\x00\xfb\xa3h\xab"\x9e\xd7\x01\xa4s\xbd\xf8+\x9e\xd7\x01\xfb\xa3h\xab"\x9e\xd7\x01\xfb\xa3h\xab"\x9e\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00F\x00\x00\x00\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x00\x00y|\x8f\x0c!\x9e\xd7\x01\xaf\xcf\xe2\xf4+\x9e\xd7\x01y|\x8f\x0c!\x9e\xd7\x01y|\x8f\x0c!\x9e\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x04\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x04\x00\x06\x00\x00\x00\x00.\x00.\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x008\x00~\x0f \x9e\xd7\x01\xc0G\x1dp0\x9e\xd7\x018\x00~\x0f \x9e\xd7\x018\x00~\x0f \x9e\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x10\x00\x00\x00A\x00\x00\x00\x10\x00_\x00O\x008\x00W\x00D\x007\x00~\x00N\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\xf5\x13\x02\x00\x00\x00\x00.\x00m\x00o\x00z\x00i\x00l\x00l\x00a\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00Y\xfe\xb1\xcb\x07\xd6\x01\x00Y\xfe\xb1\xcb\x07\xd6\x01\x00Y\xfe\xb1\xcb\x07\xd6\x01\x00Y\xfe\xb1\xcb\x07\xd6\x01\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00>\x00\x00\x00\x10\x00_\x00O\x00W\x007\x009\x00C\x00~\x00O\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00G\x00\x00\x00\x00\x00\x00\x00.\x00b\x00a\x00s\x00h\x00_\x00l\x00o\x00g\x00o\x00u\x00t\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00Y\xfe\xb1\xcb\x07\xd6\x01\x87\xf9\n\xc3!\x9e\xd7\x01\x00Y\xfe\xb1\xcb\x07\xd6\x01\x00Y\xfe\xb1\xcb\x07\xd6\x01\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x02\x00\x00\x00\x1a\x00\x00\x00>\x00\x00\x00\x10\x00_\x00O\x00U\x00L\x00H\x00N\x00~\x00L\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x00\x00\x00\x00.\x00b\x00a\x00s\x00h\x00_\x00p\x00r\x00o\x00f\x00i\x00l\x00e\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00\x00Y\xfe\xb1\xcb\x07\xd6\x01\x98 \x0b\xc3!\x9e\xd7\x01\x00Y\xfe\xb1\xcb\x07\xd6\x01\x00Y\xfe\xb1\xcb\x07\xd6\x01\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00\x00>\x00\x00\x00\x10\x00_\x00J\x002\x006\x005\x00M\x00~\x00E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x00\x00\x00.\x00b\x00a\x00s\x00h\x00r\x00c\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00\xfc\xc4\xb3\xd8!\x9e\xd7\x0195\xdd\x840\x9e\xd7\x01\xfc\xc4\xb3\xd8!\x9e\xd7\x01\xfc\xc4\xb3\xd8!\x9e\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x0c\x00\x00\x00;\x00\x00\x00\x10\x00_\x00V\x00A\x00X\x00D\x009\x00~\x009\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce/\x01\x00\x00\x00\x00\x00.\x00c\x00a\x00c\x00h\x00e\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00)Z\xe6\xc2!\x9e\xd7\x01G\xeb\xda\x840\x9e\xd7\x01)Z\xe6\xc2!\x9e\xd7\x01)Z\xe6\xc2!\x9e\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\n\x00\x00\x00>\x00\x00\x00\x10\x00_\x00A\x00X\x00O\x00Q\x00W\x00~\x00J\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\xbf\x00\x04\x00\x00\x00\x00.\x00d\x00b\x00u\x00s\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00\xdb\x14\xfe\xd2!\x9e\xd7\x01\xb8\x17\x8e\x0b/\x9e\xd7\x01\xdb\x14\xfe\xd2!\x9e\xd7\x01\xdb\x14\xfe\xd2!\x9e\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x0e\x00\x00\x00@\x00\x00\x00\x10\x00_\x00J\x00U\x00G\x00E\x00N\x00~\x00F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf/\x01\x00\x00\x00\x00\x00.\x00c\x00o\x00n\x00f\x00i\x00g\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\xd22\x15\xc3!\x9e\xd7\x01Sa4\xc4!\x9e\xd7\x01\xd22\x15\xc3!\x9e\xd7\x01\xd22\x15\xc3!\x9e\xd7\x016\x01\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x02\x00\x00\x00\x1a\x00\x00\x00A\x00\x00\x00\x10\x00_\x00V\x007\x000\x002\x00J\x00~\x00H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4/\x01\x00\x00\x00\x00\x00.\x00I\x00C\x00E\x00a\x00u\x00t\x00h\x00o\x00r\x00i\x00t\x00y\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x00\x00\x00\xce\xed\x19\xc3!\x9e\xd7\x01\xd7\xd9\xd9\x840\x9e\xd7\x01\xce\xed\x19\xc3!\x9e\xd7\x01\xce\xed\x19\xc3!\x9e\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x0c\x00\x00\x00?\x00\x00\x00\x10\x00_\x00V\x00Q\x00H\x00T\x006\x00~\x00E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xbf\x00\x04\x00\x00\x00\x00.\x00l\x00o\x00c\x00a\x00l\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x98\'\\\xc3!\x9e\xd7\x01\x98\'\\\xc3!\x9e\xd7\x01\x98\'\\\xc3\x00\x00\x0c\x06\x00\x00\x06\x00\x00\x00\x90\x05\x00\x00\x00\x00\x00\x00\xd5\xca\x05\x00\x87X\xb2+n\x05\x00\x00'
#用来占位的空20字节数据
a=bytes(20)
data=a+data
#创建TCP数据包
l_tcp=TCP(data)
#调用方法改TCP包中的参数
l_tcp.sport=445
#组合成新的包 类似IP()/TCP()的形式
p=IP(dst="192.168.113.128")/l_tcp
#使用sr1函数发送包,src接受返回包
rec=sr1(p)
#详细展示rec返回包
rec.show2()

data的长度是1440,也就是数据的长度,如果直接用TCP(data)来构建数据包,会发现构成的包的payload只有1420的长度,因为TCP()方法会将传进去的data的前20个字节作为自己sport、dport、seq、ack等标志位的参数,所以要先创建空20字节的数据段放在data前面,再进行创建.创建完成后,再分别调用标志位进行更改

数据包的构建基础的是new_package=IP()/TCP()
每一层里都可以通过类似sport=1526的定义确定详细参数
也可以分别定义IP层和TCP层 用 / 进行连接
如果传输数据时写成IP()/TCP()/data的形式,则在wireshark中显示的数据包就不是TCP格式,而是NBSS格式

Wireshark抓不到scapy发出的包

1.确定发送的函数对不对,我一开始用sendp,mac地址什么都是空的,如果是想发tcp还是用从三层开始的函数

2.将一个从网络上sniff的包保存起来,然后重新发送,也是我干过的,收到的tcp包,保存为pcap,然后读取发送,wireshark抓不到

3.将准备发的数据包保存起来,然后用wireshark查看,有什么问题,保存的方法是wrpcap(“Packages/testp.cap”, p) p为构建的数据包

4.从最基础的报文开始,比如先发个IP(),设定一下地址,能成功了再慢慢加参数

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 11:06:18  更:2021-09-08 11:07:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/21 21:52:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码