欢迎来到电脑知识学习网,专业的电脑知识大全学习平台!

手机版

win10恢复默认host-(Win10恢复默认设置)

电脑故障 发布时间:2022-12-11 22:16:52
win10恢复默认host (Win10恢复默认设置)

网管小贾 / sysadm.cc

初春,乍暖还寒,心情不错的我哼着小曲踱进了卫生间。

正当我吹着口哨带薪放松的时候,忽然收到老板的消息,说是服务器无法登录了。

特么搞什么灰机?没见我正忙着呢嘛!

我急忙抖动了两下,一边忿忿不平,一边小步快走,现在的春天还是挺冷的啊!


搞慢了又得挨老板骂,我立马回到工位,熟练地打开了 Putty ,一顿噼里啪啦输入用户名和密码,回车走起!

哎呀我去,我眼镜滑了一下,还真是无法登录哈!




密码是多少来着?

一连试了好N多次都失败了,我心里开始有点发毛......

系统运行倒是一切正常,就是密码怎么也不正确!

难道被黑了?不可能啊!

所有记得的密码都试了个遍,都不对,实在是想不起来还能有什么密码了。

这时突然想起来,为了往服务器里传数据,我还用过 WinSCP 连接过服务器,那上面还保存着密码呢!


嘿嘿,想在这儿,我立马打开了 WinSCP ,太好了,密码还真保存着呢!




尝试登录了一下,果然成功登录服务器,看来保存的密码是OK的!

只是如果调用 Putty ,还是要你输入密码才行,这可怎么办?

再这样下去可不行,时间紧迫,于是我马上上网看看有没有啥好办法。


哎,没想到哈,网上关于解密 WinSCP 会话密码的文章还挺多。

不过这些文章都指向了一个叫作 winscppasswd 的程序,于是我最后找到了它在 GitHub 上的同名项目。

https://github.com/anoopengineer/winscppasswd


winscppasswd介绍

winscppasswd 是 WinSCP Password Extractor/Decrypter/Revealer 的缩写,意为 WinSCP 解密工具,以命令行形式运行。

WinSCP 存储的会话中有以加密形式保存的密码,通常这些会话保留在注册表中。

而这款小工具 winscppasswd 就是当你遗忘会话密码时,可以帮助你唤醒记忆,最后将密码找回来。


而这款工具的作者制作它的初衷显得非常幽默搞笑,他说是为了不断地忘记曾经保存过的密码而编写的。

大神不仅仅只有幽默,而且做起事来也非常严谨可靠,他不太信任那些从互联网上下载下来的未知来源的工具,因此大神自己亲力亲为打造了这款工具。

大神也是人,我猜他肯定也是被广告、木马啥的给整怕了,不过正好,我们这些小白也从中受益,有幸一睹风采,一起学习学习。

winscppasswd 是用 Golang 编写的,如果你是学过 Go 语言的小伙伴,那么你就可以直接上手了。

不过我对 Go 来说是七窍通了六窍,一窍不通。


还好作者已将现成的命令打包并提供给我们下载,那我就先下载下来试用试用吧。




好了,下载完毕,直接运行 winscppasswd.exe 会给出如下提示。

WinSCP stored password finder Open regedit and navigate to [HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions] to get the hostname, username and encrypted password

Usage winscppasswd.exe <host> <username> <encrypted_password>


根据这些提示,再加上 GitHub 项目页上的使用步骤介绍,最后明白了它的使用方法。

大概的意思是,先到注册表中找到相应会话的注册表项,获取到其中的主机名、用户名和加密密码,然后再用这个 winscppasswd 加上参数这么一执行,密码就给解出来了。

真的这么神吗,试试就试试,咱们说干就干!


寻找主机名、用户名和加密密码

我按照提示,果然找到了注册表项中保存的会话。

HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions




我们赶紧拿保存的服务器会话信息记录下来测试吧。

根据前面命令提示的语法,再按上面的配置,那么我们写命令就可以像下面这样。

# host: 主机名# username: 用户名# encrypted_password: 加密的密码# winscppasswd.exe <host> <username> <encrypted_password>winscppasswd.exe 192.168.123.123 root A35C435937195E68B72E3333286D656E726D6A64726D6E6F726D6E6F0F252F3D3831721F3F6D6E6F5D23011F2A5FD8DC56EA


唰的一下,我的密码顺利找回来了,欧耶!

短短1秒钟,密码一览无余,我破防了,太厉害了!




密码找了回来,然而事情就这样结束了吗?

No,No,接着往下看!


更多的 WinSCP会话存储位置

其实除了注册表,WinSCP 还可以有其他地方存有会话信息。

我们打开 WinSCP ,点击左下解的 工具(T) 按钮,在弹出的菜单中点击 选项(P) 。




在打开的 选项 窗口中,我们找到 存储 设置一项,在其中我们就可以看到,WinSCP 的会话有三种存储路径。

Windows注册表HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions自动INI文件C:\Users\<用户名>\AppData\Roaming\WinSCP.ini自定义INI文件比如:C:\Users\<用户名>\Documents\WinSCP.ini


电脑



默认情况下,我们的会话就是保存在注册表中的,当然我们还可以按以上方式自由修改存储路径。

