如何恢复你的比特币钱包密码wallet.dat password 密码丢失遗忘恢复

比特币BITCOIN BTC 以太坊 ETHEREUM ETH 莱特币LITECOIN LTC 资产托管增值服务 QQ:47079569

比特币钱包BITCOIN CORE WALLET wallet.dat密码恢复服务,请找数据恢复服务商 QQ:47079569

 

Genesis Mining 比特币云挖矿优惠码

嫌自己挖矿麻烦?你可以使用云挖矿

节约4%的成本获得更多的算力:cjVGvt

点击访问世界最大云挖矿服务商 genesis-mining 官方网站

点击下载genesis-mining云挖 矿购买使用指南

 

本文中所谈到的恢复方法,对于多数加密货币钱包密码恢复都有效。

如果按照文中提到的每一步去执行的话,相信应该能帮您找到你的钱包密码。不过需要注意的是,密码恢复需要通过强大的CPU来进行计算找寻,如果你有更多性能强大的CPU处理器来帮你的话,那么会更快一些。

如果你感觉你自己搞不定的话,也可以找我们,我们这有强大的CPU集群可以为您提供密码恢复服务。

你可以先尝试自己恢复,如果觉得需要专业服务的话,我们一定能帮到您。

 

可能在过去,你曾买过点比特币,那时候还不怎么值钱。不过谁能想到现在呢!那些你存放在比特币钱包里你都懒得一看的比特币现在值多少?几万?几十万?几百万?或者?!!你想说你已经能因此财务自由了?你真是个好消息!不过坏消息是 – 你发现你丢了你的钱包密码!!这种情况其实很多人都可能发生,不过对我们来说,从来就没有“忘了密码”这一项。你可能会觉得财富离你如此之近,但是伸手可得的财富却仅隔着那几个密码字符的距离… 那也正是为什么这份DIY(Decrypt It Yourself:自己解密)导引文章有其存在价值的原因了!

 

警告:可能本文是你最佳的钱包恢复指导了,不过它还是可能由于以下原因以至并非所有人都能完成最终恢复:

  1. 完成文中所提到的恢复步骤需要你对加密货币的相关知识有一定的了解。
  2. 你的计算机可能运算速度不够快,使得自己找到密码能为一件遥遥无期的事。
  3. 可能你的密码潜在可寻找变量非常多,导致破解难度非常高。除非你的计算机硬件性能非常高,否则很可能永久失去你的密码。

这里,我会着重对比特币钱包密码恢复做介绍,不过对于其它货币钱包密码的恢复,其实过程都是一样的。因此文中提到比特币,你只需要自行脑补替换成你自己的币即可!

 

要求

  1. 请使用比特币钱包文件的最新拷贝(wallet.dat):

一般你的钱包文件会基于你的操作系统而存放在不同位置 – 因此你最好先google下以确定相关信息。在进行找寻密码前,你应该先做好钱包文件备份工作,密码修复作业最好在你的备份钱包上进行,不过记得一定要是用最新的拷贝。如果你在拷贝后曾做个密码更新,那么这个拷贝就无法用于密码找寻了,因为钱包密码已经改过了,你一定要使用最新的钱包拷贝!

  1. 确定最可能的曾用密码有哪些:

如果你知道密码大概可能的情况的话(可能大小写有变或关键词正确但是还带有其它一些附加字符忘记的话),那么找密码的工作会更有希望些。这些通常发生的错误很可能使你始终无法打开钱包的关键。如果你一点都不记得密码是啥的话,那么这就比较麻烦了,“暴力”破解一般只能是比特币钱包密码找回最后的选择,但前我们不会考虑它。继续读下去,你就会知道这种最后的破解方式有多么不可行。

  1. 对Linux系统有最基本的了解:

在尝试本文方法时,你可能会碰到很多技术问题。不过请记住,一旦有问题就网上查下,一般这些问题都能得到解答并有相关解决方法。

  1. 计算芯片

你需要计算机来运行程序来找寻你的钱包密码 – 找寻的快慢取决于你的CPU的快慢,你的CPU运算速度越快越好!

  1. 在找寻前,先列一张你可能的密码清单

你需要列一张密码中可能有的关键词的清单,这样有助于你更快地猜测出你的密码(这在后面第7步中会用到)

  1. 时间…和…耐心

你应该有心理准备,因为是否能快速找到你的密码取决于你猜测并使用密码关键词的准确性。因此找寻密码可能很快,也可能需要几天,几周,几月,甚至几年才能找到你的密码。你可以投入进行密码恢复的PC运行时间越多,那么它能最终找的密码的可能性就越大。

 

最初你可能有的一些疑问和回答

