- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你好,我一直在努力研究 Scapy 数据结构,我的意思是,数据包的存储方式和访问方式。
因此,我不想仅仅使用 sintax 并依赖它,而是想做一些研究,以便更好地了解并熟悉其背后的内容。
我看到它是字典的字典,但不是这本字典是由什么组成的。
我遇到了我认为它背后的结构,如果我错了,我希望你能纠正我,但我认为这是有道理的:一个对象字典,其中每个对象都是一个 TCP/IP 层。
这样一切都有意义(除非我没有 Ether 中的有效载荷,它会在 IP 之后和 IP 中的有效载荷,这将是 TCP 之后的一切)
无论如何,我认为这将有助于阐明 scapy 结构,尽管我知道它不是 100% 准确:
#Scapy
class Ether:
def __init__(self,dst='ff:ff:ff:ff:ff:ff',src='00:00:00:00:00:00',type=0):
self.dst=dst
self.src=src
self.type=type
class IP:
def __init__(self,version=4,ihl=None,tos=0,leng=None,idd=1
,flags=None,frag=0,ttl=64,proto=06,chksum=None,src='127.0.0.1',dst='127.0.0.1'):
self.version = version
self.ihl = ihl
self.tos = tos
self.leng = leng
self.idd = idd
self.flags = flags
self.frag = frag
self.ttl = ttl
self.proto = proto
self.chksum = chksum
self.src = src
self.dst = dst
class TCP:
def __init__(self,sport=21,dport=80,seq=0,ack=0,dataofs=None,reserved=0
,flags=0,window=8192,chksum=None,urgptr=0,options=0,payload=''):
self.sport=sport;
self.dport=dport;
self.seq=seq
self.ack=ack
self.dataofs=dataofs
self.reserved=reserved
self.flags=flags
self.window=window
self.chksum=chksum
self.urgptr=urgptr
self.options=options
self.payload=payload
pkt1 = {'Ether':Ether(src='ff:aa:bb:aa:dd:aa'),'IP':IP(src='192.168.1.10',dst='192.168.1.1')}
pkt2 = {'IP':IP(dst='8.8.8.8'),'TCP':TCP(dport=80)}
print pkt1['IP'].src
pkts = []
pkts.append(pkt1)
pkts.append(pkt2)
for pkt in pkts:
print pkt['IP'].dst
print pkts[0]['Ether'].src
有这样的输出:
GET / HTTP/1.1
192.168.1.1
8.8.8.8
ff:aa:bb:aa:dd:aa
希望这对您有所启发,您可以纠正我的错误。
最佳答案
从 this article 读取:
Scapy uses Python dictionaries as the data structure for packets. Each packet is a collection of nested dictionaries with each layer being a child dictionary of the previous layer, built from the lowest layer up. Each field (such as the Ethernet
dst
value or ICMPtype
value) is a key:value pair in the appropriate layer. These fields (and nested layers) are all mutable so we can reassign them in place using the assignment operator.
关于python - 了解 Scapy 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30456789/
我使用 Scapy 创建一个初始 OpenVPN 数据包并将其发送到 OpenVPN 服务器(作为客户端)。数据包的 OpenVPN 部分我只是从旧的捕获连接中重用,但它在这里无关紧要。 事情是,我添
我在使用 Scapy 进行 TCP 握手时遇到问题。我的 Scapy 代码正在发送 SYN 数据包。目标正在使用 SYN/ACK 数据包进行响应。我可以在 tcpdump 中看到 SYN/ACK 数据
我正在查看一个需要制作 S1 应用程序协议(protocol) (S1AP) 数据包的项目。它用于 4G LTE 网络的 eNodeB 和 MME 之间。 S1AP 基于 IP 并由 Steam 控制
我尝试导入 scapy.all,但出现“wpcap.dll”不存在的错误。为什么会这样?我确定我正确下载了所有内容。我将所有内容保存到一个名为 scapy 的文件夹中。我从模块 ctypes 得到了一
如果我生成一个没有任何上层有效载荷的以太网帧并使用 sendp() 在第二层发送它,那么我会收到 "Mac address to reach destination not found. Using
I'm new to scapy and I'm trying to implement a protocol.Within this protocol a type, lets call it
我在 Windows 7 和 Fedora 机器上都安装了 scapy。但是,contrib 包没有安装(或者至少,它没有出现在我的 site-packages/scapy 包下。我怎样才能安装它?
我只是想在scapy中创建一个以eg开头的数据包 数据包 = RadioTap()/Dot11()/Dot11ACK() packet.show() 给了我这个错误。我无法发送任何没有 RadioTa
如何使用 scapy 创建一组具有递增有效负载的数据包?例如,第一个数据包的有效负载(数据)必须为 1,第二个必须为 2,依此类推。 我试过这个: >>> pkt=(Ether(dst='00:01:
我想知道如何验证从Scapy的sr1()函数接收到的数据包包含TCP层,以便对TCP标志进行一些处理。 最佳答案 您有两个选择,in运算符是一个。 >>> TCP in pkt True >>> if
我正在尝试使用Scapy学习一些数据包生成。看起来很酷。根据一些文档,我正在这样做: l3=IP(dst="192.168.0.1", src="192.168.0.2", tos=(46 ", li
我需要发送格式错误的以太网帧以进行测试。我已禁用 Rx 和 Tx 校验和的卸载: root@T60:~# ethtool --show-offload eth0 Features for eth0:
如何使用 scapy 更改数据包数据? 我尝试使用sniff(),然后send()编辑的数据包,但它不起作用,因为原始数据包已经到达目的地。 最佳答案 “但是它不会工作,因为原始数据包已经到达目的地。
我在 Ubuntu 16.04 中运行 sacpy 2.4。我发现基本数据包(Eth/IP/UDP 或 Eth/IP/TCP)wireshark 经常标记失败的帧检查序列。 经过调查,我发现“损坏的数
Scapy 文档给出了以下 ARP 缓存中毒的例子: send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client)) 问
背景: 我正在使用 scapy 测试一个网络设备,该设备可以通过交换源/目标 MAC、IP 地址和第 4 层端口号来选择性地环回数据包。可以为 layer_2_only 选择交换, layers_2_
如果我使用 sr1 为 www.google.com 发送 DNSQR,我会收到几个 DNSRR(s) 作为回复,例如(使用 ans[DNSRR].show() 完成): ###[ DNS Resou
我想将我的数据包发送到一个 UDP dst 端口号并通过 eth0 接口(interface)发送(如果 scapy 直接处理我的 layer2,那么 eth0 不需要作为参数给出) 最佳答案 使用
我如何计算我使用的捕获的数据包数量 packets = sniff(filter='udp and host fe80::xx:xx:xx:xx',count=0) 功能?这可能吗? 我实际上一直在尝
我正在使用 F5 Networks Big-IP 产品,该产品附加了一个自定义以太网 II 尾帧以进行调试。我正在尝试使用 Scapy 为这个预告片绑定(bind)一个新图层,但我无法这样做。 我可以
我是一名优秀的程序员,十分优秀!