标题: 批处理输入密码但不显示字符的代码
[打印本页]
作者: 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
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
学习了,收藏备用。谢谢楼主!