Q: 我那有50台GPU显卡设备,大概可以在1秒处理100万个密码!为什么我用不了呢?

A: 由于比特币钱包的加密机制,GPU当前不能用于解密钱包。如果你正使用GPU进行挖矿的话,它可以计算SHA256或Scrypt哈希。所使用的程序是专门开发用于挖矿工作,且完全是以一种相反的算法处理方式 – 这种算法是用来做钱包加密的。

这里有一段关于”钱包加密的技术细节”文摘可以让你做进一步了解:

钱包加密使用了AES-256-CBC方式对钱包中的私钥进行加密。这些私钥使用了主钥进行的加密,而主钥是一串完全随机的值。之后主钥会用一个派生钥以AES-256-CBC方式加密,此派生钥是以你指定的钱包密码(以SHA512加密机制和OpenSSL的EVP_BytesToKey加密函数生成值存放)和一个基于最初加密设备的运行速度来得出的动态数值(在之后钱包密码改动后,这个值也会根据当前计算机设备速度情况生成新值来同时更新)组合派生而成。虽然底层代码支持对同一个主钥进行多份加密拷贝(这就需要对应支持多个密码),不过现在的客户端并未提供额外增加多个钱包密码的功能。

基本来说,由于钱包密码是这样一种多重加密方式,加密的计算机处理速度越快,加密的强度也约高。

Q: 暴力破解密码的方式效果怎么样?

A: 对于暴力破解来说,你需要有能在1秒尝试百万次密码的能力。而这对于比特币钱包密码来说,是不太可能的。平均来说,每个cpu核可以进行10-13次尝试 – 因此这就取决于当时对钱包进行加密的计算机的性能和尝试对钱包进行解密的计算机集群性能之间的较量…

Q: 额…我实在是想不起来我当时设的密码了。还有什么我能做的么…

A: 好吧,这对你真是个坏消息。你现在能做的事只有:

1)保存好你的钱包文件,你祈祷你的计算机设备运行速度足够快,可以帮你最终暴力破解密码。这可能需要很多很多很多年的等待。你就像一个富人却完全不能支取你的钱一样。

2)随身带着笔和纸!写下每个你可能想到曾用过的密码组合。说不定真有奇迹一天发生,谁知道呢!说不定就能用这些密码关键字帮你最终找到潜在密码。

Q: 我连钱包文件都丢了。这要紧么?

A: … 这样的话就太糟了… 你的比特币可能永远都找不回来了… 好吧,你还是开始继续埋头挖矿吧,谁知道将来一个比特币价格还能到多少呢,只能乐观点了,骚年。

 

好吧,那我们实际需要做什么呢?

你需要先装一个Linux操作系统,之后系统上你需要安装一个我们开发的John The Ripper密码破解程序。这是一个很受大家欢迎的密码破解程序,它的破解速度很快且配置方便!(除了使用破解软件来尝试钱包密码破解外,你当然也可以尝试使用其它方式,比如说脚本破解。不过这种方式的话,你就不能进行随时暂停的控制了,当然也无法得到多CPU内核支持等强大功能的帮助。)

之后,你需要安装运行这个程序Linux所需的依赖性程序包并之后对程序进行配置。下面我们会介绍到这个软件的基本使用方式。我们会说到密码清单项的使用 – 这是配置过程中一大重要功能部分!

用于破解钱包密码的计算机可能需要跑好久。这也意味着,你可能有好长一段时间用不了你的这台机器。当然你也可以在程序运行时,在任何时候进行暂停和恢复运行操作。

 

虚拟机或指定的实体计算机

在本文中,作为演示操作,我会将破解软件安装在一个虚拟机中(这里我使用的是Oracle VirtualBox虚拟机)。你也可以和我一样使用虚拟机搭建系统或使用指定的计算机上。这里我们来比较下使用这两种方式的优缺点。

 

虚拟机操作系统 指定实体计算机
优点
  • 由于虚拟机屏蔽了底层设备之间的差异性。你的虚拟机安装配置和之后文中所指导的安装配置将完全一致。
  • 你对你的桌面环境会完全的控制权利。虽然运行在虚拟机中的破解程序会运行得稍微慢一些,但是可以很轻松机进行暂停和恢复操作。
  • 由于你的计算机不必额外使用资源来虚拟第二套操作系统,因此你的破解软件技术上说可以使用更多资源,跑得会更快些。
缺点
  • 比直接运行在实体机系统上会慢些
  • 文中之后的指导可能和你实际碰到的硬件问题有一些出入,可能需要你进行一些额外的驱动安装
  • 你要么将Linux环境装在一个可插拔闪存上,仅对你的硬件进行部分分区并修改启动区设置;或者使用额外硬盘安装Linux。