因此为了恢复密码,其实我们是不需要刻意修改 WinSCP.ini 的存储路径,也不一定需要去找注册表项。

实际上我们通过点击 工具(T) ,然后再点击 导出/备份配置(E)... 后就可以将 WinSCP.ini 单独保存一份出来。




导出的 WinSCP.ini 文件随便你放哪儿都行。

打开它我们就能看到其中的会话项,并且附带有主机名、用户名以及加密密码等信息,这些其实和注册表中保存的是一样的。

[Sessions\root@192.168.123.123]HostName=192.168.123.123UserName=rootPassword=A35C435937195E68B72E3333286D656E726D6A64726D6E6F726D6E6F0F252F3D3831721F3F6D6E6F5D23011F2A5FD8DC56EA


电脑



这里需要注意一下,如果当初保存会话时你没有选择保存密码,那么在配置文件 WinSCP.ini 中是看不到加密密码的哦。




有了导出的 WinSCP.ini 文件,我们同样可以查找对应的会话连接信息而不用专门去查注册表。

然而 WinSCP.ini 文件就只能是用来查会话信息的吗?

事情显然没有那么简单!


从源码中发现的套路

正如大神作者说的,他质疑一切第三方不明来源的工具,但人家是大神有能力质疑,我等小白实力不允许,实在是臣妾做不到啊!

哎?也不知道怎么了,暗自崇拜大神的我猛然发现,这玩意居然只有一个源代码文件!


电脑



What?真的假的,那这个文件一定很大!

我一边猜度着一边就把这个文件给下载下来了,结果一看,居然只有 2.83K !

哦,天啊,好大啊!这个文件...好...大...啊...!

我嘴里哼了一声,立马用文本编辑器打开了它!

看不懂 Go 的我一头雾水,但还是被我发现了一些端倪。

如下图,似乎命令还支持读取 ini 文件啊!




终于被我发现了啊!

原来,在 Release 发布命令之后,作者又修改强化了命令功能。

我们从下图中能分析出来,Release 最新版是在 2014年3月14日 发布,而源代码文件最后更新大概是在5年前。

那么我们倒推回去就能知道,源代码文件应该是在 2017 年前后做了最后一次更新,很显然要晚于 Release 最新发布日。




要是不相信,我们可以直接跑源代码来证实嘛!

好了,在此之前,我们需要做些准备工作。


直接跑源代码

到 Golang 中文社区下载最新版 Go 安装,这没啥多说的。

然后 winscppasswd 引用了 github.com/go-ini/ini 包,因此我们还需要做一些工作。


首先,修改环境变量 GOPROXY ,否则无法下载所需程序包。

go env -w GO111MODULE=autogo env -w GOPROXY=https://goproxy.io,direct


其次,获取所需的 ini 程序包。

go get github.com/go-ini/ini


程序包被下载到了 GOPATH 下,默认为以下路径。

C:\Users\<用户名>\go


在下载过程中如果你遇到了除无法下载之外的错误提示,那么多半是你需要升级你的 GO 了。


最后,我们来直接执行源码的方式运行一下看看哈。

go run winscppwd.go


飒!可以看出,它的的确确还支持指定 ini 文件参数的语法,这样就可以批量解密了。

winscppasswd.exe ini [<filepath>]




我们用前面导出的 WinSCP.ini 文件再来试试看哈。

我的个天啊,我的小手在颤抖!

全都出来了,裤子被扒得一干二净,还有没有隐私啦?




好了,我们最后来对比总结一下新旧版本。

旧版语法不支持指定 WinSCP.ini 文件,只能一个一个解密。




新版功能更强大一些,直接甩给它 WinSCP.ini 就能批量找回密码啦!




好了,新版既然如何强大,那么我们当然不能放过罗,直接编译生成新版命令吧!

咳咳,注意啦,你们等待已久的免费下载在此开启啦!


winscppasswd旧版.7z (439K)

下载链接:https://pan.baidu.com/s/1gkxXShfOMMYmYoAtGwCoRQ

提取码:<关注公众号,发送000920>


winscppasswd新版.7z (1.22M) 含源码

下载链接:https://pan.baidu.com/s/1z-blZ0FWs_JVNLQ9tL-vXQ

提取码:<关注公众号,发送000920>


写在最后

本来打算自己用VB写一个同样可以实现找回密码功能的程序,但是无奈我对 GO 的语法完全是青蛙跳井噗通噗通(不懂不懂),一时半会儿也没办法搞清楚解密的算法,因此暂时放弃,等研究会了算法再次来过。

另外如果只是单纯调用 winscppasswd 命令的基础上写个 GUI 似乎又有些鸡肋,所以说还是要等有朝一日搞懂算法再弄个 GUI 才有意义,对吧!

或者,哪位小伙伴能不吝赐教告诉我这个算法,也省得我担心仅有的那几根毛发不保(保住几根毛不易啊!)。

好了,分享到此又要和小伙伴们说拜拜了!

勿忘点赞、分享转发,切记切记务必偷偷收藏本文,答应我千万不要将本文看到的内容用于不可描述的场合哦!

网管小贾 / sysadm.cc


电脑
责任编辑:电脑知识学习网

电脑故障