litecoin密码忘记后...

原创 2013年12月02日 20:53:33
知识共享许可协议

本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。


       这一段时间一直在挖矿,毕竟买个能玩极品飞车效果全开的中档显卡,只上网有点浪费。所以就挖挖比特币,后来发现以PC机挖比特币就是脑袋抽抽,就改挖莱特币(litecoin)。前几天莱特币价格暴涨(从27到380),就像兑换点人民币买点电。结果突然发现,半年前我脑袋进水了,居然设了一个钱包密码,结果钱包只能进不能出。

       哎呦,这坑爹啊,我试了能想起来的所有密码都不对。眼看着好多money就打水瓢了,不甘心啊!咱是工程师,虽然理论水平不高,不过暴力破解还是可以的,无非是暴力破解自己的密码。那么,现在来梳理一下已知条件和未知条件,以及目标,然后设计一个稍微高效的暴力破解程序

已知条件:

1.我的密码就那几个,不会是一个完全随机数。强度一般

2.litecoin钱包密码可尝试无数次,不会有锁定、验证码的问题

未知条件:

1.如何自动测试密码?这是暴力破解的关键,否则手动输入的话,就不是对程序使用暴力了,而是对自己使用暴力了。(我想起了红烧猪蹄~~~)

2.暴力破解简单来说就是使用程序遍历密码字典,那么字典如何生成?什么样的字段适合现在的情况?

目标:

找到钱包密码

        网上搜了一下,也看了一下litecoin的源码,最后发现litecoin-0.8.5.1这个版本(之前的版本没测试过)有两个钱包程序,一个是daemon方式的,没有GUI;一个是基于QT的GUI。最开始,我在windows环境下,使用python调用win32con库,模拟键盘输入来测试,速度很快,但是密码框没有显示明文,也不知道输入的内容是否正确。也懒得安装QT Creator修改LineEdit的显示属性。感兴趣的话可以自己搜索,不过要注意一点,键码和ascii是不一样的。

        网上很多文章(大部分是转载同一篇文章)都是使用win32con.keybd_event()这个函数,第一个参数是按键码,文章多是说可以通过ord('a')来获取按键码,但是ord是获取ascii码的,与键码基本都不相同。比如,你要模拟键盘输入小写字母'a',它的ascii码为97,按键码是65,所以keybd_event()的第一个参数就是65,而如果要输入大写字母'A',就需要实现shift+a的操作。简单来说,你怎么用键盘输入字符,就怎么使用这个模拟函数。

        扯的远了,回归正题。我最后是在linux环境下,通过rpc和litecoin的守护进程通信,执行unlock操作,进行密码试错的。首先要配置litecoin.conf文件添加rpcpassword,不知道从哪个版本开始使用litecoind需要设置rpc密码了。

~/.litecoin$ cat litecoin.conf 
rpcpassword=123

在命令行启动litecoind守护进程

./litecoind -daemon
建议找一台独立的电脑,把有密码的钱包文件wallet.dat拷过去,避免出现某些不可遇见的错误。

下面这条命令就是用于钱包解锁的

./litecoind walletpassphrase YOUR-PASSWORD 120

如果解锁失败,会返回如下信息

error: {"code":-14,"message":"Error: The wallet passphrase entered was incorrect."}
解锁成功无返回信息,不过重复解锁会返回:

error: {"code":-17,"message":"Error: Wallet is already unlocked."}
如果你看到这个信息,往上找log,肯定有一个密码是正确的


我弄了一个shell脚本自动尝试解锁操作

#!/bin/bash

for line in `cat code`
do
        echo "testing  "$line
        `./litecoind -rpcpassword=123 walletpassphrase $line 120`
        echo $line >> testedcode
done
其中code是字典文件

那么,最重要的字典文件如何创建呢?这个就和个人习惯有关了。我的习惯是用自己常用的密码进行组合生成新的密码,相信很多人都是这个习惯,又可以保证密码强度和长度,又不容易忘记。所以,我用python脚本帮忙生成全排列组合(高中概率学基本知识,看不懂回家翻书),并保存在文件中(这些文件最后一定要都删除了,小心密码泄露)。下面是字典生成代码:

from itertools import product

heads=["aaaa","bbbb"] #这里是常用的密码组合开头
chars=["ccc","dd","123","*()"]

