无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 8351|回复: 23
打印 上一主题 下一主题

请教:能否能用批处理实现编码的转换。【已解决】

[复制链接]
跳转到指定楼层
1#
发表于 2007-6-3 07:17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教:能否能用批处理实现编码的转换。
我想自动实现把类似下面的16位制字符转换成字符,并赋予变量。能不能实现?需第三方软件也可,但要能支持行命令。

00000004E00: 45 30 38 33 39 32 42 42 38 39 44 45 44 42 38 45
00000004E10: 44 36 46 42 32 39 38 46 38 45 37 32 39 43 31 35
(结果应是E08392BB89DEDB8ED6FB298F8E729C15)
-----------------------------------------------------------------------------------
我把整个问题的思路汇报一下,便于各位出手。呵呵。

这个问题的起源,是前两天的一个关于文件保护的帖子中的一部分。不过这里不再考虑其它方法,仅就16进制转普通的字符进行讨论。

注意:所有操作通过批处理实现。

1,输入设定密码。
2,把密码字符转换成MD5,(32个字符,即形如E08392BB89DEDB8ED6FB298F8E729C15)。
3,用第三方工具写入某一空扇区,保存此密码。
4,验证时,读取该扇区到文本文件,形如
00000004E00: 45 30 38 33 39 32 42 42 38 39 44 45 44 42 38 45
00000004E10: 44 36 46 42 32 39 38 46 38 45 37 32 39 43 31 35
5,把前两行16进制的字符,转成普通的32个字符。
6,输入验证密码,转成MD5。
7,两者比较。完成。

[ 本帖最后由 lianjiang 于 2007-6-3 02:47 PM 编辑 ]
2#
发表于 2007-6-3 10:25:05 | 只看该作者
你上面的本身就是ASCII码,需要转换吗?:em32
回复

使用道具 举报

3#
 楼主| 发表于 2007-6-3 11:09:14 | 只看该作者
需要装换成“E08392BB89DEDB8ED6FB298F8E729C15”
回复

使用道具 举报

4#
发表于 2007-6-3 11:22:13 | 只看该作者
原帖由 netwinxp 于 2007-6-3 10:25 AM 发表
你上面的本身就是ASCII码,需要转换吗?:em32

上面的是带有行标识的十六进制数,下面的才是标准的ASCII码。
要支持命令行,我也帮楼主关注下
回复

使用道具 举报

5#
 楼主| 发表于 2007-6-3 11:31:29 | 只看该作者
我是想把文本文件里的16进制字符,转成普通ASCII字符。

不转成文本,我也无法贴上来呀,呵呵。
回复

使用道具 举报

6#
发表于 2007-6-3 11:35:04 | 只看该作者
把上面的那段16进制直接存成TXT文件就可以了
回复

使用道具 举报

7#
发表于 2007-6-3 11:37:58 | 只看该作者
原帖由 q8q8feng 于 2007-6-3 11:22 发表

上面的是带有行标识的十六进制数,下面的才是标准的ASCII码。
要支持命令行,我也帮楼主关注下

下面的是字符串,上面的才是ASCII码,英文、数字等字符在计算机中是以ASCII来表示的,也就是说下面的那段,在内存中也是按上面那段的方式存在的。下面那段要是ASCII那就成了乱码了:em32

[ 本帖最后由 netwinxp 于 2007-6-3 11:39 AM 编辑 ]
回复

使用道具 举报

8#
发表于 2007-6-3 11:40:09 | 只看该作者
问题倒是不大

先过滤掉样本中的地址段字节

再格式化成命令行程序的输入格式

使用一个hex2bin的程序

或者使用自带的debug都没有问题

-----------------------------------------------

问题是,从样本来看

极有可能是从16进制查看程序中得到的

通常它们都应该会有H2B的转换捷径

现在的方法应该是绕路了

不妨将原本的意图说出来

看看有没有什么更简单的办法
回复

使用道具 举报

9#
发表于 2007-6-3 11:43:30 | 只看该作者
奇怪,为何会有4E00这种鬼冬冬……
回复

使用道具 举报

10#
 楼主| 发表于 2007-6-3 11:53:57 | 只看该作者
好的,我把整个问题的思路汇报一下,便于各位出手。呵呵。

这个问题的起源,是前两天的一个关于文件保护的帖子中的一部分。不过这里不再考虑其它方法,仅就16进制转普通的字符进行讨论。

