如何解压数据包的 wlan 层
How to unpack a packets' wlan layer
所以我得到了当前的原始套接字:
from socket import socket, AF_INET, SOCK_RAW, SOCK_STREAM
from struct import unpack
from binascii import hexlify
rawsocket = socket(AF_INET, SOCK_RAW)
rawsocket.bind(("192.168.2.4", 8000))
while True:
request = rawsocket.recvfrom(2048)
#this part is for the sake of the question
if len(request) is not 0:
print(request)
request = ""
如您所见,它在端口 8000
上等待 192.168.2.4
上的传入数据包。我可以成功到达这个端口。我查看了 https://docs.python.org/3.4/library/struct.html 以了解我必须如何理解第一层 (wlan),但我不知道如何理解。
我试过谷歌搜索但没有成功,如果你知道如何解压这一层,你能告诉我你是怎么知道你这样解压的吗?
我知道我必须做这样的事情
header = request[0][0:x] #But how for must x go for the wlan layer?
hd = unpack("y", header) #But what fmt must y be? how do I know?
编辑:
我知道y
必须以!
开头,我也知道x
必须是该层的总字节数:(我是不是右转方向)
试试这个
header = request[0][0:14]
hd = unpack("!6s6s2s", header)
dest_addr = hexlify(hd[0])
source_addr = hexlify(hd[1])
type = hexlify(hd[2])
print "destination: {0}".format(dest_addr)
print "source: {0}".format(source_addr)
print "destination: {0}".format(type)
hd 应该是 [Dest Addr, Source Addr, Type/Opcode]
的 3 元素列表
所以我得到了当前的原始套接字:
from socket import socket, AF_INET, SOCK_RAW, SOCK_STREAM
from struct import unpack
from binascii import hexlify
rawsocket = socket(AF_INET, SOCK_RAW)
rawsocket.bind(("192.168.2.4", 8000))
while True:
request = rawsocket.recvfrom(2048)
#this part is for the sake of the question
if len(request) is not 0:
print(request)
request = ""
如您所见,它在端口 8000
上等待 192.168.2.4
上的传入数据包。我可以成功到达这个端口。我查看了 https://docs.python.org/3.4/library/struct.html 以了解我必须如何理解第一层 (wlan),但我不知道如何理解。
我试过谷歌搜索但没有成功,如果你知道如何解压这一层,你能告诉我你是怎么知道你这样解压的吗?
我知道我必须做这样的事情
header = request[0][0:x] #But how for must x go for the wlan layer?
hd = unpack("y", header) #But what fmt must y be? how do I know?
编辑:
我知道y
必须以!
开头,我也知道x
必须是该层的总字节数:(我是不是右转方向)
试试这个
header = request[0][0:14]
hd = unpack("!6s6s2s", header)
dest_addr = hexlify(hd[0])
source_addr = hexlify(hd[1])
type = hexlify(hd[2])
print "destination: {0}".format(dest_addr)
print "source: {0}".format(source_addr)
print "destination: {0}".format(type)
hd 应该是 [Dest Addr, Source Addr, Type/Opcode]
的 3 元素列表