我试图从process()中调用two_byte_proc(payload,offset),但它不会写入输出文件out_buf。偏移量或有效负载的输出可能包含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()
答案 0 :(得分: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))
我怀疑offset
和payload
是长度为>的字符串。 0或无,在这种情况下可以进一步简化为:
if offset and payload:
out_buf.write(two_byte_proc(payload, offset))
最后但同样重要的是,您需要确保two_byte_proc
(或编辑后four_byte_proc
)实际返回要写入out_buf的内容。例如,如果它返回的是一个空字符串,您将看不到任何结果。