你需要确定一下你是使用虚拟机来跑程序还是让破解程序直接跑在实体机系统上,本文会搭建一台虚拟机环境来演示。请放心,你的大部分安装操作会和指导上的相同!

 

1步) 收集所需文件

这步骤是针对那些选择使用虚拟环境的用户。

我们需要先下载并安装虚拟机软件,这里我们使用Oracle VirtualBox 虚拟机。可以在https://www.virtualbox.org/wiki/Downloads 下载到针对你当前操作系统的最新版的虚拟机软件。这里当前的最新版为4.3.6。

下载完成后安装软件。使用默认选项安装即可。

我们之后需要找一份Linux操作系统ISO文件。本文使用的是Debian 7操作系统(如果你喜欢用ubuntu,其安装应该也是一样的)。可以在http://www.debian.org/distrib/netinst 中的Small CD项,下载到i386 ISO文件。这里我们使用的是i386版本(AKA 32 bit), 32位版本足够用了,对每个人来说都可用。不过如果你想用64位系统,也可以下amd64 ISO文件。在写本文并进行演示时,我下载的文件是“Debian-7.3.0-i386-netinst.iso”。

如果你打算直接在计算机上运行Linux,你就不需要安装Virtualbox了。你只需在计算机上直接安装Linux系统即可。请注意:你不能在你当前的运行操作系统上再安装Linux,它会破坏你的启动扇区并可能格式化你整个硬盘空间。你必须很清楚你在干什么 – 或直接网上找官方的安装步骤进行安装操作!

 

2步) 建立虚拟环境

在安装完VirtualBox并下载好Linux ISO后。打开VirtualBox,在欢迎界面上方找到菜单项开始建立你的虚拟环境。

点【New】图标键,会弹出相应提示框以要求回答一些基础问题。键入以下信息:

  • Name: Debian Cracker (当然你可以给这个建立的虚拟机起一个其它名字)
  • Type: Linux
  • Version: Debian

点【Next】继续:

  • 你会提示需要给虚拟机设定可使用的内存大小(Memory size)。

这里可以设置512MB到1000MB大小即可,你没必要设置很大内存。

点【Next】继续:

  • 你被提示将建立一个虚拟硬盘。

选择【Create a virtual hard drive now.】,之后将开始指定硬盘大小。

点【Next】继续:

  • 提示你选择HDD文件类型。选VDI即可,当然你也可以选择VHD。

点【Next】继续:

  • 提示你选择存储类型。

你可以选择动态分配(Dynamically allocated)或固定大小(fixed size)。这取决你的需要。

点【Next】继续:

  • 选择虚拟硬盘大小。

除非你的密码清单非常大,否则10G空间应该够用了。如果空间很多的话,那我建议你可以将硬盘建大些,不建议使用更小的硬盘。

点【Next】继续:

  • 好了,这样你的虚拟环境就完成了!我们可以开始在上面安装Debian了。

 

3步)在安装Linux系统前先调整虚拟环境

3.1 虚拟机配置

下图便是在建立完一台虚拟机后看到的情况:

现在,我们开始安装Debian并调整虚拟环境。为了保证环境设置正确,请确保选中软件界面左边的【Debian Cracker】。然后,点上面图标菜单中的【Settings】设置。你会看到相应环境的设置项。这里我们可以一次性将需要调整的项都设置好。

 

让我们开始进行一般设置

3.2 虚拟机的配置拷贝和粘贴

可以点图中【Advanced】高级设置区并调整【Shared Clipboard】和【Drag n’ Drop】的设置,调整为【Bidirectional】以启用双向复制粘贴(你的计算机系统和虚拟环境之间的互相拷贝粘贴操作)。这将使得之后的操作更简单些!

 

系统设置

3.3 虚拟机处理器(CPU)数量设置

这个配置部分中有很多设置项,不过这里我们仅需关注【Processer(s)】处理器数量设置即可。选择你希望虚拟环境中可使用的处理器数量。你配置得越多,虚拟系统及程序运行得越快!你也可以选择降低【Execution Cap】,这个设置可以分配每个CPU内核的可执行承压。如果你设置为80,那么操作系统会为每个内核余下20%的CPU资源。你可以体验下是分配更少的CPU并设置100%的执行资源占用,还是分配可使用所有CPU内核,但降低其执行可占用的资源百分比更好。在本文中,我们设置100%资源使用!

在【Motherboard】主板选项区,这里你也可以为虚拟机配置可用内存。因为我们在之前虚拟机建立的时候就已经设置过了,这里我们就不再调整了。

