You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python sockets模块显示端口关闭,但Nmap显示其为开放状态?

端口扫描代码问题排查:开放端口显示关闭+语法错误

一、先解决语法错误(核心前提)

语法错误会直接导致代码逻辑异常,哪怕视觉上和视频一致,也可能存在细节疏漏:

  • 检查标点符号:确认所有引号、括号、分号都是英文半角,避免中文标点混入(比如把"打成“”)。
  • 核对变量/函数拼写:比如Python中socket.connect()是否写成Socket.Connect(),或者变量名target写成targt这类低级拼写错误。
  • 检查缩进(针对Python等缩进敏感语言):视频中的缩进层级要完全匹配,多一个空格或Tab都会触发语法错误。
  • 重视报错信息:运行时的SyntaxError会明确指出错误行号,直接定位该行对比视频代码细节。

二、端口显示关闭的排查方向

语法错误解决后,再处理端口状态不符的问题:

  • 确认目标IP正确性:代码中的目标地址必须和Nmap扫描的主机一致,比如视频扫的是192.168.1.100,你是不是误写成192.168.1.10?
  • 检查防火墙拦截:Nmap的SYN半开扫描可能绕过部分防火墙,而你的代码如果用全连接扫描,可能被本地或目标主机的防火墙拦截。可以临时关闭本地防火墙测试,或在目标主机上检查445端口的入站规则。
  • 核对扫描逻辑:
    • 超时时间:视频中设置的超时(比如2秒)是否被你改成过短的数值(比如0.2秒),导致未收到响应就判定端口关闭。
    • 协议类型:确认代码是扫描TCP端口(445是TCP端口),而非UDP。
    • 连接逻辑:比如代码中是否错误地使用了send()而非connect(),或者连接后的判断条件写反(比如把0当成关闭,实际应该是0表示连接成功)。
  • 重新确认端口状态:用Nmap再扫一次目标主机的445端口,确认端口是否仍处于开放状态(可能你扫描后端口被关闭)。

三、执行命令的细节检查

  • 确认脚本文件名:./[NAME]中的[NAME]要替换成你的实际脚本名,比如./port_scan.py,同时确保脚本有可执行权限(执行chmod +x port_scan.py添加权限)。
  • 编译型语言需重新编译:如果是C/C++编写的程序,修改代码后必须重新编译(比如gcc port_scan.c -o port_scan),否则执行的还是旧版本程序,端口未更新。

内容的提问来源于stack exchange,提问作者Zero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:39:55