/
test_nmb.py
87 lines (71 loc) · 2.81 KB
/
test_nmb.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Impacket - Collection of Python classes for working with network protocols.
#
# SECUREAUTH LABS. Copyright (C) 2022 SecureAuth Corporation. All rights reserved.
#
# This software is provided under a slightly modified version
# of the Apache Software License. See the accompanying LICENSE file
# for more information.
#
import pytest
import unittest
from tests import RemoteTestCase
from impacket import nmb
from impacket.structure import hexdump
@pytest.mark.remote
class NMBTests(RemoteTestCase, unittest.TestCase):
def setUp(self):
super(NMBTests, self).setUp()
self.set_transport_config()
def create_connection(self):
pass
def test_encodedecodename(self):
name = 'THISISAVERYLONGLONGNAME'
encoded = nmb.encode_name(name, nmb.TYPE_SERVER, None)
hexdump(encoded)
decoded = nmb.decode_name(encoded)
hexdump(bytearray(decoded[1], 'utf-8'))
#self.assertEqual(nmb.TYPE_SERVER, decoded[0])
self.assertEqual(name[:15], decoded[1].strip())
# ToDo: Fix the scope functionality
#namescope = 'MYNAME'
#encoded = nmb.encode_name(namescope,nmb.TYPE_SERVER,'SCOPE')
#hexdump(encoded)
#decoded = nmb.decode_name(encoded)
#hexdump(decoded)
#self.assertEqual(nmb.TYPE_SERVER, decoded[0])
#self.assertEqual(namescope[:15], decoded[1].strip())
def test_getnetbiosname(self):
n = nmb.NetBIOS()
res = n.getnetbiosname(self.machine)
print(repr(res))
self.assertEqual(self.serverName, res)
def test_getnodestatus(self):
n = nmb.NetBIOS()
resp = n.getnodestatus(self.serverName.upper(), self.machine)
for r in resp:
r.dump()
print(resp)
def test_gethostbyname(self):
n = nmb.NetBIOS()
n.set_nameserver(self.serverName)
resp = n.gethostbyname(self.serverName, nmb.TYPE_SERVER)
print(resp.entries)
def test_name_registration_request(self):
n = nmb.NetBIOS()
# ToDo: Look at this
#resp = n.name_registration_request('*SMBSERVER', self.serverName, nmb.TYPE_WORKSTATION, None,nmb.NB_FLAGS_G, '1.1.1.1')
try:
resp = n.name_registration_request('*JSMBSERVER', self.serverName, nmb.TYPE_WORKSTATION, None,nmb.NB_FLAGS_ONT_P, '1.1.1.2')
resp.dump()
except Exception as e:
print(str(e))
if str(e).find('NETBIOS') <= 0:
raise e
def test_name_query_request(self):
n = nmb.NetBIOS()
# ToDo: Look at this
# resp = n.name_registration_request('*SMBSERVER', self.serverName, nmb.TYPE_WORKSTATION, None,nmb.NB_FLAGS_G, '1.1.1.1')
resp = n.name_query_request(self.serverName, self.machine)
print(resp.entries)
if __name__ == "__main__":
unittest.main(verbosity=1)