Tip: 对于超线程内核,如果你的主机是有4个带有超线程功能的CPU的话,那么你可以设置8核。

 

3.4 虚拟机挂载ISO镜像安装系统

现在,我们需要使用一个虚拟CD/DVD驱动来装载Debian ISO镜像文件。在【Storage】设置中,点IDE控制器下的【CD Empty】图标。你可以在右边看到当前对应光驱的属性,当前其为可用,然后点【CD光盘】图标选择下拉菜单,从中选【Choose a virtual CD/DVD disk file】会需要你指定载入已下载的ISO文件 – 如果你之前下载Debian时并未指定目录,那么很可能你的下载文件是下载到了你的Downloads目录下。找到这个文件并双击选择这个ISO文件。现在回到【Storage】设置,在右边你会看到ISO文件装载到虚拟光驱后的相关信息。

确认装载无误后,好了,点【OK】继续。

 

4步) 安装Debian虚拟环境

4.1 Debian安装

从软件界面(上图)我们注意到【Storage】区,ISO文件显示了其挂载信息。你也可以在其它区找到你的其它一些设置,如处理器数量等信息。做好最后的确认工作。

 

4.2 Debian安装项

点图标菜单中的绿色【Start】箭头启动虚拟机。不一会你就会在虚拟机屏幕中看到Debian安装选项。选择【Graphical install】并回车进入图形界面安装。

Tip: 如果你的鼠标已经进入了虚拟机操作屏中,那么你鼠标的点击和移动是由虚拟环境来负责捕获的。为了从你的虚拟环境中将鼠标退出到虚拟机外的主系统上,你可以简单点击右边的那个【Ctrl】键,那么你键盘和鼠标的捕获都会被释放并归还给主系统。右【Ctrl】键是一个默认键。你也可以按喜欢在之后进行变更。

 

4.3 Debian安装语言选择

根据你所在的位置,选择你倾向使用的语言,键盘设置并点【Continue】继续。

 

4.4 Debian安装设置hostname

之后安装会需要等待一会,然后你会被提示设置一个主机名hostname。你可以设置一个你喜欢用的主机名,然后点击【Continue】。下一步,配置网络,不作设置直接点【Continue】即可。

 

4.5 Debian安装设置Root密码

我个人一般给root密码留空不设置。这样默认用户即为【root】用户。环境并不需要联网使,而且使用操作也不频繁,因此我并不担心安全问题。如果你想设的话,那就设一个,即可别忘记了:)

注意:如果你并不熟悉Linux系统,那么你一定不知道root是什么。Root用户是系统中的管理员账户,其拥有所有系统访问权限并可以运行所有命令。如果你为root设置了密码,且平时登陆的时候并非使用root用户,那么执行有些命令时候,你需要在命令前键入”sodu”。”sodu”命令使得命令可以以超级用户权限执行。

 

4.6 Debian安装用户账号建立

给你平时登陆用的用户建立账号。我这里建立了一个cracker用户。点【Continue】后为这个用户设置密码。这里我设置的用户名和密码都是cracker。

再下一步,系统会要求问我配置时钟时区。建议这里设置正确的时区。

 

4.7 Debian安装建立磁盘分区

之后,你会被要求进行磁盘分区设置。仅使用第一项【Guided – use entire disk】选择整块盘进行按步骤分区即可,点【Continue】继续。下一屏会显示你的虚拟硬盘驱动 – 点【Continue】继续。然后会问你如何对磁盘进行分区,选第一个设置【All files in one partition】所有文件都在一个分区即可,点【Continue】。

这里会显示,根据你的选择对分区的一个大致格式化及划分情况说明。你在确认无误后点【Continue】。

选【Yes】做最后确认。点【Continue】完成分区并继续。

这里Debian还会继续要求你安装一些其它系统所需安装包,对此进行进一步的选择。

 

4.8 Debian安装配置包管理

你会被要求确认离你最近的程序包镜像下载点。在选择国家地区后点【Continue】到下一屏。选择一个镜像点 – 选第一个即可(如ftp.us.debian.org),然后点【Continue】。最后你会被要求提供proxy信息。如果你有一个proxy,那么键入它,如果没有或不清楚,那就留空(一般你的主操作系统网络如果设置使用了一个proxy,那么虚拟机网络会自动使用它)。

在配置过程中,安装会自动从网络中找到最新可用的文件包版本。这个过程会需要一些时间来完成。

 

4.9 Debian安装配置流行软件测评(Popularity Contest)

这里会要求是使用启用“popularity-contests“功能,就是收集个人平时使用的软件频度并收集此信息来知道哪些大众软件比较火的一个功能。我建议你选【No】不启用。然后点【Continue】。

