为何Nmap Lua脚本TCP连接未等预期时间就超时报错?
Nmap Lua脚本超时设置错误导致立即超时的问题
你的Nmap Lua脚本出现立即超时的问题,核心原因是超时时间的单位理解错误。
先看你提供的代码片段:
action = function() local target = "46.121.76.117" local sock = nmap.new_socket("tcp") sock:set_timeout(10) -- 这里是问题所在 local status, err = sock:connect(target, 17) if not status then -- Failed to connect stdnse.debug1("Couldn't connect to %s on port %d; %s",target, 17, err) sock:close() return end end
问题分析
Nmap的nmap.new_socket对象的set_timeout()方法,参数单位是毫秒,不是你误以为的秒。你设置的10意味着只等待10毫秒,这个时间太短,还没完成TCP连接握手就触发了超时,所以脚本立刻返回TIMEOUT错误。
而你用nmap 46.121.76.117扫描显示端口17开放,是因为Nmap默认的TCP连接超时远大于10毫秒,足够完成正常的连接检测。
解决方法
如果需要设置1秒的超时时间,把参数改成1000(1秒=1000毫秒)即可:
sock:set_timeout(1000) -- 设置1秒超时
修改后脚本会等待1秒再判断是否超时,就能正常尝试连接开放的端口17了。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

