中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-30 02:04
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]QQ自助登陆:如何对16进制MD5值本身进行Base64 查看 10,375 回复 30
楼 主 [已解决]QQ自助登陆:如何对16进制MD5值本身进行Base64 发表于 2007-01-23 08:10 ·  中国 河北 石家庄 电信
初级用户
积分 57
发帖 25
注册 2007-01-21 10:01
19年会员
UID 77223
性别 男
状态 离线
目的是让QQ登陆。密码需要先MD5,再Base64,最后向服务器发送。

以为解决了:
http://www.cn-dos.net/forum/viewthread.php?tid=26993

结果发现ASCII字符串没用,需要将hex值本身进行Base64…

以“123456”为例:
1.MD5输出ASCII:E10ADC3949BA59ABBE56E057F20F883E
2.将hex值Base64:4QrcOUm6Wau+VuBX8g+IPg==
登陆正确。

ASCII字符经Base64则是:RTEwQURDMzk0OUJBNTlBQkJFNTZFMDU3RjIwRjg4M0U=
登陆失败。

有人专门写了VB控件作这个:
http://mji.512j.com/QQpwdhash.rar

很麻烦啊,要怎么解决呢@_@

[ Last edited by ec2049 on 2007-4-11 at 07:53 AM ]
2 发表于 2007-01-23 22:54 ·  中国 河北 石家庄 电信
初级用户
积分 57
发帖 25
注册 2007-01-21 10:01
19年会员
UID 77223
性别 男
状态 离线
等啊等啊等啊……
3 发表于 2007-01-23 22:59 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
昨天想看看能不能帮兄点儿什么忙,只是实在看不懂:)

兄上面说 “ 以“123456”为例:
       1.MD5输出ASCII:E10ADC3949BA59ABBE56E057F20F883E
     ”
而我计算 “Echo 123456|md5” 出来的值是:41933E60E9C19B866B3D68864727AFE7

我想兄中间是不是还有一步计算过程(好象是转Hex的过程没有写出来),也主要是我没有看懂,也没能帮上兄什么忙,不好意思~:)

后,以到网上找了找,兄要实现的好象是 QQ同时启动多个号码自动登陆?

[ Last edited by redtek on 2007-1-23 at 10:01 AM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
4 发表于 2007-01-23 23:09 ·  中国 河北 石家庄 电信
初级用户
积分 57
发帖 25
注册 2007-01-21 10:01
19年会员
UID 77223
性别 男
状态 离线
我发现了那个md5.exe的开关: -d%text%
举例:
C:\>md5 -d123456
E10ADC3949BA59ABBE56E057F20F883E

这才是正确的MD5值,与其它软件/网站计算结果相符。

进行Base64的不是ASCII值,而是:

[ Last edited by ec2049 on 2007-1-23 at 11:25 PM ]
附件
MD5-hex.png
5 发表于 2007-01-23 23:16 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
看到了~:)))
上次使用 md5.exe /? 不行, 按unix帮助方式 md5.exe --help 还不行,md5.exe /help 不行,原来是: md5.exe -help (居然必须加一个减号才行),哈哈……

多谢ec2049兄指点~:)


MD5 -- Calculate MD5 signature of file. Call
with md5

Options:
-csig Check against sig, set exit status 0 = OK
-dtext Compute signature of text argument
-l Use lower case letters for hexadecimal digits
-n Do not show file name after sum
-ofname Write output to fname (- = stdout)
-u Print this message
-v Print version information

by John Walker -- http://www.fourmilab.ch/
Version 2.0 (2003-04-15)

This program is in the public domain.

    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
6 发表于 2007-01-23 23:28 ·  中国 河北 石家庄 电信
初级用户
积分 57
发帖 25
注册 2007-01-21 10:01
19年会员
UID 77223
性别 男
状态 离线
现在要解决如何用MD5的hex值进行Base64,因为直接输出的ASCII无效……

[ Last edited by ec2049 on 2007-1-23 at 11:29 PM ]
7 发表于 2007-01-23 23:32 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
明白了,哈哈……
这QQ加密真有意思~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
8 发表于 2007-01-24 00:17 ·  中国 河北 石家庄 电信
初级用户
积分 57
发帖 25
注册 2007-01-21 10:01
19年会员
UID 77223
性别 男
状态 离线
目前的思路:学习debug用法,借用临时文件……
9 发表于 2007-01-24 01:01 ·  中国 天津 电信
初级用户
积分 97
发帖 43
注册 2005-07-25 22:07
20年会员
UID 41055
状态 离线
我什么都不懂,因为好奇就看了看,
NFFyY09VbTZXYXUrVnVCWDhnK0lQZz09
以上这个字符如果经BASE64后则是:4QrcOUm6Wau+VuBX8g+IPg==

也就是登录正确的字符,不知道对楼主有没有什么参考作用。
10 发表于 2007-01-24 02:08 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
QQ密码转PwdHash:


@echo %dbg% off && setlocal && chcp 437|graftabl 936>nul && set /p var=字符串:
for /f %%. in ('md5 -d%var%') do set "var=%%."

:toSplit
if == (goto :toBase64) else (call call set "str=%str% %%var:~%a%,2%%" && set /a a+=2)
goto :toSplit

:toBase64
echo exit|%ComSpec%/kprompt e 100 %str% $_rcx$_10$_n tmp.tmp$_w$_q$_|debug>nul
for /f %%. in ('type tmp.tmp^|base64') do ( set "base64=%%." )
echo.&echo PwdHash码: %base64% && del tmp.tmp >nul 2>nul


:: 变量 %base64% 中存有 base64 码,兄可以直接随意调用





ec2049兄提供的外部工具(MD5工具与Base64工具)下载地址:
http://zhenlove.com.cn/cndos/fileup/files/md5.zip
http://zhenlove.com.cn/cndos/fileup/files/base64.zip

[ Last edited by redtek on 2007-1-23 at 01:52 PM ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
kafen +2 2007-01-24 03:09
0401 +2 2007-01-24 05:41
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
11 发表于 2007-01-24 04:50 ·  中国 河北 石家庄 电信
初级用户
积分 57
发帖 25
注册 2007-01-21 10:01
19年会员
UID 77223
性别 男
状态 离线
有效~谢谢:-)

继续研究中~

[ Last edited by ec2049 on 2007-1-24 at 04:52 AM ]
12 发表于 2007-01-24 05:35 ·  中国 北京 朝阳区 联通
中级用户
★★
带走
积分 435
发帖 88
注册 2005-09-24 19:22
20年会员
UID 42793
状态 离线
我也提供个思路,因为以前研究过Base64 编码运算,直接将代码拷过来改下,测试成功。只用到MD5.exe
@echo off
setlocal enabledelayedexpansion
set B64CODE=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
set/p str=请输入密码:
for /f %%i in ('md5 -d%str%') do set "strhex=%%i"

:encloop
if not defined strhex goto :encbreak
set chr1=0x!strhex:~0,2!
set chr2=0x!strhex:~2,2!
set chr3=0x!strhex:~4,2!
set strhex=%strhex:~6%
for %%i in (chr1 chr2 chr3) do if "!%%i!"=="0x" set %%i=0
set/a enc1=%chr1%">>"2
set/a enc2=((%chr1%"&"3)"<<"4)"|"(%chr2%">>"4)
set/a enc3=((%chr2%"&"15)"<<"2)"|"(%chr3%">>"6)
set/a enc4=%chr3%"&"63
if %chr3% equ 0 if %chr2% equ 0 (set enc4=64& set enc3=64) else (set enc4=64)
set encstr=!encstr!!B64CODE:~%enc1%,1!!B64CODE:~%enc2%,1!!B64CODE:~%enc3%,1!!B64CODE:~%enc4%,1!
goto :encloop
:encbreak
echo QQPwdHash:
本帖最近评分记录 (共 5 条) 点击查看详情
评分人分数时间
vkill +5 2007-01-24 09:01
chenall +5 2007-01-25 01:02
redtek +13 2007-01-26 06:56
honghunter +4 2008-01-11 23:11
hkymadmin +2 2008-07-28 15:37
13 发表于 2007-01-24 06:19 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
0401兄代码非常精彩,欣赏~~~
明天分儿来时给兄加上~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
14 发表于 2007-01-24 09:01 ·  中国 甘肃 平凉 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
0401兄那段base64确实漂亮
15 发表于 2007-01-24 09:04 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  嗯,的确不错,不过要是密码含有特殊符号就不行了。
论坛跳转: