import unittest.mock as mock import Test.ID2TAttackTest as Test sha_default = 'c61cb8ce03e6b8b19132ec6a47adcfb02c4dba4234926653df5443d33b08f33b' sha_dest_mac_only = 'c42a1775db981a139abd42d031273805cbebd2316b0d8c097217c12193fb8a70' sha_multiple_victims_macos = 'b9a9f423d4154bc38723214124ad74dfdd07a39753563d21f5b453a8c069914a' sha_one_victim_linux = '3bb17444446334cf4feee9dd7cbeabd17acbb5ef48525fb3963591f30c37d17a' sha_port_shuffle = '08bdecc68fa1a2d1b0dd9802d7d025d42d90b9184d1fb6e1bcab234fac7db1b4' sha_smb2 = '315bc052fd045f8738021062e8b5f77a33c649adfed490d3c9da94c97ba32f95' sha_ip_src_shuffle = '1d699ca109c62000b77b53002f1087ebf5ccc2c2dead1dbc5c18b5f6311273d0' sha_victim_range_winxp_hosting = 'bd624da4e3b7a3f06b8154ed9d6274d498b589aaaa11c2d0dc207a80ab7205b9' # 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']])