在【Software selection】软件包选择中,选【Debian desktop environment】和【Standard system utilities】即可。点【Continue】继续。之后就开始安装程序包了,这需要花一些时间。

 

4.10 Debian安装选择GRUB Loader启动导引

这里,需要你确认并安装GRUB boot启动导引。选择【Yes】并点【Continue】。

好了,安装过程完成了!这里会要求你点【Continue】以重启系统,不过请注意看界面中的申明,这里要求你在重启前将虚拟光驱中的ISO盘卸载掉先!为了弹出光驱并卸载镜像盘文件,你需要右击图中所圈出的光盘图标 – 然后选择【remove disk from virtual drive】以进行虚拟光驱镜像卸载,完成后这个选择就会显示灰色了。之后点【Continue】开始重启。

虚拟机重启开始,并耐心等待登陆界面出现,一般安装都正确的话,从引导到界面启动都是自动的!

 

5步) 安装所需的依赖包

5.1 登陆你的虚拟环境

现在Debian已经安装好并运行起来了,每次虚拟系统启动时,你都会被要求进行登陆。选择你要登陆的用户名并键入密码。这里我的登陆用户名和密码都是cracker。

 

5.2 欢迎进入你的虚拟环境

环境进入你的虚拟工作空间。不过:)在这里我们并不会花很多时间关注于此。让我们打开一个root终端(也就是一个使用root用户执行的命令行窗口)。点系统上方菜单Applications -> Accessories找到并点选Root Terminal。你会被要求键入Root用户密码(如果你之前安装过程中给root设置过密码,那么这里就需要用到它了)。

 

5.3 安装用户扩展程序(Guest Additions)

我们在装完Linux系统后,一般需要在此系统上再安装上Oracle VirtualBox提供的用户扩展包软件,这个扩展包最常用的功能有对虚拟机系统屏幕进行缩放调整、双向拷贝及粘贴等。安装时,点虚拟机菜单Devices -> Insert Guest Additions CD镜像。之后你会被提示进行确认。选【Run】,忽略报错进行安装。

在打开的root terminal中,键入:

apt-get -y install apt-get install linux-headers-$(uname -r)

sh /media/cdrom/VBoxLinuxAdditions.run

如果要求确认,键入Yes。

在执行完成后,点击右上角用户名并重启虚拟机(这里右上角用户名为cracker)。虚拟机会自动关闭并重启。之后你就可以进行从主操作系统到虚拟环境之间的拷贝及粘贴操作了。

 

5.4 安装所需依赖包

在虚拟机中,重新登陆,以root用户打开一个terminal终端。

键入以下命令:

apt-get -y install build-essential gcc++ libssl-dev ruby git

在程序包安装后,我们就可以对John The Ripper程序进行编译了。

让我们看一下当前所在的目录。在上图例子中,我当前在“/home/cracker“目录下。在之前建立用户账号时,系统会在/home目录下建立一个以你用户名命令的文件夹。如果你发现你当前不在此目录下,你可以键入以下命令回到此目录中:

cd ~

 

5.5 下载John The Ripper

执行以下命令:

git clone -b bleeding-jumbo git://github.com/magnumripper/JohnTheRipper JohnTheRipper

此命令会下载当前最新版本的John The Ripper软件。执行之后的命令我们这就开始对此程序进行编译。

cd JohnTheRipper/src

 

5.6 对虚拟环境的多核支持进行配置

如果你使用单核来支持John The Ripper运行,那么你可以跳过这一步,不过对多数使用者来说,这个配置很重要!

在我们编译John The Ripper前,我们需要对一些配置进行调整。使用以下命令编辑配置文件:

nano Makefile

在执行此命令后,你会看到上图nano文本编辑器打开了Makefile文件。这里会指导你如何配置并编译John The Ripper。在我们编译前,你需要非常仔细地按照我们的指导来进行设置修改,除非你很清楚你在做什么,否则还是和我们的指导保持一致为好。

注意:nano是一款基于Linux系统开发的文本编辑器。和Word等文字处理软件不同的是,它需要通过键盘命令而非使用鼠标来切换操作功能。图中圈出的位置显示了我们打开文本后的当前光标位置。你可以使用上下箭头键来浏览文本。通过向下箭头按键我们转到正确的行并进行配置修改。

(Original Version:最初版本   Modified Version:修改后的版本)

将光标移动到相应需要修改的行。找到如下行配置:

#OMPFLAGS = -fopenmp

去掉此行开头的【#】字符 – 你只需要移动光标到这个字符并按Delete键一次即可。

OMPFLAGS = -fopenmp

