中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 00:56
48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » DOS命令扫描网段的端口
可打印版本  1,198 / 5
第1楼 uiopuiop 发表于 2007-10-13 19:52
中级用户 发帖 211 积分 400
DOS命令扫描网段的端口
不需要任何工具,DOS命令扫描一个网段的全部端口!在Windows2000下开一个DOS窗口,然后执行 for /l %a in (1,1,254) do start /min /low telnet 192.168.0.%a 3389


这样192.168.0.x这个段的所有开放3389端口得主机都会暴露。

这条命令执行后,会在任务栏开254个小窗口。然后telnet链接失败的窗口会在大约5秒后自动退出,剩下的窗口就是相对应开放端口的主机了。

看一下小窗口的标题可以得知主机的ip地址,如果你觉得机器性能很好的话 可以把/low参数去了。

现在扫描一台主机的多个端口,如下


for /l %a in (1,1,65535) do start /low /min telnet 192.168.0.1%a


这样就扫描192.168.0.1的1到65535端口。

现在扫描一个网段的所有端口


for /l %a in (1,1,254) do for /l %b in (1,1,65535) do start /low/min telnet 192.168.0.%a %b


这样就会扫描192.168.0.x段的全部1到65535段口。

以上命令只能在Windows2000下使用,因为/l累加参数是Windows2000对for的扩展,当然WindowsXP和Windows.NET都可以用,WindowsME我没有试过,因为没有WindowsME的机器。
第2楼 uiopuiop 发表于 2007-10-13 19:53
中级用户 发帖 211 积分 400
问题是有没有办法让TELNET 不跳出窗口,并扫描端口呢? 期待有高手写出这样的BAT.
第3楼 lxmxn 发表于 2007-10-13 21:14
版主 发帖 4,938 积分 11,386
start命令的帮助,里面有一个/B参数。
第4楼 uiopuiop 发表于 2007-10-13 21:54
中级用户 发帖 211 积分 400
试了 telnet 71.95.7.199 80 >nul
echo %errorlevel%

不管IP是什么结果总是-1, 晕 ~~

看样子只好使用NMAP类似的工具了,但NMAP 的缺点是需要先安装WinPcap:
http://www.pcicp.com/tech/systemsafety/SysLoophole/2004-11-10/1100090062d155_2.html

[ Last edited by uiopuiop on 2007-10-13 at 09:56 PM ]
第5楼 uiopuiop 发表于 2007-10-13 22:16
中级用户 发帖 211 积分 400
端口扫描工具——Portqry
Portqry是命令行下用来解决传输控制协议/网际协议连通性问题的基本扫描工具,它基于Windows 2000 或者更高版本。很多IT 专业人员十分精通Telnet,用它来测试网络的畅通性和解决端口的。但是,Telnet在端口测试时有它的局限性。例如,它不能确定是否端口正被过滤,并且它不能像LDAP 或者RPC一样测试UPD 传输性。这正是Portqry值得在这里介绍的地方。使用Portqry可以解决微软公司Exchange Servers的基本传输控制协议/网际协议连通性。在有防火墙的环境里,也能使用Portqry 判断传输控制协议/网际协议的连通性。

下载地址
http://download.microsoft.com/download/0/d/9/0d9d81cf-4ef2-4aa5-8cea-95a935ee09c9/PortQryV2.exe

正在写一个批处理,来扫描批量IP地址的端口。。。。。

@echo off
@portqry -n myserver.reskit.com -e %1 -p tcp -q

@if errorlevel = 2 goto end
@if errorlevel = 1 goto end
@if errorlevel = 0 goto success

:success
@Echo Port %1 is listening
goto end

:end

[ Last edited by uiopuiop on 2007-10-13 at 10:29 PM ]
第6楼 uiopuiop 发表于 2007-10-13 22:20
中级用户 发帖 211 积分 400
还是老外先想到了
详解:
http://support.microsoft.com/kb/832919/zh-cn
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

FOR /F "eol=; tokens=1,2 delims=," %%I IN (machines.csv) DO CALL :PORT %%I %%J
GOTO END

:PORT
PortQry -n %1 -p TCP -e 135 -q -l "%2.log"

:END

~~~~~~~~machines.csv~~~~~~~~~~~~~~
10.1.0.11,HostName1
10.1.0.25,HostName2

[ Last edited by uiopuiop on 2007-10-13 at 10:46 PM ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023