import unittest.mock as mock import Test.ID2TAttackTest as Test sha_default = 'bf2ef698c61429d4b0c3d9f7af95ec45576ef20b7e21a7904709b95dec1b525c' sha_one_victim_linux = 'e992ba20469fa630b09d5e450475bddae3db40bf7ed1aa32b33570999717d50c' sha_victim_range_winxp_hosting = '9510e4cd5442cd0912710ada8069beeedfebf375eefd733286aed63323c1cc50' sha_multiple_victims_macos = '87d0346bdb6b5a4b28a9247c26445bbf685f8cb6c77f82141739b107244625f9' sha_port_shuffle = 'cad9356ca92610371c9976edd08b8d16a5d8b9edf431c9cd9177f2bb757ff4d6' sha_dest_mac_only = 'a66832a461d9a2cf745a7232864c472c357e634b49f4f25bc9896a91c7967a17' sha_ip_src_shuffle = 'b4b6e9e9007085e2d1f9dd5d1199695dd6533b8b0ee9d77850c512a496e55581' sha_smb2 = '7d78e9c78bdc2ebac2055d42c5b2446794959053cc27eb8b177f6711d592ae82' # TODO: improve coverage class UnitTestSMBScan(Test.ID2TAttackTest): def test_smbscan_default(self): with mock.patch("ID2TLib.Utility.get_rnd_os", return_value="win7"): self.checksum_test([['SMBScanAttack']], sha_default) def test_smbscan_one_victim_linux(self): with mock.patch("ID2TLib.Utility.get_rnd_os", return_value="linux"): self.checksum_test([['SMBScanAttack', 'ip.src=192.168.178.1', 'ip.dst=192.168.178.10']], sha_one_victim_linux) def test_smbscan_victim_range_winxp_hosting(self): with mock.patch("ID2TLib.Utility.get_rnd_os", return_value="winxp"): self.checksum_test([['SMBScanAttack', 'ip.src=192.168.178.1', 'ip.dst=192.168.178.5-192.168.178.10', 'hosting.ip=192.168.178.5']], sha_victim_range_winxp_hosting) def test_smbscan_multiple_victims_macos(self): with mock.patch("ID2TLib.Utility.get_rnd_os", return_value="macos"): self.checksum_test([['SMBScanAttack', 'ip.src=192.168.178.1', 'ip.dst=192.168.178.10,192.168.178.15,192.168.178.20', 'hosting.ip=192.168.178.15,192.168.178.20']], sha_multiple_victims_macos) def test_smbscan_invalid_smb_version(self): with self.assertRaises(SystemExit): self.checksum_test([['SMBScanAttack', 'protocol.version=42']], 'somehash') def test_smbscan_invalid_smb_platform(self): with self.assertRaises(SystemExit): self.checksum_test([['SMBScanAttack', 'hosting.version=1337']], 'somehash') def test_smbscan_port_shuffle(self): with mock.patch("ID2TLib.Utility.get_rnd_os", return_value="win7"): self.checksum_test([['SMBScanAttack', 'ip.src=192.168.178.1', 'ip.dst=192.168.178.5-192.168.178.10', 'hosting.ip=192.168.178.5', 'port.src.shuffle=false']], sha_port_shuffle) def test_smbscan_dest_mac_only(self): with mock.patch("ID2TLib.Utility.get_rnd_os", return_value="win7"): self.checksum_test([['SMBScanAttack', 'ip.src=192.168.178.1', 'mac.dst=00:0C:29:9C:70:64']], sha_dest_mac_only) def test_smbscan_src_ip_shuffle(self): with mock.patch("ID2TLib.Utility.get_rnd_os", return_value="win7"): self.checksum_test([['SMBScanAttack', 'ip.src=192.168.178.1', 'ip.dst=192.168.178.5-192.168.178.10', 'hosting.ip=192.168.178.5', 'ip.src.shuffle=True']], sha_ip_src_shuffle) def test_smbscan_smb2(self): with mock.patch("ID2TLib.Utility.get_rnd_os", return_value="linux"): self.checksum_test([['SMBScanAttack', 'ip.src=192.168.178.1', 'ip.dst=192.168.178.5-192.168.178.10', 'hosting.ip=192.168.178.5', 'protocol.version=2.1', 'hosting.version=2.1']], sha_smb2) def test_smbscan_order(self): self.order_test([['SMBScanAttack']])