【发布时间】:2019-09-25 23:32:11
【问题描述】:
我让这个程序运行以“嗅探”我网络上的流量,但我遇到的第一个问题是它以一些格式化的代码(如十六进制)提供给我。所以我尝试转换代码,但它不起作用,因为它是一个元组,所以我将元组转换为字符串。我得到这个错误代码:
$ python sniffer.py
Traceback (most recent call last):
File "sniffer.py", line 24, in <module>
output1 = convertTuple(output)
File "sniffer.py", line 8, in convertTuple
output = functools.reduce(operator.add, (tup))
TypeError: can't concat tuple to bytes
这是我的完整代码:
import binascii
import struct
import socket
import functools
import operator
def convertTuple(tup):
output = functools.reduce(operator.add, (tup))
return output
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
s = socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_IP)
s.bind(("192.168.2.16",80))
s.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)
s.ioctl(socket.SIO_RCVALL,socket.RCVALL_ON)
while True:
output = s.recvfrom(800)
output1 = convertTuple(output)
bytearray.fromhex(output1).decode()
print(output1)
【问题讨论】:
-
顺便说一句:
functools.reduce(operator.add, (tup))不要这样做,效率非常低。
标签: python python-3.x sockets networking