1try: 2 import configparser 3except ImportError: 4 import ConfigParser as configparser 5import unittest 6 7from impacket import nmb 8from impacket.structure import hexdump 9 10 11class 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(decoded[1]) 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 print(resp) 45 46 def test_gethostbyname(self): 47 n = nmb.NetBIOS() 48 n.set_nameserver(self.serverName) 49 resp = n.gethostbyname(self.serverName, nmb.TYPE_SERVER) 50 print(resp.entries) 51 52 def test_name_registration_request(self): 53 n = nmb.NetBIOS() 54 # ToDo: Look at this 55 #resp = n.name_registration_request('*SMBSERVER', self.serverName, nmb.TYPE_WORKSTATION, None,nmb.NB_FLAGS_G, '1.1.1.1') 56 try: 57 resp = n.name_registration_request('*JSMBSERVER', self.serverName, nmb.TYPE_WORKSTATION, None,nmb.NB_FLAGS_ONT_P, '1.1.1.2') 58 resp.dump() 59 except Exception as e: 60 print str(e) 61 if str(e).find('NETBIOS') <= 0: 62 raise e 63 64 def test_name_query_request(self): 65 n = nmb.NetBIOS() 66 # ToDo: Look at this 67 # resp = n.name_registration_request('*SMBSERVER', self.serverName, nmb.TYPE_WORKSTATION, None,nmb.NB_FLAGS_G, '1.1.1.1') 68 resp = n.name_query_request(self.serverName, self.machine) 69 print(resp.entries) 70 71class NetBIOSTests(NMBTests): 72 def setUp(self): 73 NMBTests.setUp(self) 74 # Put specific configuration for target machine with SMB1 75 configFile = configparser.ConfigParser() 76 configFile.read('dcetests.cfg') 77 self.serverName = configFile.get('SMBTransport', 'servername') 78 self.machine = configFile.get('SMBTransport', 'machine') 79 80if __name__ == "__main__": 81 suite = unittest.TestLoader().loadTestsFromTestCase(NetBIOSTests) 82 unittest.TextTestRunner(verbosity=1).run(suite) 83