diff options
Diffstat (limited to 'scripts/external_libs/dpkt-1.8.6.2/dpkt/netbios.py')
-rw-r--r-- | scripts/external_libs/dpkt-1.8.6.2/dpkt/netbios.py | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/scripts/external_libs/dpkt-1.8.6.2/dpkt/netbios.py b/scripts/external_libs/dpkt-1.8.6.2/dpkt/netbios.py deleted file mode 100644 index 54586327..00000000 --- a/scripts/external_libs/dpkt-1.8.6.2/dpkt/netbios.py +++ /dev/null @@ -1,166 +0,0 @@ -# $Id: netbios.py 23 2006-11-08 15:45:33Z dugsong $ -# -*- coding: utf-8 -*- -"""Network Basic Input/Output System.""" - -import struct -import dpkt -import dns - - -def encode_name(name): - """Return the NetBIOS first-level encoded name.""" - l = [] - for c in struct.pack('16s', name): - c = ord(c) - l.append(chr((c >> 4) + 0x41)) - l.append(chr((c & 0xf) + 0x41)) - return ''.join(l) - - -def decode_name(nbname): - """Return the NetBIOS first-level decoded nbname.""" - if len(nbname) != 32: - return nbname - l = [] - for i in range(0, 32, 2): - l.append(chr(((ord(nbname[i]) - 0x41) << 4) | - ((ord(nbname[i + 1]) - 0x41) & 0xf))) - return ''.join(l).split('\x00', 1)[0] - -# RR types -NS_A = 0x01 # IP address -NS_NS = 0x02 # Name Server -NS_NULL = 0x0A # NULL -NS_NB = 0x20 # NetBIOS general Name Service -NS_NBSTAT = 0x21 # NetBIOS NODE STATUS - -# RR classes -NS_IN = 1 - -# NBSTAT name flags -NS_NAME_G = 0x8000 # group name (as opposed to unique) -NS_NAME_DRG = 0x1000 # deregister -NS_NAME_CNF = 0x0800 # conflict -NS_NAME_ACT = 0x0400 # active -NS_NAME_PRM = 0x0200 # permanent - -# NBSTAT service names -nbstat_svcs = { - # (service, unique): list of ordered (name prefix, service name) tuples - (0x00, 0): [('', 'Domain Name')], - (0x00, 1): [('IS~', 'IIS'), ('', 'Workstation Service')], - (0x01, 0): [('__MSBROWSE__', 'Master Browser')], - (0x01, 1): [('', 'Messenger Service')], - (0x03, 1): [('', 'Messenger Service')], - (0x06, 1): [('', 'RAS Server Service')], - (0x1B, 1): [('', 'Domain Master Browser')], - (0x1C, 0): [('INet~Services', 'IIS'), ('', 'Domain Controllers')], - (0x1D, 1): [('', 'Master Browser')], - (0x1E, 0): [('', 'Browser Service Elections')], - (0x1F, 1): [('', 'NetDDE Service')], - (0x20, 1): [('Forte_$ND800ZA', 'DCA IrmaLan Gateway Server Service'), - ('', 'File Server Service')], - (0x21, 1): [('', 'RAS Client Service')], - (0x22, 1): [('', 'Microsoft Exchange Interchange(MSMail Connector)')], - (0x23, 1): [('', 'Microsoft Exchange Store')], - (0x24, 1): [('', 'Microsoft Exchange Directory')], - (0x2B, 1): [('', 'Lotus Notes Server Service')], - (0x2F, 0): [('IRISMULTICAST', 'Lotus Notes')], - (0x30, 1): [('', 'Modem Sharing Server Service')], - (0x31, 1): [('', 'Modem Sharing Client Service')], - (0x33, 0): [('IRISNAMESERVER', 'Lotus Notes')], - (0x43, 1): [('', 'SMS Clients Remote Control')], - (0x44, 1): [('', 'SMS Administrators Remote Control Tool')], - (0x45, 1): [('', 'SMS Clients Remote Chat')], - (0x46, 1): [('', 'SMS Clients Remote Transfer')], - (0x4C, 1): [('', 'DEC Pathworks TCPIP service on Windows NT')], - (0x52, 1): [('', 'DEC Pathworks TCPIP service on Windows NT')], - (0x87, 1): [('', 'Microsoft Exchange MTA')], - (0x6A, 1): [('', 'Microsoft Exchange IMC')], - (0xBE, 1): [('', 'Network Monitor Agent')], - (0xBF, 1): [('', 'Network Monitor Application')] -} - - -def node_to_service_name((name, service, flags)): - try: - unique = int(flags & NS_NAME_G == 0) - for namepfx, svcname in nbstat_svcs[(service, unique)]: - if name.startswith(namepfx): - return svcname - except KeyError: - pass - return '' - - -class NS(dns.DNS): - """NetBIOS Name Service.""" - - class Q(dns.DNS.Q): - pass - - class RR(dns.DNS.RR): - """NetBIOS resource record.""" - - def unpack_rdata(self, buf, off): - if self.type == NS_A: - self.ip = self.rdata - elif self.type == NS_NBSTAT: - num = ord(self.rdata[0]) - off = 1 - l = [] - for i in range(num): - name = self.rdata[off:off + 15].split(None, 1)[0].split('\x00', 1)[0] - service = ord(self.rdata[off + 15]) - off += 16 - flags = struct.unpack('>H', self.rdata[off:off + 2])[0] - off += 2 - l.append((name, service, flags)) - self.nodenames = l - # XXX - skip stats - - def pack_name(self, buf, name): - return dns.DNS.pack_name(self, buf, encode_name(name)) - - def unpack_name(self, buf, off): - name, off = dns.DNS.unpack_name(self, buf, off) - return decode_name(name), off - - -class Session(dpkt.Packet): - """NetBIOS Session Service.""" - __hdr__ = ( - ('type', 'B', 0), - ('flags', 'B', 0), - ('len', 'H', 0) - ) - - -SSN_MESSAGE = 0 -SSN_REQUEST = 1 -SSN_POSITIVE = 2 -SSN_NEGATIVE = 3 -SSN_RETARGET = 4 -SSN_KEEPALIVE = 5 - - -class Datagram(dpkt.Packet): - """NetBIOS Datagram Service.""" - __hdr__ = ( - ('type', 'B', 0), - ('flags', 'B', 0), - ('id', 'H', 0), - ('src', 'I', 0), - ('sport', 'H', 0), - ('len', 'H', 0), - ('off', 'H', 0) - ) - - -DGRAM_UNIQUE = 0x10 -DGRAM_GROUP = 0x11 -DGRAM_BROADCAST = 0x12 -DGRAM_ERROR = 0x13 -DGRAM_QUERY = 0x14 -DGRAM_POSITIVE = 0x15 -DGRAM_NEGATIVE = 0x16 |