标题: 国产木马端口检查! [打印本页]
作者: AK47 时间: 2008-9-19 14:34 标题: 国产木马端口检查!
以下就是国产木马端口检查的代码!
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "7626" && echo "冰河!"
- del a.txt
- pause
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "8102" && echo "网络神偷!"
- del a.txt
- pause
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "2000" && echo "黑洞2000!"
- del a.txt
- pause
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "2001" && echo "黑洞2001!"
- del a.txt
- pause
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "6267" && echo "广外女生!"
- del a.txt
- pause
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "7306" && echo "网络精灵!"
- del a.txt
- pause
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "8011" && echo "赖小子!"
- del a.txt
- pause
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "23444" && echo "网络公牛!"
- del a.txt
- pause
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "19191" && echo "蓝色火焰!"
- del a.txt
- pause
- @echo off
- netstat -a -n > a.txt
- type a.txt | find "27374" && echo "东方魔眼!"
- del a.txt
- pause & exit
复制代码
作者: namejm 时间: 2008-9-19 14:59
其实没必要这么繁琐,一条for语句就可以做到了。另外,光检测那几个数字也是不可靠的,一来木马不可能一直用那个固定的端口;二来用find来检测数字,做不到精确匹配,比如 find "2000"的时候,200000也会匹配的。
如果不考虑那些复杂因素的话,楼主的代码可以这样精简,演示如下(需要检测哪个端口,添加if语句就是了):- @echo off
- for /f "skip=4 tokens=3 delims=: " %%i in ('netstat -a -n') do (
- if "%%i"=="7626" echo 冰河
- if "%%i"=="8102" echo 网络神偷
- if "%%i"=="2000" echo 黑洞2000
- )
- pause
复制代码
作者: youxi01 时间: 2008-9-19 15:10
如果要检测的端口较多时,最好是弄成配制文件,做一个列表了
作者: AK47 时间: 2008-9-19 15:32
@echo off
for /f "skip=4 tokens=3 delims=: " %%i in ('netstat -a -n') do (
if "%%i"=="7626" echo 冰河
if "%%i"=="8102" echo 网络神偷
if "%%i"=="2000" echo 黑洞2000
)
pause
呵呵,这段代码看起来不是很懂,可以跟我解释一下吗?最主要是for /f "skip=4 tokens=3 delims=: " %%i in ('netstat -a -n')这一句!谢谢了!
作者: Batcher 时间: 2008-9-19 15:46 标题: 回复 4楼 的帖子
for命令通俗解释
http://bbs.bathome.net/thread-9-1-1.html
for 命令 /f 参数 通俗讲解
http://bbs.bathome.net/thread-26-1-1.html
作者: AK47 时间: 2008-9-19 15:56
你说的那个我去看了,不过就是这一个还是不明白for /f "skip=4 tokens=3 delims=: " 能不能讲得通俗易懂些,最好有简单的例子说明
作者: Batcher 时间: 2008-9-19 16:02
这个里面没有例子?还是不通俗易懂?
for 命令 /f 参数 通俗讲解
http://bbs.bathome.net/thread-26-1-1.html
作者: batman 时间: 2008-9-19 16:50 标题: 我来做下简化吧:
利用今天告诉大家的新知识-点阵:- @echo off
- for /f "skip=12 delims=" %%a in (%~fs0) do (
- for %%b in (%%a) do (
- for /f "tokens=1,2 delims=-" %%c in ("%%b") do (
- set "_%%c=%%d"
- )
- )
- )
- for /f "skip=4 tokens=3 delims=: " %%i in ('netstat /a /n') do (
- if defined _%%i call,echo 发现%%_%%i%%&echo.
- )
- pause>nul&goto :eof
- 7626-冰河 8102-网络神偷 3205-黑洞2000 2001-黑洞2001 6267-广外女生 7306-网络精灵 8011-赖小子 23444-网络公牛 19191-蓝色火焰 27374-东方魔眼
复制代码
作者: namejm 时间: 2008-9-19 17:07
把 netstat -a -n 这条命令的执行结果作为for语句的处理对象,跳过命令执行结果的头4行,并以冒号和空格作为分隔符来切分命令执行结果,提取切分后的第3节字符串。至于为什么要跳过头4行内容,在cmd窗口中执行 netstat -a -n 查看执行结果就知道了。
作者: AK47 时间: 2008-9-19 17:21
delims=: 能不能改换成delims=., 两者有什么区别吗?
作者: AK47 时间: 2008-9-19 17:24
for /f "skip=4 tokens=3 delims=: " 管事员就是不一样,这条代码中的skip=4 我已经看懂了,后面的还是差那么一点点
作者: batman 时间: 2008-9-19 17:38
"delims=: "就是将空格和:同时来做为分隔符来分隔每行的字符,举个例子:
如TCP 134.163.144.255:3217 219.133.60.243:8000 CLOSE_WAIT
可看成TCP(分隔符)134.163.144.255(分隔符)3217(分隔符)219.133.60.243(分隔符)8000(分隔符)CLOSE_WAIT
作者: AK47 时间: 2008-9-19 17:42
哦,明白了,那这个呢tokens=3
作者: Batcher 时间: 2008-9-19 20:18 标题: 回复 13楼 的帖子
取第三列
作者: AK47 时间: 2008-9-20 10:24
呵呵,已经差不多懂了,再多一点实践就行了
作者: Batcher 时间: 2008-9-21 13:12 标题: 回复 16楼 的帖子
看看这个帖子
http://bbs.bathome.net/thread-1899-1-1.html
作者: namejm 时间: 2008-9-21 13:40
batman的做法是把批处理代码和配置信息放在同一个文件中:for可以读取文本文件,~fs0表示获取批处理本身的完整路径,只不过这个路径是以短文件名的格式出现的,防止出现特殊字符;skip=12跳过批处理文件的头12行,13行开始就是配置信息了。
不过,一般不提倡把代码和数据放在一起,因为如果需要修改代码的话,数据的位置会发生改变,有可能还会引起数据格式的改变,对于十分依赖数据行列位置进行处理的程序而言,在修改代码的同时,有可能还得重排数据,会加大很多工作量。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |