中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [原创]批量IP地理位置查询器 上一主题 | 下一主题
175891641
初级用户





积分 82
发帖 30
注册 2007-7-3
状态 离线
『楼 主』:  [原创]批量IP地理位置查询器

花了10个小时编的,之前vkill也写过一个ip查询位置的脚本,但要安装curl(CMD下浏览器) 和sed
加上p处理差不多有1MB大,还不能实现批量,更糟的输入我ip出来的是乱码,不知哪里设错了,本来想用ip138的数据,但发现它的cookies是半小时更新一次
而且每查一个ip至少要花1s时间,所以用http://emuch.net/ip.php,准确度跟ip138相当,
原理:用nc向服务器发送带有ip的数据包,然后对返回数据进行过滤,(ps:nc是一款黑客必备的工具。功能非常强大,但可能被瑞星认为是危险软件,所以如报警先关闭杀软)
这里有个瓶颈是nc 发送数据很慢,差不多要6s,也就是说查询单个ip速度至少要6s,不知道要加哪些参数可以解决这个问题.

########ip地理位置批量查询器(须下载nc.exe)##13:30 2007-9-3
########通过nc对http://emuch.net/ip.php提交数据,接受返回数据并整理########
速度参考:由于nc发送数据要占用6s左右的时间,查询单个IP约8s,查询50个ip约25s


if not exist ip.txt pause 找不到ip文件 请以每行一个ip的形式保存在ip.txt中,并不要带多余空格
rem 读取ip列表
set sum=35
for /F "tokens=1 delims=" %%a in ('type ip.txt') do set str=%%a&(
                                                rem 对每一个%%a的字符数进行累加
                                                call :ipcheck
                                                                )

setlocal enabledelayedexpansion
rem 使所有ip列于同一行,并在每个ip之间加入%%i%%0D%%0A%%0D%%0A字符串,
for /f %%i in (ip.txt) do set str=!str!%%i%%0D%%0A%%0D%%0A
***********************************生成发送给网站的数据包 主要是2个变量Content-Length 与iptext*************
echo POST /ip.php HTTP/1.1>>send.txt
echo Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*>>send.txt
echo Referer: http://emuch.net/ip.php>>send.txt
echo Accept-Language: zh-cn>>send.txt
echo Content-Type: application/x-www-form-urlencoded>>send.txt
echo Accept-Encoding: gzip, deflate>>send.txt
echo User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)>>send.txt
echo Host: emuch.net>>send.txt
echo Content-Length: %sum%>>send.txt
echo Connection: Keep-Alive>>send.txt
echo Cache-Control: no-cache>>send.txt
echo.>>send.txt
echo iptext^=%str%^&ok^=%%B5%%D8%%D6%%B7%%B6%%A8%%CE%%BB>>send.txt

rem 发送代有ip列表的数据包给服务器
nc.exe -v emuch.net 80 <send.txt >>recv.txt


*********文本整理*************************
del 地理位置.txt
rem 去除返回数据的前51行
for /f  "skip=51 tokens=1* delims=" %%a in ('type recv.txt') do echo %%a%%b>>地理位置1.txt
rem 去处尾部不含有ip的行
find "#" 地理位置1.txt >地理位置2.txt
rem 过滤第一行的特殊字符并追加在文本末尾
for /f "skip=2 tokens=1* delims=>" %%a in ('type 地理位置2.txt') do @echo.%%b>>地理位置2.txt
rem 去除前3行
for /f "skip=3 tokens=1* delims=" %%a in ('type 地理位置2.txt') do @echo.%%a>>地理位置.txt
del 地理位置2.txt
del 地理位置1.txt
del send.txt
del recv.txt
exit

************* 以下对输入ip字符进行统计,公式为sum=ip总字符数+ip个数*12+35。参考pengfei的一篇文章*******
:ipcheck
echo %str%
set ippress=%str%
set num=0
set "str=%str:"= %"

:next

if not "%str%"=="" (

    set /a num+=1

    set "str=%str:~1%"

    goto next

)
set /a num=%num%+12
set /a sum=sum+%num%
rem call命令中断,返回数据发送程序。
goto :eof

测试用ip
ip.txt
60.174.132.95
60.174.132.126
60.174.135.157
60.174.139.26
60.174.139.26
124.78.117.184
219.130.198.61
220.162.214.9
222.185.197.50
220.162.224.9
60.174.132.95
60.174.132.126
60.174.132.95
62.174.132.126
61.174.135.157
70.174.139.26
60.174.139.26
125.78.117.184
219.130.198.61
220.162.214.9
222.185.197.50
220.162.224.9
60.174.132.95
63.174.132.126

nc下载:http://soft.hackbase.com/view/di ... 1fa67b67247af1a754e

[ Last edited by 175891641 on 2007-9-3 at 06:39 PM ]

   此帖被 +4 点积分     点击查看详情   
评分人:【 vkill 分数: +4  时间:2007-9-3 21:27


2007-9-3 18:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 2 楼』:  

实现批量: 这个只是方法的问题,怎么可以说不可以实现那?

值得攒的是用 nc 后处理返回数据这个思路还是很好的,我在测试p-mailsend的时候也这样用过

2007-9-3 21:27
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: