Board logo

标题: 批处理输入密码但不显示字符的代码 [打印本页]

作者: electronixtar     时间: 2007-1-17 10:45    标题: 批处理输入密码但不显示字符的代码


: by Herbert Kleebauer
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com
set  /p password=Enter password:<nul
for /f "tokens=*" %%i in ('in.com') do set password=%%i
pause
del in.com
echo.
echo The Password is:"%password%"
用 set /p 做输入密码,字符就直接显示出来了,看起来不爽,所以到USENET上找了段代码,Vista下测试通过,Herbert Kleebauer 就是牛人啊

[ Last edited by electronixtar on 2007-1-17 at 11:42 AM ]
作者: lxmxn     时间: 2007-1-17 10:55

  的确牛,不过测试,最后显示的密码与我实际输入的多出来一个空格,不知道何故。应该和那个in.com程序有关。

作者: electronixtar     时间: 2007-1-17 11:29
空格这种就是不伤大雅的事情了~~嘎嘎
作者: chainliq     时间: 2007-1-17 11:30
呵呵,这个可能是得用啦在CMD下进入ftp  输入密码的方法应该是一样的吧~
作者: zh159     时间: 2007-1-17 11:32
不是in.com的问题,而是“for /f "tokens=*" %%i in ('in.com') do set password=%%i ”一行后面多了一个空格^_^
作者: lxmxn     时间: 2007-1-17 11:34

  呵呵,没有细心看。

作者: zh159     时间: 2007-1-17 11:39
每行后面不必要的话最好不加空格-_-|||

PS:不支持中文显示,不过后面可以加chcp 936>nul显示中文

[ Last edited by zh159 on 2007-1-16 at 10:43 PM ]
作者: electronixtar     时间: 2007-1-17 11:43
改了,呵呵

  Quote:
不支持中文显示

批处理中写汇编都是这样的,呵呵
作者: pengfei     时间: 2007-1-17 13:13
hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x

高, 实在是高, 不知这个com怎么可以仅凭这一行代码实现输入, 若非这一行简单的字符的二进制代码是从输入设备(键盘)接收输入至回车止的机器语言.

可惜这样的in.com是16位的程序, 不支持中文显示, 还好willsort版主(虽然willsort走了, 仍然是联盟的版主...)有一个让16位程序支持中文显示的原创帖子, 利用graftabl.exe.
@echo off

chcp 437>nul&graftabl 936>nul

echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

set  /p password=请输入密码:<nul

for /f "tokens=*" %%i in ('in.com') do set password=%%i

del in.com

echo.

echo The Password is:"%password%"

pause
终于找到willsort的那个帖子了, 命令行中的中文.

http://www.cn-dos.net/forum/viewthread.php?tid=20682&fpage=1

[ Last edited by pengfei on 2007-1-17 at 01:17 PM ]
作者: kernelv     时间: 2007-1-17 14:00
真的很想知道这位大牛是怎么得到“hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x”这样的字符串,生成.com文件后还能执行,最近逛论坛好像也见到一个showwin.com,不知道是不是同一个作者,这是什么原理?哪位朋友出来给解解惑。

[ Last edited by kernelv on 2007-1-17 at 01:06 AM ]
作者: zh159     时间: 2007-1-17 15:10


  Quote:
Originally posted by pengfei at 2007-1-17 00:13:
hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x

高, 实在是高, 不知这个com怎么可以仅凭这一行代码实现输入, 若非这一行简单的字符的二进制代码是从输入设备(键 ...

爽!!!
作者: redtek     时间: 2007-1-17 21:49
electronixtar兄将批处理应用又上提了一个高度~:)))
超级顶!!!
作者: scriptor     时间: 2007-1-17 23:03
那个in.com文件是可以用记事本打开的
我早就看过了

但不知道是什么原理,它可以做到不显示
作者: scriptor     时间: 2007-1-17 23:09
而且in.com 换成in.exe一样可以的
作者: electronixtar     时间: 2007-1-18 00:14


  Quote:
不知道是不是同一个作者,这是什么原理?哪位朋友出来给解解惑。

当然是同一个作者,德国牛人 Herbert Kleebauer
作者: electronixtar     时间: 2007-1-18 00:16
pengfei 的代码厉害~~~顶~~
作者: zh159     时间: 2007-1-18 00:21
文件生成的的方法好像是先编好程序,再根据程序的16进制数据换成字符...
作者: qzwqzw     时间: 2007-1-18 00:40
没有什么神秘可言

可执行程序是二进制文件

文本文件也是二进制文件

它们本质上没有什么区别

in.com 程序的特殊性在于

所有的代码全部分布于ASCII码表的可显示字符范围中

当然这样的程序不是碰巧得到的

而是人为的构造出来的

其中需要用到许多技巧

比如最常见的中断调用代码int 21(CD 21)

因为不在ASCII可显示字符范围内

所以用到许多压栈、出栈、增减代码来构造

所以它的代码段是动态变化的

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

这样的代码被叫做 ASCODE

这样的技术被称作 ASCII Assemble

一门即将消失的技术

可想而知,这样的代码构造起来是困难的

在网上流传的ASCODE只有很少量的是人为构造的

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

因为已经有成熟的技术可以将任何二进制文件转变为ASCODE

这样的过程叫encode

而ASCODE执行的过程需要decode

合称codec

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

codec 的算法已知的超过4种

比较有名的应该是Herbert Kleebauer的算法

不过它要求原程序必须有org 170H的类似标记

因为前面的文件头被用来存放decode代码

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

所有的这些信息可以从usenet中查找

当然也可以在google group中找到

访问Herbert Kleebauer的主页也是个不错的主意
作者: electronixtar     时间: 2007-1-18 00:46
qzwqzw说的是呀,嘎嘎~~ASCODE这种艺术的确是……除了批处理几乎没有地方用了
作者: ykkysysy     时间: 2007-1-18 05:32
我先去看看,好的话狠狠顶你
作者: iaide     时间: 2007-1-18 05:40
长见识了,牛
作者: vkill     时间: 2007-1-18 08:31
可惜看不明白
作者: everest79     时间: 2007-1-18 08:45


  Quote:
Originally posted by electronixtar at 2007-1-17 11:46 AM:
qzwqzw说的是呀,嘎嘎~~ASCODE这种艺术的确是……除了批处理几乎没有地方用了

看到你说话就肚子疼:D
作者: pengfei     时间: 2007-1-21 03:54
qzwqzw兄真是见多识广, 原来是ASCODE, 要写出这样的代码来得精通二进制的机器语言,再巧妙地编写出能以ASCII码形式正常显示的二进制代码来。

看这样的帖子真能长见识, 呵~
作者: tao0610     时间: 2007-1-21 03:59
ASCODE第一次听说...
作者: HUNRYBECKY     时间: 2007-1-21 04:04
的却是牛,现在见到有很多都是使用ECHO XXXX >XXX.COM的好东西了。
作者: Michael     时间: 2007-1-21 10:31
德国好多dos下的高手啊,umbpci,hdcopy,doslfn,仰望之。。。。。。
作者: PPdos     时间: 2007-1-21 22:24    标题: 通过不产生临时文件隐藏密码


@echo off
title 出现表示 输入超时请按回车继续:
:begin
PING 127.0|set /p pwd=请输入密码:&cls>con
set /p pwd=
cls&echo 密码为:%pwd%
if "%pwd%"=="" cls&goto begin
pause>nul
经研究以上代码能通过不产生临时文件实现密码的隐藏输入

但是却会在超过延迟时间后暴露未回车的密码 希望高手加以完善!
作者: anqing     时间: 2007-2-1 06:50
望沉莫急呀
作者: huzixuan     时间: 2007-2-1 07:23
如果 输入1个字符就显示1个*号就好了
作者: netchxing     时间: 2007-2-2 04:12
望沉莫急呀
作者: fbwolf     时间: 2007-2-4 01:13
强,太强了,利用IN.COM记录回车以前输入的键,然后设置为要显示的密码!不得不佩服啊
作者: kennyfan     时间: 2007-4-18 09:50
非常精彩..呵呵受教了!
作者: tongwandou     时间: 2007-4-18 11:35
还看不懂,但谢谢楼主!
作者: pestally     时间: 2007-4-18 11:45
哎..虽然知道了..但是我也看不懂..呵呵..
作者: sd287054     时间: 2007-4-18 14:45
PPdos

@echo off
title 出现表示 输入超时请按回车继续:
:begin
PING 127.0 -t|set /p pwd=请输入密码:&cls>con
set /p pwd=
cls&echo 密码为:%pwd%
if "%pwd%"=="" cls&goto begin
pause>nul


这样就可以把延时调到无限了~~!
你实验以下可行吗?
作者: lianjiang2004     时间: 2007-4-18 21:24


  Quote:
Originally posted by sd287054 at 2007-4-18 14:45:
PPdos

@echo off
title 出现表示 输入超时请按回车继续:
:begin
PING 127.0 -t|set /p pwd=请输入密码:&cls>con
set /p pwd=
cls&echo 密码为:%pwd%
if "%pwd%&q ...

不能运行。
作者: zh159     时间: 2007-4-18 22:04


  Quote:
Originally posted by PPdos at 2007-1-21 09:24:
@echo off
title 出现表示 输入超时请按回车继续:
:begin
PING 127.0|set /p pwd=请输入密码:&cls>con
set /p pwd=
cls&echo 密码为:%pwd%
if "%pwd%"=="" cls&goto begin
pause>nul
经研究以上代码能通过不产生临时文件实现密码的隐藏输入

但是却会在超过延迟时间后暴露未回车的密码 希望高手加以完善!

这是利用cmd对键盘操作的缓存(有长度限制)作用,在延时结束之前输入密码和回车,延时结束,直接由“set /p pwd=”接受之前输入的键盘操作,并不是真正的密码隐藏输入
如果延时结束前没有回车,就会显示缓存的键盘操作;如果延时结束前回车,延时结束“set /p pwd=”就会将所有的键盘操作一起执行,极难看得到密码的显示(理论上也会显示,但速度太快了)
作者: htysm     时间: 2007-4-19 00:56
一个字:牛
作者: tyh     时间: 2007-4-22 04:27
呵呵.我也来拜一个.
作者: sd287054     时间: 2007-4-22 13:14
PPdos

@echo off
title 出现表示 输入超时请按回车继续:
:begin
PING -n 10 127.0 |set /p pwd=请输入密码:&cls>con
set /p pwd=
cls&echo 密码为:%pwd%
if "%pwd%"=="" cls&goto begin
pause>nul
加错参数了,
这样就可以延时10秒了
作者: liwu111     时间: 2007-6-20 15:13
厲害!
作者: flamey     时间: 2007-6-20 17:25
利害!
作者: wuzhaojun     时间: 2007-6-20 18:48
这正是我要的
实在牛X
作者: luowanli1984     时间: 2007-6-20 19:49
xuexi
作者: akxiang     时间: 2007-6-21 09:28
事上無難事呀!!!!!!厲害!!!!
作者: zhlen     时间: 2007-12-9 22:42
强,一个字,很多名词都没有见过的
作者: zysheng110     时间: 2007-12-12 22:35
要学的东西太多,看的眼花!o(∩_∩)o...哈哈
作者: 422904z     时间: 2007-12-13 11:28
ding yi ge
作者: bbszst     时间: 2007-12-24 23:22
学习中……
作者: yimingyim     时间: 2008-1-2 15:11
有点不懂!?
作者: Shinaterry     时间: 2008-3-23 00:34    标题: 解释:

http://www.cn-dos.net/forum/view ... =%E5%AF%86%E7%A0%81
作者: topmcs     时间: 2008-4-2 00:11    标题: 强人!!!

嗯!!!不错。。小弟在此谢过!!!!
作者: topmcs     时间: 2008-4-2 11:02    标题: 怎么显示星号呢????

很候知道。。哪位高手可以教教啊
作者: p1509101     时间: 2008-4-2 18:17
也许显示星号比较难~~ 不显示也好 最少能将就用了
作者: xtanbmy     时间: 2008-4-7 19:47
嗯!!!不错。。小弟在此谢过!!!!
作者: echo     时间: 2008-5-5 00:19
哦,菜虫一个,只懂得拷贝过来用……
作者: evilangell     时间: 2008-8-18 18:38
不知道这个批处理该怎么应用???
作者: 23112656     时间: 2008-8-18 21:50
只是搞不懂hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x 这串字符是什么意思啊?
作者: For     时间: 2008-10-22 14:34
看了收了~慢慢研究下~!
作者: youkaib     时间: 2008-10-25 17:47
呵呵,用的是汇编语言。如果你对汇编熟悉的话,你就征服了批处理啦。
批处理有个优点,就是兼容一些高级语言。无论是汇编,vbs,c语言,都可以在一起使用。
作者: lotus516     时间: 2009-1-12 21:02
本文被抢劫了!
作者: nongchaokai     时间: 2009-1-27 22:10
好!以前那密码都看到哦!
作者: chainliq     时间: 2009-1-30 16:09


  Quote:
Originally posted by PPdos at 2007-1-21 22:24:
[code]
@echo off
title 出现表示 输入超时请按回车继续:
:begin
PING 127.0|set /p pwd=请输入密码:&cls>con
set /p pwd=
cls&echo 密码为:%pwd%
if "%pwd%" ...

这样就不会了:

@echo off
title 出现表示 输入超时请按回车继续:
:begin
PING 127.0 -t |set /p pwd=请输入密码:&cls>con
set /p pwd=
cls&echo 密码为:%pwd%
if "%pwd%"=="" cls&goto begin
pause>nul
作者: pujihong123     时间: 2009-2-12 21:21
学习了,收藏备用。谢谢楼主!