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
改了,呵呵
不支持中文显示
批处理中写汇编都是这样的,呵呵

作者: 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
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
不知道是不是同一个作者,这是什么原理?哪位朋友出来给解解惑。
当然是同一个作者,德国牛人 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
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
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
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    标题: 解释:


作者: 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
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
学习了,收藏备用。谢谢楼主!