然后继续网下两行并继续修改,找到:

#OMPFLAGS = -fopenmp -msse2

然后移除【#】字符:

OMPFLAGS = -fopenmp -msse2

之后我们保存并关闭此配置文件 – 可按【Ctrl + x】键后,键入【y】回车确认,这样你就保存完毕并退回到命令行窗口了。

5.7 Build John The Ripper

键入以下命令,你可看到上图所示:

make

再继续键入以下命令:

make clean linux-x86-native

程序会允许一会,请耐心等待执行完成。

 

5.8 测试John The Ripper

现在,让我们测试下John The Ripper软件是否用

../run/john -test –format=bitcoin

如果可运行,你就会看到上图中的反馈。方框中执行测试后的反馈显示软件运行测试成功。它可以在1秒尝试12.2次密码破解 – 正如我之前说的,看上去很慢啊。这是因为测试仅使用了单个CPU内核,因此如果你有多核的话,你正式运行的时候你需要将显示的破解速度乘以内核数量。同样记住,由于破解的速度和钱包最初进行加密的计算机性能有关。所以加密使用的计算机性能约高,破解所需花费的时间约长。

 

6步) 开始破解钱包密码吧!

这里再简单介绍下如何使用John The Ripper。

John The Ripper是一个高度可配置的破解软件。在本文中,我们仅是给你介绍其中最基本的使用配置。

在之后,我们每处提到的”cracker”都是指最初建立时候使用的系统用户名。如果你在安装Debian操作系统时使用了其它名字,请有意识地替换它。

例如,如果你使用的用户名为“hermit”,“/home/cracker/JohnTheRipper/run/john”就应该是”/home/hermit/JohnTheRipper/run/john”

 

启动John The Ripper

/home/cracker/JohnTheRipper/run/john /home/cracker/wallet.hash –format=bitcoin –wordlist=/home/cracker/wordlist.txt –fork=n

这里我们对这句命令进行下分解说明。John The Ripper程序启动执行时,我们同时给出了4个命令项。请注意每个命令项之间用空格分开。

John The Ripper程序调用:/home/cracker/JohnTheRipper/run/john

指定需要破解的哈希(钱包钥匙): /home/cracker/wallet.hash

告知John The Ripper,我们破解的是什么(哪种钱包):–format=bitcoin

提供密码关键字清单给软件参考使用:–wordlist=/home/cracker/wordlist.txt

告知John The Ripper可利用的CPU内核有多少(这里需要提供的数值): –fork=n

恢复Join The Ripper,继续运行

/home/cracker/JohnTheRipper/run/john –restore

查看已经尝试过的密码:

/home/cracker/JohnTheRipper/run/john –show /home/cracker/wallet.hash

如果程序是以后台运行,查看当前John The Ripper状态:

/home/cracker/JohnTheRipper/run/john –status

如果程序是在terminal上运行(即前台运行),需要查看其当前状态,你可以简单地按除了”q”或“CTRL+c”之外的任意键。

需要退出John The Ripper并在之后再恢复运行,你可以按“q”键,程序会被关闭,之后你可以用命令再恢复它。

需要从你的比特币钱包中抓取出“加密哈希”(即需要被破解的字符串),可以使用以下命令:

/home/cracker/JohnTheRipper/run/bitcoin2john.py /home/cracker/wallet.dat >/home/cracker/wallet.hash

本文之后,我们会使用这些命令进行直接使用演示。

 

让我们来实践下我们所提到的破解技能吧!

场景:我有一个很久没用的比特币钱包,我已经不清楚它的钱包地址了。不过幸运的是这个钱包里也没有币,不过可以尝试来破解下。我记得大概密码是GoBitGo,不过实际上不是。我可能缺少了一个密码字符。你能破解这个密码么?

实验测试破解,是你熟悉此工具的重要一步。这样你就可以确信你的虚拟环境运行正常且可以帮助你进行执行破解程序。为了测试这个过程,你需要一个加密钱包拷贝和一份密码关键字清单(清单用于更快找到密码)。密码关键字清单能放50万个密码,但是你最好最多放25000到30000个,因为清单太长就需要花更长时间来进行查找 – 特别是对单核运行情况下。这个清单在组合关键字查找时会按倍数替换成超过200万个关键字组合。我这里截取清单中的1/4关键字(这样下载使用的文件会小很多)做测试。

 

所需文件

在实践测试中,我们会使用上面链接提供的文件来测试John The Ripper.当你准备真的要破解你的钱包时,只要将这些文件替换为你的钱包和清单即可。

