diff --git a/scapy/layers/smb.py b/scapy/layers/smb.py index cf2ee2e868a..5cf0f2f5b20 100644 --- a/scapy/layers/smb.py +++ b/scapy/layers/smb.py @@ -943,6 +943,10 @@ class NETLOGON_LOGON_QUERY(NETLOGON): LEShortEnumField("OpCode", 0x7, _NETLOGON_opcodes), StrNullField("ComputerName", ""), StrNullField("MailslotName", ""), + ConditionalField( + ByteField("MailslotPad", default=0x00), + lambda pkt: len(pkt.MailslotName) % 2 != 0 + ), StrNullFieldUtf16("UnicodeComputerName", ""), FlagsField("NtVersion", 0xB, -32, _NV_VERSION), XLEShortField("LmNtToken", 0xFFFF), diff --git a/test/scapy/layers/ldap.uts b/test/scapy/layers/ldap.uts index a4d1892e909..9560c14a9d2 100644 --- a/test/scapy/layers/ldap.uts +++ b/test/scapy/layers/ldap.uts @@ -215,3 +215,12 @@ pkt = NETLOGON(b'\x13\x00\\\x00\\\x00D\x00C\x001\x00\x00\x00\x00\x00D\x00O\x00M\ assert pkt.NtVersion == 1 assert pkt.UnicodeLogonServer == r"\\DC1" assert pkt.UnicodeDomainName == "DOMAIN" + += Dissect NETLOGON_LOGON_QUERY - V1+V5+V5EX_WITH_IP + +pkt = NETLOGON(b'\x07\x00PC-001\x00\\MAILSLOT\\NET\\GETDC362\x00P\x00C\x00-\x000\x000\x001\x00\x00\x00\x0b\x00\x00\x00\xff\xff\xff\xff') + +assert pkt.ComputerName == b"PC-001" +assert pkt.MailslotName == b"\\MAILSLOT\\NET\\GETDC362" +assert pkt.NtVersion == 0x0b +assert pkt.UnicodeComputerName == "PC-001"