gpt4 book ai didi

python - 了解 Scapy 数据结构

转载 作者:行者123 更新时间:2023-11-28 17:36:04 24 4
gpt4 key购买 nike

你好,我一直在努力研究 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 ICMP type 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com