解密程序并不关心你的钱包文件 – 事实上它的目标是你钱包的私钥。这里有很多提取私钥的方法,不过,我们可以使用John The Ripper来进行提取。如果你选择使用其它方法来做的话,你可以跳过以下步骤并简单将提取出来的哈希值存放到虚拟环境中的某个空文件即可。

 

6.1 上传所需文件

我们首先将所需要的文件放到虚拟环境中。之前步骤中,我们给虚拟机环境安装了扩展安装程序“Guest Additions”,这使得我们现在可以直接将这些文件从主系统中拷贝并粘贴到虚拟环境下。请注意,你现在还不能直接将文件拖拽到虚拟机桌面上(由于Linux GUI的一些设置原因,你还需要修改Gnome的一些设置才行),但你可以拖拽到文件夹下。我们可以打开文件管理器,点击菜单Applications -> Accessories -> Files。然后将所需文件都拖拽到相应的home目录下。

注意:如果你发现由于某些原因导致你无法进行文件拖拽的话(Guest Additions存在问题),我建议你可以用以下方法也可以达到目的:

  1. 将文件拷贝到U盘,然后在虚拟机上点 Devices -> USB Devices 并选择包含文件的那个U盘。在虚拟机发现这个U盘,它会以文件管理器的形式自动打开它,这样你就可以看到这些文件了。之后拷贝粘贴到相应目录下即可。
  2. 以发邮件的方式,将这些文件保存在附件里。然后通过虚拟机中的浏览器打开邮件下载文件。这种方式也可以考虑存云盘后再到虚拟机浏览器上访问下载。
  3. 还有其它一些文件传输的方法。你也可以google/baidu查一下相关问题,看是否能直接解决Guest Additions不工作的问题最好。

 

6.2 从比特币钱包中提取私钥

我们已经将所需文件放在了虚拟环境上,之后就可以准备从你的钱包文件中提取出私钥了。可以在terminal上,键入命令:

/home/cracker/JohnTheRipper/run/bitcoin2john.py /home/cracker/wallet.dat >/home/cracker/wallet.hash

你的钱包私钥会以一个以wallet.hash命名的文件保存。如果你想确定下它是否提取出来了,你可以键入以下命令查看下文件内容:

cat /home/cracker/wallet.hash

文件中会显示以下内容(不同的钱包,其私钥哈希值都是不同的,这里仅是针对此测试钱包):

$bitcoin$96$6f1fda9af07911d230667721ed6ca45479f190956479229d3ced364e31e517c87bab73b992765

2e5a7251affaf16c485$16$e7aaad845d0d7778$138598$96$cc3de7e5bfbda99669a02e1df017f17a939b3d3

35ff1e32bac88fb09922eefbc823aebe7ae59e4aad9cd37ec9facc88d$66$03fa4f2b45e6f1764f8bc44c24ab51f

70b19786d1d3bc912b78fa3fa1ff672d9bd

 

6.3 破解钱包

让我们先检查下:

  • 虚拟环境功能 – OK
  • John The Ripper可用测试 – OK
  • 虚拟环境中的比特币钱包文件 – OK
  • 比特币钱包提取出的私钥存放文件 – OK
  • 密码关键字文件 – OK (后面我们会讨论关于此文件的建立)

好了,万事具备,开始运行John The Ripper!

注意:在以下命令行中,在”–fork=”后的数字4代表有多少CPU内核可用,所指定的数量不能超过当前你的计算机的内核数量。

/home/cracker/JohnTheRipper/run/john /home/cracker/wallet.hash –format=bitcoin –wordlist=/home/cracker/wordlist.txt –fork=4

 

6.4 运行状态说明

程序跑起来后,你会看到上图中方框中的信息。这里显示John The Ripper使用了4个内核,请耐心等待处理。

如果想查看当前运行状态,那么先点击激活当前运行程序的terminal窗口,然后按任意键即可。你会看到每个CPU内核的相关信息 – 运行得多快、密码关键字清单尝试到哪了等信息。这里我们知道运行的4个CPU内核每秒尝试12.5到14.7次密码破解。这里并没有将总的速度总计出来,不过你可以大致知道总共大致每秒55+次的密码破解速度。还算不赖!

当John The Ripper最后找到了密码,它会将它显示出来。不过你也需要知道哪里去看到它。上面的例子中可以看到在方框中,显示密码已经找到了!密码是GoBktGo而非GoBitGo。即便它找到了密码,程序还是会继续在其它内核保持运行,直到最终得出相同的结论。

注意:你可以会觉得其它CPU内核在已经发现密码后仍然在跑是有问题的。是否每个内核在做破解尝试时查找的内容是重叠的?其实并非如此。我认为这可能是程序在找到密码后,此内核关闭了,但是程序并未对此检查关键字做【已检查】标记。这里可能存在程序bug,但它并不影响你的实际破解过程。