count = 0
f = open("code", "w")
for h in heads:
    for l in range(4):
        ret = list(product(chars, repeat=l))
        for c in ret:
            c = "".join(c)
            c = h+c
            #密码长度规则
            if len(c) < 8:
                continue
            count += 1
            f.write(c+"\n")

f.close()
print count
简单说明一下,itertools.product是python的一个迭代工具中的全排列生成函数,其中repeat表示重复次数,可以在python的执行环境中做做试验,很简单的。

我把密码进行了分组,有些密码是只会出现在开头的(个人喜欢而已)。分组的好处是减少组合个数。


最后,终于把密码找到了,万幸啊!


如果你找回自己的密码,来点捐赠吧,让我有点成就感:LYM4ruVfHn57qLNBdk97VSEv8am8WXRDoy

Bitcoin JSON RPC API - blockchain.info

经查,P2Pool使用的原始的Bitcoind RPC的方式调用,Eloipool已经改为使用新的JSON PRC方式(jgarzik写的有相应的python包)。 JSON RPC...
  • u013695144
  • u013695144
  • 2014年07月07日 09:48
  • 6819

精通比特币 第3章 比特币客户端

第3章 比特币客户端 3.1 比特币核心:参考实现 你可以从bitcoin.org下载标准客户端,即比特币核心,也叫“中本聪客户端”(satoshi client)。它实现了比特币系统...
  • taifei
  • taifei
  • 2017年06月29日 11:05
  • 814

Linux下莱特币Litecoin挖矿教程

装自 http://www.75271.com/1523.html Litecoin(缩写: LTC)是一种点对点的电子货币,也是MIT/X11许可下的一个开源软件项目。Lit...
  • skykingf
  • skykingf
  • 2016年12月09日 17:58
  • 4563

litecoin密码忘记后...

这一段时间一直在挖矿,毕竟买个能玩极品飞车效果全开的中档显卡,只上网有点浪费。所以就挖挖比特币,后来发现以PC机挖比特币就是脑袋抽抽,就改挖莱特币(litecoin)。前几天莱特币价格暴涨(从27到3...
  • jt6562
  • jt6562
  • 2013年12月02日 20:53
  • 2213

mysq密码忘记后重置

破解过程 1、停止mysql服务(以管理员身份,在cmd命令行下运行)使用如下命令:net stop mysql 2、.使用命令启动mysql数据库,命令如下mysqld --skip-grant-t...
  • yidian_yidi
  • yidian_yidi
  • 2015年04月11日 16:03
  • 168

mysql 安装完毕后,忘记密码

1、首先net stop mysql服务,并且切换到任务管理器,有与mysql有关的,最好关闭进程。 2、运行CMD命令切换到MySql安装bin目录,下面是我的mysql安装目录 cd ...
  • xiaoliuliu2050
  • xiaoliuliu2050
  • 2016年11月02日 22:03
  • 1180

Mongodb忘记密码

Mongodb装在linux上,一次配置之后,很少再去看。突然有天需要做改动了,蛋疼的发现密码忘记了,后来查到解决方案也不麻烦。如下://首先看一下mongo的配置文件在哪 ps -aux|grep ...
  • jiestyle21
  • jiestyle21
  • 2016年07月04日 11:21
  • 1836

密码丢失不用慌 Windows密码破解大法

    【IT168 应用】在目前大家使用最多的Windows XP和Windows 2000操作系统中,由于采用了基于WINNT的安全内核,使得操作系统的安全性大大提高。但是同时也带来了一个问题,那...
  • haozi678
  • haozi678
  • 2009年02月02日 08:50
  • 416

John the Ripper 破解Linux 密码

第一步: 创建john用户 Linux用户创建用户   useradd-m john 设置密码   passwd -f john 第二步: 下载及安装john破解工具 下载最新的john程...
  • shenfuli
  • shenfuli
  • 2013年05月24日 14:45
  • 3147

wamp5 忘记mysql root密码 重置方法

wamp5比较恶心,忘记密码了,重新安装都没用,网上找了个文章可以修改root的密码。 http://www.kuqin.com/database/20080306/4249.html...
  • lein_wang
  • lein_wang
  • 2013年10月23日 12:10
  • 6952
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:litecoin密码忘记后...
举报原因:
原因补充:

(最多只允许输入30个字)