From b7d0c0a2dffe7cead0f9fc6bfad8f721b7f64ea2 Mon Sep 17 00:00:00 2001 From: gpotter2 Date: Sat, 14 Oct 2017 15:39:02 +0200 Subject: [PATCH] Python 3: fix MQTT --- scapy/contrib/mqtt.py | 5 +++-- scapy/contrib/mqtt.uts | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/scapy/contrib/mqtt.py b/scapy/contrib/mqtt.py index 5887a730e..e1613e1fa 100644 --- a/scapy/contrib/mqtt.py +++ b/scapy/contrib/mqtt.py @@ -9,6 +9,7 @@ from scapy.fields import FieldLenField, BitEnumField, StrLenField, \ ShortField, ConditionalField, ByteEnumField, ByteField, StrNullField from scapy.layers.inet import TCP from scapy.error import Scapy_Exception +from scapy.compat import orb, chb # CUSTOM FIELDS @@ -25,7 +26,7 @@ class VariableFieldLenField(FieldLenField): else: data.append(val) lastoffset = len(data) - 1 - data = "".join(chr(val | (0 if i == lastoffset else 128)) + data = b"".join(chb(val | (0 if i == lastoffset else 128)) for i, val in enumerate(data)) return s + data if len(data) > 3: @@ -35,7 +36,7 @@ class VariableFieldLenField(FieldLenField): def getfield(self, pkt, s): value = 0 for offset, curbyte in enumerate(s): - curbyte = ord(curbyte) + curbyte = orb(curbyte) value += (curbyte & 127) * (128 ** offset) if curbyte & 128 == 0: return s[offset + 1:], value diff --git a/scapy/contrib/mqtt.uts b/scapy/contrib/mqtt.uts index 0b3f456ee..5d2c9140e 100644 --- a/scapy/contrib/mqtt.uts +++ b/scapy/contrib/mqtt.uts @@ -28,8 +28,8 @@ assert(publish.DUP == 0) assert(publish.RETAIN == 0) assert(publish.len == 10) assert(publish[MQTTPublish].length == 4) -assert(publish[MQTTPublish].topic == 'test') -assert(publish[MQTTPublish].value == 'test') +assert(publish[MQTTPublish].topic == b'test') +assert(publish[MQTTPublish].value == b'test') = MQTTConnect, packet instanciation @@ -42,7 +42,7 @@ assert(c.clientIdlen == 5) s = b'\x10\x1f\x00\x06MQIsdp\x03\x02\x00<\x00\x11mosqpub/1440-kali' connect = MQTT(s) assert(connect.length == 6) -assert(connect.protoname == 'MQIsdp') +assert(connect.protoname == b'MQIsdp') assert(connect.protolevel == 3) assert(connect.usernameflag == 0) assert(connect.passwordflag == 0) @@ -53,7 +53,7 @@ assert(connect.cleansess == 1) assert(connect.reserved == 0) assert(connect.klive == 60) assert(connect.clientIdlen == 17) -assert(connect.clientId == 'mosqpub/1440-kali') +assert(connect.clientId == b'mosqpub/1440-kali') =MQTTConnack, packet instanciation @@ -82,7 +82,7 @@ s = b'\x82\t\x00\x01\x00\x04test\x00' subscribe = MQTT(s) assert(subscribe.msgid == 1) assert(subscribe.length == 4) -assert(subscribe.topic == 'test') +assert(subscribe.topic == b'test') assert(subscribe.QOS == 1)