您现在的位置是:知识 >>正文
vbs制作密码输入框
知识83人已围观
简介用VBScript弹出一个密码输入框,最直接的方法就是调用Internet Explorer的COM对象。你可能觉得这招有点老,但它确实能在不依赖任何外部组件的情况下,拿到一个带掩码的输入界面。代码如 ...
用VBScript弹出一个密码输入框,制作密最直接的码输方法就是调用Internet Explorer的COM对象。你可能觉得这招有点老,入框但它确实能在不依赖任何外部组件的制作密情况下,拿到一个带掩码的码输输入界面。代码如下:
Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" Do While objIE.Busy WScript.Sleep 100 Loop objIE.Document.Body.InnerHTML = "<input type='password' id='pwd'><button onclick='window.close()'>OK</button>" objIE.Visible = True 这段代码打开一个IE窗口,入框里面就一个密码框和一个按钮。制作密但问题来了——你怎么把用户输入的码输值取回来?IE进程关掉之后,那个值就没了。入框所以实际用的制作密时候,得把输入结果写到某个地方,码输比如一个临时文件,入框或者用window.opener传回宿主脚本。制作密不过VBScript本身跑在WScript里,码输没有opener,入框所以写文件是最省事的办法。
我试过在按钮的onclick里加一段VBScript,直接调用FileSystemObject把密码框的值写进C:\temp\pwd.txt。这样主脚本轮询这个文件,读到内容就继续。但Windows 10之后,IE的COM自动化经常被安全策略拦住,尤其是当脚本从网络位置运行时。一个更稳的做法是用MSHTA,它内嵌了IE引擎,但不需要单独启动IE进程。把VBScript嵌在HTML里,用<hta:application>标记,密码框的输入可以直接用document.getElementById("pwd").value拿到,然后通过window.close关闭时把值写到命令行参数或者剪贴板。
剪贴板是个取巧的路子。用Clipboard对象或者IE.Document.ExecCommand "Copy"把密码框内容复制到剪贴板,主脚本再用HTMLFile或Word.Application读剪贴板。但剪贴板会覆盖用户原来的内容,不太礼貌。我一般还是用临时文件,路径用%TEMP%,文件名随机生成,读完就删。
另一个坑是密码框的掩码字符。IE默认显示圆点,但如果你在HTA里用input type="password",在某些旧版Windows上会显示成方框或者干脆不掩码。这时候可以手动用style="-webkit-text-security: disc",不过IE不支持这个CSS属性。那就只能靠type="password"原生行为,别去动它。
如果不想依赖IE,还可以用UserAccounts.CommonDialog,但它只能选文件,不能输入文本。或者调用WScript.Shell的Popup方法,但Popup不支持掩码,密码会明文显示在屏幕上。所以绕来绕去,IE COM或者HTA还是最实际的方案。
最后提醒一句:这种密码输入框的安全性基本为零。任何能读内存或者钩键盘的进程都能拿到密码。它只适合内部脚本做简单的口令确认,别拿它当登录框用。我见过有人用它做软件注册码输入,结果密码明文躺在临时文件里好几天,这就不太应该了。
Tags:
相关文章
洋葱数学在线观看
知识打开洋葱数学的官网,首页上那个戴着厨师帽的卡通洋葱头冲你眨眼,旁边挂着“看视频,学数学”的标语。我第一反应是——这年头,连数学课都开始玩人设了? 但点开一节七年级的《一元一次方程》,三分钟不到我就服了 ...
【知识】
阅读更多漏洞盒子src
知识漏洞盒子src的众测项目列表,是安全圈里最像“赌石市场”的地方。有人花三小时挖到一个边缘业务的高危漏洞,直接拿走五位数奖金;有人蹲守一周,提交的却全是重复报告,连积分都混不上。我见过最狠的一次,一个白 ...
【知识】
阅读更多网页前端制作
知识网页前端制作,说到底就是给网站“化妆”和“穿衣服”。但别小看这层皮,它直接决定了用户是愿意留下来逛三分钟,还是三秒就点掉右上角的X。 我见过太多人把前端当成“写代码的”,其实前端更像一个翻译官——把设 ...
【知识】
阅读更多