注意:所有操作通过批处理实现。

1,输入设定密码。
2,把密码字符转换成MD5,(32个字符,即形如E08392BB89DEDB8ED6FB298F8E729C15)。
3,用第三方工具写入某一空扇区,保存此密码。
4,验证时,读取该扇区到文本文件,形如
00000004E00: 45 30 38 33 39 32 42 42 38 39 44 45 44 42 38 45
00000004E10: 44 36 46 42 32 39 38 46 38 45 37 32 39 43 31 35
5,把前两行16进制的字符,转成普通的32个字符。
6,输入验证密码,转成MD5。
7,两者比较。完成。
回复

使用道具 举报

11#
发表于 2007-6-3 12:11:03 | 只看该作者
果然绕了一些弯路

----------------------------------------------------------

首先这个第三方工具用的并不够好

既然可以将文本串写入

就应该可以直接读出文本串

除非这个工具本身不够好

------------------------------------------------------------

debug也完全可以实现指定扇区的读写

只是c/h/s这些参数需要自己计算

-----------------------------------------------------

应该注意到md5码它本身就是十六进制数

可以直接写入二进制数到扇区

而并非是将编码后的文本串写入到扇区

这样要安全和简单一些
--------------------------------------------------------

要比较的时候

也可以不用将原位置的码提取出来

可以再在原码更靠后的地址上写入验证码

然后用Debug的c命令进行比较

-----------------------------------------------------------------

说这些的目的

主要是为了避免一些预处理的工作

这在dos下很麻烦

在cmd下虽然简单,但容易出问题
---------------------------------------------------

最后,请指出你的运行环境
回复

使用道具 举报

12#
发表于 2007-6-3 12:19:05 | 只看该作者
想要省事一些的话

这里的东西可能对你有用

http://www.cn-dos.net/forum/viewthread.php?tid=21955
回复

使用道具 举报

13#
 楼主| 发表于 2007-6-3 12:20:32 | 只看该作者
谢谢楼上的高手。
本人计算机基础和水平都差,还请包涵,呵呵。
我现在的思路是根据手上已有的软件,进行组合后提出的。有更简便的办法,当然更好。
写入和读取扇区是用的diskrw。
使用环境是win 2k/xp/vista。目前不需要dos下的。当然,假如部分操作只能在dos下完成的话,也可以考虑。
回复

使用道具 举报

14#
 楼主| 发表于 2007-6-3 12:22:05 | 只看该作者
原帖由 qzwqzw 于 2007-6-3 12:19 PM 发表
想要省事一些的话

这里的东西可能对你有用

http://www.cn-dos.net/forum/viewthread.php?tid=21955

谢谢,我去看看。
回复

使用道具 举报

15#
 楼主| 发表于 2007-6-3 12:28:19 | 只看该作者
要比较的时候

也可以不用将原位置的码提取出来

可以再在原码更靠后的地址上写入验证码

然后用Debug的c命令进行比较
-------------------------------------------------
谢谢,此法很好,呵呵,我怎么没想到。
我只想到读出来再比较。(现在把密码保存在文本中,就是这样进行的。)
确实把验证码再写入一个扇区,直接比较两个扇区就行了。我现在用的diskrw就有此功能。
这样的话,也就无需考虑转换了,直接就完成了。
再次感谢。
回复

使用道具 举报

16#
发表于 2007-6-3 12:45:36 | 只看该作者
晕哦,楼上出的是什么软件?千万别让偶用到,不然我的硬盘都被你搞乱了……
回复

使用道具 举报

17#
 楼主| 发表于 2007-6-3 12:47:39 | 只看该作者
原帖由 qzwqzw 于 2007-6-3 12:11 PM 发表
首先这个第三方工具用的并不够好
既然可以将文本串写入
就应该可以直接读出文本串
除非这个工具本身不够好
- ...

把32个字符写入扇区的方法原来我也不会,只会写入512字节的bin文件到扇区,是c男的办法才解决了把字符写入扇区的。
方法是把32个字符写入文件,然后补上512-32个字符,这样是一个扇区大小了,所以就能写入扇区了。
直接读取字符的方法不会。呵呵。

这个主要不是工具的问题,是自己没用好。呵呵。
回复

使用道具 举报

18#
 楼主| 发表于 2007-6-3 12:49:57 | 只看该作者
