dbus-pcap: Handle UNIX_FD and Array of UINT32

1) This message captured on a desktop system caused an error in
AlignedStream.align, so lines 169 and 170 are added to fix the error:

(CookedMessage(header=CookedHeader()]), body=['org.freedesktop.
NetworkManager.IP6Config', [['Addresses', [[[x, x, ..., x], x, ... ],
['AddressData', [[['address', 'some ipv6 addr'], ['prefix', x]], ...],
['Routes', [[[x, x, x, x, x, x, x], x, ...],
['RouteData', [[['dest', 'some ipv6 addr'], ['prefix', x], ['metric',
 x]], ['next-hop', 'some ipv6 address'], ['metric', x]], ]]]]]]]])

2) This message captured on a desktop system contains a UNIX_FD, line
128 is added to make the parse process pass:

(CookedMessage(header=CookedHeader(fixed=FixedHeader(endian=108,
type=2, flags=1, version=1, length=8, cookie=3541), fields=
[Field(type=<MessageFieldType.REPLY_SERIAL: 5>, data=40),
 Field(type=<MessageFieldType.DESTINATION: 6>, data=':1.67459'),
 Field(type=<MessageFieldType.SIGNATURE: 8>, data='hb'),
 Field(type=<MessageFieldType.UNIX_FDS: 9>, data=1),
 Field(type=<MessageFieldType.SENDER: 7>, data=':1.1')]), body=[0, 0])

Change-Id: I02ba32b026ebf5346937aa8b264338dd91d91b98
Signed-off-by: Sui Chen <suichen6@gmail.com>
diff --git a/dbus-pcap/dbus-pcap b/dbus-pcap/dbus-pcap
index 3c797e0..eea8ba4 100755
--- a/dbus-pcap/dbus-pcap
+++ b/dbus-pcap/dbus-pcap
@@ -123,6 +123,7 @@
     DBusType.STRUCT.value : TypeProperty(DBusType.STRUCT, None, 8),
     DBusType.VARIANT.value : TypeProperty(DBusType.VARIANT, None, 1),
     DBusType.DICT_ENTRY.value : TypeProperty(DBusType.DICT_ENTRY, None, 8),
+    DBusType.UNIX_FD.value : TypeProperty(DBusType.UINT32, None, 8),
 }
 
 def parse_signature(sigstream):
@@ -163,6 +164,8 @@
         prop = TypePropertyLookup[tc.type.value]
         if prop.field.value in DBusTypeCategory.STRING.value:
             prop = TypePropertyLookup[prop.nature.value]
+        if prop.nature == DBusType.UINT32:
+            prop = TypePropertyLookup[prop.nature.value]
         advance = (prop.nature - (self.offset & (prop.nature - 1))) % prop.nature
         _ = bytes(islice(self.stream, advance))
         self.offset += advance