github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/impacket/tests/SMB_RPC/test_nmb.py (about)

     1  try:
     2      import ConfigParser
     3  except ImportError:
     4      import configparser as ConfigParser
     5  import unittest
     6  
     7  from impacket import nmb
     8  from impacket.structure import hexdump
     9  
    10  
    11  class NMBTests(unittest.TestCase):
    12      def create_connection(self):
    13          pass
    14  
    15      def test_encodedecodename(self):
    16          name = 'THISISAVERYLONGLONGNAME'
    17          encoded = nmb.encode_name(name,nmb.TYPE_SERVER,None)
    18          hexdump(encoded)
    19          decoded = nmb.decode_name(encoded)
    20          hexdump(bytearray(decoded[1],'utf-8'))
    21  
    22          #self.assertTrue(nmb.TYPE_SERVER==decoded[0])
    23          self.assertTrue(name[:15]==decoded[1].strip())
    24  
    25          # ToDo: Fix the scope functionality
    26          #namescope = 'MYNAME'
    27          #encoded = nmb.encode_name(namescope,nmb.TYPE_SERVER,'SCOPE')
    28          #hexdump(encoded)
    29          #decoded = nmb.decode_name(encoded)
    30          #hexdump(decoded)
    31  
    32          #self.assertTrue(nmb.TYPE_SERVER==decoded[0])
    33          #self.assertTrue(namescope[:15]==decoded[1].strip())
    34  
    35      def test_getnetbiosname(self):
    36          n = nmb.NetBIOS()
    37          res = n.getnetbiosname(self.machine)
    38          print(repr(res))
    39          self.assertTrue( self.serverName, res)
    40  
    41      def test_getnodestatus(self):
    42          n = nmb.NetBIOS()
    43          resp = n.getnodestatus(self.serverName.upper(), self.machine)
    44          for r in resp:
    45              r.dump()
    46          print(resp)
    47  
    48      def test_gethostbyname(self):
    49          n = nmb.NetBIOS()
    50          n.set_nameserver(self.serverName)
    51          resp = n.gethostbyname(self.serverName, nmb.TYPE_SERVER)
    52          print((resp.entries))
    53  
    54      def test_name_registration_request(self):
    55          n = nmb.NetBIOS()
    56          # ToDo: Look at this
    57          #resp = n.name_registration_request('*SMBSERVER', self.serverName, nmb.TYPE_WORKSTATION, None,nmb.NB_FLAGS_G, '1.1.1.1')
    58          try:
    59              resp = n.name_registration_request('*JSMBSERVER', self.serverName, nmb.TYPE_WORKSTATION, None,nmb.NB_FLAGS_ONT_P, '1.1.1.2')
    60              resp.dump()
    61          except Exception as e:
    62              print(str(e))
    63              if str(e).find('NETBIOS') <= 0:
    64                  raise e
    65  
    66      def test_name_query_request(self):
    67          n = nmb.NetBIOS()
    68          # ToDo: Look at this
    69          # resp = n.name_registration_request('*SMBSERVER', self.serverName, nmb.TYPE_WORKSTATION, None,nmb.NB_FLAGS_G, '1.1.1.1')
    70          resp = n.name_query_request(self.serverName, self.machine)
    71          print((resp.entries))
    72  
    73  class NetBIOSTests(NMBTests):
    74      def setUp(self):
    75          NMBTests.setUp(self)
    76          # Put specific configuration for target machine with SMB1
    77          configFile = ConfigParser.ConfigParser()
    78          configFile.read('dcetests.cfg')
    79          self.serverName = configFile.get('SMBTransport', 'servername')
    80          self.machine  = configFile.get('SMBTransport', 'machine')
    81  
    82  if __name__ == "__main__":
    83      suite = unittest.TestLoader().loadTestsFromTestCase(NetBIOSTests)
    84      unittest.TextTestRunner(verbosity=1).run(suite)