github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/impacket/tests/SMB_RPC/test_mgmt.py (about) 1 ############################################################################### 2 # Tested so far: 3 # 4 # Not yet: 5 # 6 # Shouldn't dump errors against a win7 7 # 8 ################################################################################ 9 10 from __future__ import division 11 from __future__ import print_function 12 import unittest 13 try: 14 import ConfigParser 15 except ImportError: 16 import configparser as ConfigParser 17 18 from impacket.dcerpc.v5 import transport 19 from impacket.dcerpc.v5 import mgmt 20 21 22 class MGMTTests(unittest.TestCase): 23 def connect(self): 24 rpctransport = transport.DCERPCTransportFactory(self.stringBinding) 25 if len(self.hashes) > 0: 26 lmhash, nthash = self.hashes.split(':') 27 else: 28 lmhash = '' 29 nthash = '' 30 if hasattr(rpctransport, 'set_credentials'): 31 # This method exists only for selected protocol sequences. 32 rpctransport.set_credentials(self.username,self.password, self.domain, lmhash, nthash) 33 dce = rpctransport.get_dce_rpc() 34 dce.connect() 35 dce.bind(mgmt.MSRPC_UUID_MGMT, transfer_syntax = self.ts) 36 37 return dce, rpctransport 38 39 def test_inq_if_ids(self): 40 dce, transport = self.connect() 41 42 request = mgmt.inq_if_ids() 43 resp = dce.request(request) 44 resp.dump() 45 #for i in range(resp['if_id_vector']['count']): 46 # print bin_to_uuidtup(resp['if_id_vector']['if_id'][i]['Data'].getData()) 47 # print 48 49 def test_hinq_if_ids(self): 50 dce, transport = self.connect() 51 52 resp = mgmt.hinq_if_ids(dce) 53 resp.dump() 54 55 def test_inq_stats(self): 56 dce, transport = self.connect() 57 58 request = mgmt.inq_stats() 59 request['count'] = 40 60 resp = dce.request(request) 61 resp.dump() 62 63 def test_hinq_stats(self): 64 dce, transport = self.connect() 65 66 resp = mgmt.hinq_stats(dce) 67 resp.dump() 68 69 def test_is_server_listening(self): 70 dce, transport = self.connect() 71 72 request = mgmt.is_server_listening() 73 resp = dce.request(request, checkError=False) 74 resp.dump() 75 76 def test_his_server_listening(self): 77 dce, transport = self.connect() 78 79 resp = mgmt.his_server_listening(dce) 80 resp.dump() 81 82 def test_stop_server_listening(self): 83 dce, transport = self.connect() 84 85 request = mgmt.stop_server_listening() 86 try: 87 resp = dce.request(request) 88 resp.dump() 89 except Exception as e: 90 if str(e).find('rpc_s_access_denied') < 0: 91 raise 92 93 def test_hstop_server_listening(self): 94 dce, transport = self.connect() 95 96 try: 97 resp = mgmt.hstop_server_listening(dce) 98 resp.dump() 99 except Exception as e: 100 if str(e).find('rpc_s_access_denied') < 0: 101 raise 102 103 def test_inq_princ_name(self): 104 dce, transport = self.connect() 105 106 request = mgmt.inq_princ_name() 107 request['authn_proto'] = 0 108 request['princ_name_size'] = 32 109 resp = dce.request(request, checkError=False) 110 resp.dump() 111 112 def test_his_server_listening(self): 113 dce, transport = self.connect() 114 115 resp = mgmt.hinq_princ_name(dce) 116 resp.dump() 117 118 119 class SMBTransport(MGMTTests): 120 def setUp(self): 121 MGMTTests.setUp(self) 122 configFile = ConfigParser.ConfigParser() 123 configFile.read('dcetests.cfg') 124 self.username = configFile.get('SMBTransport', 'username') 125 self.domain = configFile.get('SMBTransport', 'domain') 126 self.serverName = configFile.get('SMBTransport', 'servername') 127 self.password = configFile.get('SMBTransport', 'password') 128 self.machine = configFile.get('SMBTransport', 'machine') 129 self.hashes = configFile.get('SMBTransport', 'hashes') 130 self.stringBinding = r'ncacn_np:%s[\pipe\epmapper]' % self.machine 131 self.ts = ('8a885d04-1ceb-11c9-9fe8-08002b104860', '2.0') 132 133 class TCPTransport(MGMTTests): 134 def setUp(self): 135 MGMTTests.setUp(self) 136 configFile = ConfigParser.ConfigParser() 137 configFile.read('dcetests.cfg') 138 self.username = configFile.get('TCPTransport', 'username') 139 self.domain = configFile.get('TCPTransport', 'domain') 140 self.serverName = configFile.get('TCPTransport', 'servername') 141 self.password = configFile.get('TCPTransport', 'password') 142 self.machine = configFile.get('TCPTransport', 'machine') 143 self.hashes = configFile.get('TCPTransport', 'hashes') 144 self.stringBinding = r'ncacn_ip_tcp:%s[135]' % self.machine 145 self.ts = ('8a885d04-1ceb-11c9-9fe8-08002b104860', '2.0') 146 147 class SMBTransport64(MGMTTests): 148 def setUp(self): 149 MGMTTests.setUp(self) 150 configFile = ConfigParser.ConfigParser() 151 configFile.read('dcetests.cfg') 152 self.username = configFile.get('SMBTransport', 'username') 153 self.domain = configFile.get('SMBTransport', 'domain') 154 self.serverName = configFile.get('SMBTransport', 'servername') 155 self.password = configFile.get('SMBTransport', 'password') 156 self.machine = configFile.get('SMBTransport', 'machine') 157 self.hashes = configFile.get('SMBTransport', 'hashes') 158 self.stringBinding = r'ncacn_np:%s[\pipe\epmapper]' % self.machine 159 self.ts = ('71710533-BEBA-4937-8319-B5DBEF9CCC36', '1.0') 160 161 class TCPTransport64(MGMTTests): 162 def setUp(self): 163 MGMTTests.setUp(self) 164 configFile = ConfigParser.ConfigParser() 165 configFile.read('dcetests.cfg') 166 self.username = configFile.get('TCPTransport', 'username') 167 self.domain = configFile.get('TCPTransport', 'domain') 168 self.serverName = configFile.get('TCPTransport', 'servername') 169 self.password = configFile.get('TCPTransport', 'password') 170 self.machine = configFile.get('TCPTransport', 'machine') 171 self.hashes = configFile.get('TCPTransport', 'hashes') 172 self.stringBinding = r'ncacn_ip_tcp:%s[135]' % self.machine 173 self.ts = ('71710533-BEBA-4937-8319-B5DBEF9CCC36', '1.0') 174 175 176 # Process command-line arguments. 177 if __name__ == '__main__': 178 import sys 179 if len(sys.argv) > 1: 180 testcase = sys.argv[1] 181 suite = unittest.TestLoader().loadTestsFromTestCase(globals()[testcase]) 182 else: 183 #suite = unittest.TestLoader().loadTestsFromTestCase(SMBTransport64) 184 suite = unittest.TestLoader().loadTestsFromTestCase(SMBTransport) 185 suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TCPTransport)) 186 suite.addTests(unittest.TestLoader().loadTestsFromTestCase(SMBTransport64)) 187 suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TCPTransport64)) 188 unittest.TextTestRunner(verbosity=1).run(suite)