#! /usr/bin/env python # NBT-NS/LLMNR Responder # Created by Laurent Gaffie # Copyright (C) 2014 Trustwave Holdings, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import datetime, struct import sys,socket,struct from socket import * from odict import OrderedDict class Packet(): fields = OrderedDict([ ("", ""), ]) 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())) def GetBootTime(data): Filetime = int(struct.unpack('i", len(data)) return Len from packets import SMBHeader """ class SMBHeader(Packet): fields = OrderedDict([ ("Proto", "\xff\x53\x4d\x42"), ("Cmd", "\x72"), ("Error-Code", "\x00\x00\x00\x00" ), ("Flag1", "\x10"), ("Flag2", "\x00\x00"), ("Pidhigh", "\x00\x00"), ("Signature", "\x00\x00\x00\x00\x00\x00\x00\x00"), ("Reserved", "\x00\x00"), ("TID", "\x00\x00"), ("PID", "\xff\xfe"), ("UID", "\x00\x00"), ("MID", "\x00\x00"), ]) """ class SMBNego(Packet): fields = OrderedDict([ ("Wordcount", "\x00"), ("Bcc", "\x62\x00"), ("Data", "") ]) def calculate(self): self.fields["Bcc"] = struct.pack("