-2

我试图从 process() 中调用 two_byte_proc(payload,offset) 但它不写入输出文件 out_buf。offset 或 payload 的输出可能包含 None ,因此应跳过这些迭代并使用下一个数据包重新启动过程功能。

def process():
    pkts = sniff(offline="infile.pcap",filter="tcp")
    out_buf = open("outfile.bin","wb")

    for pkt in pkts:
        offset = hexdump(str(pkt.payload)[:2])
        payload = hexdump(pkt.payload)

        if offset or payload is None:
            pass
        else:
            out_buf.write(two_byte_proc(payload,offset))

process()
4

1 回答 1

4

表达式offset or payload is None总是 True;也许你的意思是:

if offset is None or payload is None:

反而。

如果该表达式为 True,则您“通过”,因此您也可以将其反转:

if offset is not None and payload is not None:
    out_buf.write(two_byte_proc(payload, offset))

我怀疑offsetandpayload是长度 > 0 或 None 的字符串,在这种情况下可以进一步简化为:

if offset and payload:
    out_buf.write(two_byte_proc(payload, offset))

最后但并非最不重要的一点是,您需要确保two_byte_proc(或four_byte_proc在您的编辑之后)实际返回要写入 out_buf 的内容。例如,如果它返回的只是一个空字符串,您将看不到任何结果。

于 2012-07-14T20:41:04.447 回答