From 2c9273eb2ca8d5080ff81273f602547fe649c259 Mon Sep 17 00:00:00 2001 From: lgandx Date: Wed, 5 Feb 2014 22:09:50 -0500 Subject: [PATCH] Added: Analyze mode; Lanman Domain/SQL/Workstation passive discovery. --- RAPLANMANPackets.py | 160 +++++++++++++++++++++++++++++++++++ Responder.py | 202 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 321 insertions(+), 41 deletions(-) create mode 100644 RAPLANMANPackets.py diff --git a/RAPLANMANPackets.py b/RAPLANMANPackets.py new file mode 100644 index 0000000..c0fb385 --- /dev/null +++ b/RAPLANMANPackets.py @@ -0,0 +1,160 @@ +import struct +from odict import OrderedDict + +def longueur(payload): + length = struct.pack(">i", len(''.join(payload))) + return length + +class Packet(): + fields = OrderedDict([ + ("data", ""), + ]) + def __init__(self, **kw): + self.fields = OrderedDict(self.__class__.fields) + for k,v in kw.items(): + if callable(v): + self.fields[k] = v(self.fields[k]) + else: + self.fields[k] = v + def __str__(self): + return "".join(map(str, self.fields.values())) + + +class SMBHeader(Packet): + fields = OrderedDict([ + ("proto", "\xff\x53\x4d\x42"), + ("cmd", "\x72"), + ("error-code", "\x00\x00\x00\x00" ), + ("flag1", "\x08"), + ("flag2", "\x01\x00"), + ("pidhigh", "\x00\x00"), + ("signature", "\x00\x00\x00\x00\x00\x00\x00\x00"), + ("reserved", "\x00\x00"), + ("tid", "\x00\x00"), + ("pid", "\x3c\x1b"), + ("uid", "\x00\x00"), + ("mid", "\x00\x00"), + ]) + +class SMBNegoData(Packet): + fields = OrderedDict([ + ("wordcount", "\x00"), + ("bcc", "\x54\x00"), + ("separator1","\x02" ), + ("dialect1", "\x50\x43\x20\x4e\x45\x54\x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31\x2e\x30\x00"), + ("separator2","\x02"), + ("dialect2", "\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00"), + ]) + def calculate(self): + CalculateBCC = str(self.fields["separator1"])+str(self.fields["dialect1"])+str(self.fields["separator2"])+str(self.fields["dialect2"]) + self.fields["bcc"] = struct.pack("