本地密码检索工具 – LaZagne Project
简介
LaZagne project 是一款用于检索大量存储在本地计算机上密码的开源应用程序。每款软件他们保存密码的方法或许不尽相同(明文,API,算法,数据库等等),我开发这款工具的目的是为了寻找计算机中最常用软件的密码。截至目前,该工具支持Windows上的22款软件,Linux/Unix-Like OS上的12款软件。
使用方法:
启用所有模块
cmd: laZagne.exe all
启用特殊模块
cmd: laZagne.exe
example: laZagne.exe browsers
help: laZagne.exe -h
仅启动一个特殊软件脚本
cmd: laZagne.exe
example: laZagne.exe browsers -f
help: laZagne.exe browsers -h
将所有的密码写入文件(-w选项)
cmd: laZagne.exe all -w
注意:WI-FI密码/Windows密码需要启动管理员权限(UAC验证/sudo)
支持软件
(*) 有些软件可能存在使用插件等方式保存密码:Chrome, Owncloud, Evolution, KMail
IE浏览器历史记录
IE浏览器密码(从IE7到早前的Windows8)只能使用网站URL进行解密,只是作为Win32CryptUnprotectData api的一个参数。因此,使用IE浏览器历史记录能够将密码破解出来。要做到这一点,我需要使用一个C语言编写的DLL(代码在browser_history_dll目录下)且作为一个Base64字符串直接嵌入python代码中。加载之后,DLL会写入磁盘,其中一个包装类是用来调用DLL函数的然后这个DLL文件会从磁盘删除。
构建属于你自己的密码恢复脚本
你可以自由的为你选择的软件编写一个脚本。并且不用担心,编写一个模块十分简单。
要做到这一点,我们需要满足一些代码标准。
1.使用软件名创建一个类包含两个重要的函数:
init:用于定义启动类的所有参数
run:主函数
2.将类名和相关信息添加到config.manageModules.py文件
3.所有包含密码的输出都必须发送到"print_output"函数
举例:print_output(software_name, password_list)
4.可选项:你可以使用"print_debug" 函数打印出输出结果
5.也可以参考现有脚本,用以理解。
要求
为了编译源代码,需要一些外部库
Windows:
colorama(https://pypi.python.org/pypi/colorama)
Python Windows扩展(http://sourceforge.net/projects/pywin32/)
pycrypto(pip安装pycrypto)
Impacket(https://github.com/CoreSecurity/impacket)
Linux:
对于Ubuntu 14.04
python-kde4 (Kwallet)
其他发行版
Python 2.7
argparse
Crypto
dbus (Pidgin)
python-kde4 (Kwallet)
项目地址:https://github.com/AlessandroZ/LaZagne
- nodejs+ftp+linux+nginx 自动部署前端
- Highcharts使用指南
- 如何通过经纬度获取地址信息?
- ADO.NET入门教程(二)了解.NET数据提供程序
- ADO.NET入门教程(三) 连接字符串,你小觑了吗?
- ADO.NET入门教程(四) 品味Connection对象
- ADO.NET入门教程(五) 细说数据库连接池
- ADO.NET入门教程(六) 谈谈Command对象与数据检索
- ADO.NET入门教程(七) 谈谈Command对象高级应用
- ADO.NET入门教程(八) 深入理解DataAdapter(上)
- 深入理解DIP、IoC、DI以及IoC容器
- C#委托使用详解(Delegates)
- LINC switch系列之安装指南
- 设计模式成长记(一) 抽象工厂模式(Abstract Factory)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++11 move 语义
- 论函数的设计应如何才好,返回临时变量 | 返回引用 | 传递引用
- Flutter基础widgets教程-CupertinoTabView篇
- 关于time的使用
- class priority_queue<> 简单介绍
- C++ share_prt 简单设计和实现
- 使用函数对象与使用函数的比较
- C++ 函数指针的定义方法及使用
- C++ 线程池的简易实现
- Flutter基础widgets教程-DataTable篇
- 2015-C++研发附加题第一题
- win7 64位 下,进程可申请的堆空间
- 生成N位格雷码
- sort 升序还是降序?priority_queue 大根堆还是小根堆?
- 将2N个整数分成两组,每组有N个数,并且满足,这两组的差的绝对值最小。