如果你发现你没能找到屏幕中显示的密码,那么你可以键入以下命令来再次获取它:

/home/cracker/JohnTheRipper/run/john –show /home/cracker/wallet.hash

 

7步) 生成密码关键字清单

这是最重要的一步!不过,你需要知道,并不存在一个能解决所有问题的清单。当需要考虑破解密码时,我们最好知道最可能的或至少说可能的密码关键字候选,它们可能很相似但是还不是最接近那个密码。我发现我总是需要去写一些客制化脚本来为某次破解生成特定的密码关键字清单,以作为尝试备选。

也就是说,如果只是简单的拼写错误的话,程序可能很容易就找到你的密码。你可以将潜在可能的密码写入清单文件以备John The Ripper尝试。这里提供了一个脚本,可以帮你生成清单文件wordlist.txt。

#!/usr/bin/ruby -w

#list of potentional passwords

passphraseList = [‘possibility1′,’possibility2′,’possibility3’]

$allPhrases=”

$countList=0

passphraseList.each do |passphrase|

def display(phrase)

if phrase.length != 1

$allPhrases<<phrase

$allPhrases<<‘

end

$countList += 1

end

def scramble(passphrase)

characters = ” !\”\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~”

list = []

# transpose adjacent chars

(passphrase.length – 1).times do |i|

testphrase = passphrase.dup

testphrase[i] = passphrase[i+1]

testphrase[i+1] = passphrase[i]

list << testphrase

end

# delete one char

passphrase.length.times do |i|

testphrase = passphrase.dup

testphrase = testphrase[0,i] + testphrase[(i+1)..-1]

list << testphrase

end

# substitutute one char

passphrase.length.times do |i|

characters.chars.each do |c|

testphrase = passphrase.dup

testphrase[i] = c

list << testphrase

end

end

# insert one char

(passphrase.length + 1).times do |i|

characters.chars.each do |c|

testphrase = passphrase.dup

testphrase.insert(i, c)

list << testphrase

end

end

return list.uniq

end

list1 = scramble(passphrase)

list1.each { |i| display i }

print ‘total count’

print $countList

fo = open(“wordlist.txt”,”w”)

fo.write( $allPhrases )

fo.close()

end

exit

将此脚本文件(WordListGenerator.prog)放到虚拟机环境中。

 

7.1 修改比特币钱包密码清单生成脚本

你可以修改脚本,键入你觉得可能的密码关键字。(你也可以改好后再拖拽到虚拟机中)

nano /home/cracker/WordListGenerator.prog

你会看到和之前修改配置文件一样的文本编辑界面。在第三行,你会看到

passphraseList = [‘possibility1′,’possibility2′,’possibility3’]

这里将可能的密码替换在此。格式如其所列。例如,如果我们认为密码可能是BitcoinRules, GoBitGoRules, RulingRules47或IfIRuledTheWorld,密码列可替换为:

passphraseList = [‘BitcoinRules’,’GoBitGoRules’,’RulingRules47′,’IfIRuledTheWorld’]

了解了么?如果你觉得你的密码中有一些特殊字符,那么可以在此字符前加上一个反斜杠。如以下例子,密码可能含有上引号:

passphraseList = [‘Minin\’4Money’]

这样你已经将潜在可能的密码写入脚本文件中。使用“CTRL + x”退出文件,键入“y”后回车保存关闭。然后执行以下命令运行脚本:

ruby /home/cracker/WordListGenerator.prog

然后你就会看到自动生成的清单文件了。可以使用以下命令打开看一下:

nano /home/cracker/wordlist.txt

确认没有问题后,使用“CTRL + x”退出。

 

7.2 如何使用生成的密码关键字清单

到这里,你应该之前已经尝试运行过破解程序了。你之后需要做的就是按照之前第5步重新开始运行破解程序。这次你将使用你生成的worldlist文件来执行破解程序。

 

8步) 一旦密码找到后,你需要做什么?

  1. 首先祝贺你,欢欣鼓舞吧。
  2. 请及时修改你的钱包密码。当前的密码可能存在安全风险。换一个密码吧。
  3. 保存好你新的钱包密码。你可以写在纸上,保存到U盘里或其它离线硬盘设备上。真的,你真的太幸运了。要知道破解密码可不是对所有人都管用,你绝对不会想要再经历一次这种事!

 

关注刘相兵的新浪微博

扫码加入微信Oracle小密圈,了解Oracle最新技术下载分享资源

Speak Your Mind

沪公网安备 31010802001379号

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569