原帖由 弄潮儿-NET 于 2007-6-3 12:45 PM 发表
晕哦,楼上出的是什么软件?千万别让偶用到,不然我的硬盘都被你搞乱了……

呵呵,还没用呢。
将来就是要用,不是全为0的扇区,也不会写入的。
回复

使用道具 举报

19#
发表于 2007-6-3 12:55:51 | 只看该作者
太好了 很有意义:)
回复

使用道具 举报

20#
 楼主| 发表于 2007-6-3 13:02:18 | 只看该作者
考虑了一下,写入另一扇区的话,就需要用两个扇区。
似乎也可这样:
备份写入了设置密码的扇区到文件,把验证密码文件写入该扇区,比较扇区与备份文件。
这样的话,只要一个扇区就行了。
缺点是增加了写入次数。
回复

使用道具 举报

21#
发表于 2007-6-3 14:04:20 | 只看该作者
原帖由 lianjiang 于 2007-6-3 01:02 PM 发表
考虑了一下,写入另一扇区的话,就需要用两个扇区。
似乎也可这样:
备份写入了设置密码的扇区到文件,把验证密码文件写入该扇区,比较扇区与备份文件。
这样的话,只要一个扇区就行了。
缺点是增加了写入次数。

增加写入总感觉不太爽快。
我试了下qzwqzw 提到的帖子中一楼中的工具,txt2bin.exe:
把你一楼的
00000004E00: 45 30 38 33 39 32 42 42 38 39 44 45 44 42 38 45
00000004E10: 44 36 46 42 32 39 38 46 38 45 37 32 39 43 31 35
直接改动一下,去掉多余的空格和行标识,即为:
--------------------------------------------------------------------------------------------
4530383339324242383944454442384544364642323938463845373239433135,直接写入txt,名为1.txt
然后使用txt2bin.exe,转换的bin文件(1.bin)内容即为所需的32个字符:
E08392BB89DEDB8ED6FB298F8E729C15
--------------------------------------------------------------------------------------------
后面的就简单了,将这个bin写入空闲扇区,使用diskrw是很简单的事情,批处理很容实现这些的,比如我们要写入第20扇区:

[ 本帖最后由 q8q8feng 于 2007-6-3 02:09 PM 编辑 ]
回复

使用道具 举报

22#
 楼主| 发表于 2007-6-3 14:54:46 | 只看该作者
感谢各位的解答,此问题已得到圆满解决。
回复

使用道具 举报

23#
发表于 2007-6-3 15:18:46 | 只看该作者
提个建议,为了防止密码被非法读取,原来的密码最好经过MD5转换后,再写进去,后面输入的口令经MD5转换后与原来写进去的进行比较,相同则密码正确,反之错误,至于MD5转换的方法可以参照ASPSKY论坛源代码或通过软件完成。
回复

使用道具 举报

24#
 楼主| 发表于 2007-6-3 16:11:24 | 只看该作者
原帖由 netwinxp 于 2007-6-3 03:18 PM 发表
提个建议,为了防止密码被非法读取,原来的密码最好经过MD5转换后,再写进去,后面输入的口令经MD5转换后与原来写进去的进行比较,相同则密码正确,反之错误,至于MD5转换的方法可以参照ASPSKY论坛源代码或通过 ...


谢谢。
是的,原有思路就是经过MD5转换的。1楼。
-----------------------------------------------------
1,输入设定密码。
2,把密码字符转换成MD5,(32个字符,即形如E08392BB89DEDB8ED6FB298F8E729C15)。
3,用第三方工具写入某一空扇区,保存此密码。
4,验证时,读取该扇区到文本文件,形如
00000004E00: 45 30 38 33 39 32 42 42 38 39 44 45 44 42 38 45
00000004E10: 44 36 46 42 32 39 38 46 38 45 37 32 39 43 31 35
5,把前两行16进制的字符,转成普通的32个字符。
6,输入验证密码,转成MD5。
7,两者比较。完成。
==================
现变成
1,输入设定密码。
2,把密码字符转换成MD5,(32个字符,即形如E08392BB89DEDB8ED6FB298F8E729C15)。
3,用第三方工具写入某一空扇区,保存此密码。
4,验证时,读取该扇区。
5,输入验证密码,转成MD5。
6,两者比较。完成。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-15 20:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表