我使用scapy创建DNS响应并将其传递给LZW以压缩它。压缩后我得到以下列表。
['f', '\xa5', '\x84', '\x00', '\x00', '\x01', '\x00', '\x06', '\x00', '\x04', 264, '\x03', 'w', 268, '\x06', 'g', 'o', 'o', 'g', 'l', 'e', '\x03', 'c', 'o', 'm', 259, 261, '\x01', 267, 269]
列表的值经常超过256。 我怎么能将它完全转换为十六进制字符串或如何将其转换为scapy DNS数据包,以便我可以发送它。 hexilfy和hex不会工作,因为列表中有整数,我已尝试过这两个
答案 0 :(得分:0)
您可以先转换为unicode,然后使用utf-8
编码进行编码,对于转义,int值在列表解析中使用isinstance
:
>>> [unicode(i,'unicode-escape').encode('utf-8') if not isinstance(i,int) else i for i in l]
['f', '\xc2\xa5', '\xc2\x84', '\x00', '\x00', '\x01', '\x00', '\x06', '\x00', '\x04', 264, '\x03', 'w', 268, '\x06', 'g', 'o', 'o', 'g', 'l', 'e', '\x03', 'c', 'o', 'm', 259, 261, '\x01', 267, 269]