from routersploit.modules.generic.upnp.ssdp_msearch import Exploit def test_check_success(udp_target): """ Test scenario - successful check """ request = ( "M-SEARCH * HTTP/1.1\r\n" + "HOST: {}:{}\r\n".format(udp_target.host, udp_target.port) + "MAN: \"ssdp:discover\"\r\n" + "MX: 2\r\n" + "ST: upnp:rootdevice\r\n\r\n" ) request = bytes(request, "utf-8") response = ( b"HTTP/1.1 200 OK\r\n" b"CACHE-CONTROL: max-age=120\r\n" b"ST: upnp:rootdevice\r\n" b"USN: uuid:0ef8055a-8850-47b8-ac43-91f41fdd8d83::upnp:rootdevice\r\n" b"EXT:\r\n" b"SERVER: AsusWRT/3.0.0.4 UPnP/1.1 MiniUPnPd/1.9\r\n" b"LOCATION: http://192.168.2.1:48611/rootDesc.xml\r\n" b"OPT: \"http://schemas.upnp.org/upnp/1/0/\"; ns=01\r\n" b"01-NLS: 1\r\n" b"BOOTID.UPNP.ORG: 1\r\n" b"CONFIGID.UPNP.ORG: 1337\r\n\r\n" ) command_mock = udp_target.get_command_mock(request) command_mock.return_value = response exploit = Exploit() exploit.target = udp_target.host exploit.port = udp_target.port assert exploit.run() is None