PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` local nmap = require "nmap" local shortport = require "shortport" local string = require "string" description = [[ Checks if an SSH server supports the obsolete and less secure SSH Protocol Version 1. ]] author = "Brandon Enright" license = "Same as Nmap--See http://nmap.org/book/man-legal.html" categories = {"default", "safe"} --- -- @output -- PORT STATE SERVICE -- 22/tcp open ssh -- |_sshv1: Server supports SSHv1 portrule = shortport.port_or_service(22, "ssh") action = function(host, port) local socket = nmap.new_socket() local result; local status = true; socket:connect(host, port) status, result = socket:receive_lines(1); if (not status) then socket:close() return end if (result == "TIMEOUT") then socket:close() return end if not string.match(result, "^SSH%-.+\n$") then socket:close() return end socket:send("SSH-1.5-NmapNSE_1.0\n") -- should be able to consume at least 13 bytes -- key length is a 4 byte integer -- padding is between 1 and 8 bytes -- type is one byte -- key is at least several bytes status, result = socket:receive_bytes(13); if (not status) then socket:close() return end if (result == "TIMEOUT") then socket:close() return end if not string.match(result, "^....[\0]+\002") then socket:close() return end socket:close(); return "Server supports SSHv1" end