Python Socket无线扫描奇怪的输出

时间:2015-12-01 13:39:33

标签: python sockets wireless

我在这里有这个代码:

import socket
raw = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0003))
raw.bind(("mon0", 0x0003))
ap_list = set()
out = open("out.cap", 'w')
while True:
    pkt = raw.recvfrom(2048)[0]
        if pkt[36:42] not in ap_list:
            ap_list.add(pkt[36:42])
            print (pkt)
            out.writelines(str(pkt))

但输出对我来说有点奇怪。如何让人类可读?

输出示例:

b'\x00!c\xf60\xbe\x807s\xa8\xe5@\x08\x00E\x00\x004\xea\xec@\x00$\x06\xd2\xcck\x15mA\xc0\xa8\x00\x0c\x00P\x90\xee\x9dx\xd9E=\xfd;[\x80\x10\x00no\xc0\x00\x00\x01\x01\x08\n)\xa0w\x10\x00\xd6J\xa8'

更新: 使用这个

decoded = pkt.decode("ISO-8859-1")

我已经设法做我需要的但Wirehark不能很好地读取我的输出文件,我还需要从输出中删除无用的数据

一些帮助?

这是新代码:

import socket
import sys

raw = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0003))
raw.bind((sys.argv[1], 0x0003))
ap_list = set()
out = open("out.cap", 'w')
while True:
    pkt = raw.recvfrom(1024)[0]
    if pkt[36:42] not in ap_list:
        ap_list.add(pkt[36:42])
        decoded = pkt.decode("ISO-8859-1")
        print(str(pkt[0:20]).split("'")[1])
        out.writelines(str(decoded) + "\n")

1 个答案:

答案 0 :(得分:0)

在Wireshark中,您应该能够看到正在使用的协议。然后你可以解析它们,例如使用<small class="form-text text-danger" [hidden]="!group.controls[config.name].hasError('required')"></small> <small class="form-text text-danger" [hidden]="!group.controls[config.name].hasError('minlength')"></small> <small class="form-text text-danger" [hidden]="!group.controls[config.name].hasError('maxlength')"></small> 包。                      - John Zwinck