LaZagne编译

N 人看过

一、简介

       LaZagne项目是用于开源应用程序获取大量的密码存储在本地计算机上。每个软件都使用不同的技术(纯文本,API,自定义算法,数据库等)存储其密码。开发该工具的目的是为最常用的软件找到这些密码。该项目已作为开发后模块添加到 pupy中。Python代码将在不接触磁盘的情况下在内存中进行解释,并且可以在Windows和Linux主机上运行。

二、编译

安装依赖:python -m pip install -r requirements.txt
在这里插入图片描述
安装pyinstaller:python -m pip install pyinstaller
编译lazagne.spec文件:pyinstaller --onefile -w lazagne.spec
在这里插入图片描述

三、编译中出现的问题

  1. Permission denied C:\……\ucrtbase.dll
    在这里插入图片描述解决办法:
    修改c:\users\administrator\appdata\local\programs\python\python37\lib\shutil.py文件如下:
    在这里插入图片描述

  2. 缺失msvcr100.dll文件或者ucrtbase.dll文件
    在这里插入图片描述
    在这里插入图片描述

    dll文件下载地址:https://cn.dll-files.com/
    在这里插入图片描述在这里插入图片描述

  1. C盘文件无法改动

    禁用用户账户控制项:以管理员批准模式运行所有管理员
    在这里插入图片描述

四、Lazagne减小打包一些尝试

  • 1、Lazagne打包环境入手

    在这里插入图片描述
    尝试1、使用from * import * 导入具体模块减少文件大小,没啥效果。
    在这里插入图片描述
    尝试2、使用pipenv虚拟环境进行安装,本来是直接放弃了,后续越想越气。
    执行命令:pipenv install --python 3.7,报错如下
    在这里插入图片描述
    后续继续看报错,其实原因出在python2的路径上:
    在这里插入图片描述
    我为了区别python2和3修改了python2的python.exe导致找不到上述路径:C:\Python27\python.exe,修改为python.exe即可。
    在这里插入图片描述
    安装pip:pipenv install pip --pypi-mirror http://mirrors.aliyun.com/pypi/simple/

安装requirement.txt:pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

不用阿里云镜像速度会很慢。
其中有个报错如下:AttributeError: module 'enum' has no attribute 'IntFlag'
在这里插入图片描述
解决办法:pip uninstall enum34
之后重新发包:pyinstaller --onefile -w lazagne.spec
打包用的还是减小模块之后的文件,我一看,文件大小还不是没变化,我真想给它个亲切问候。
在这里插入图片描述

尝试3、使用python的embedded版本,暂时由于路径找不到报错,暂未解决。
①、下载embed 32版本。
https://www.python.org/downloads/release/python-373/
在这里插入图片描述

②、下载pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
在这里插入图片描述

③、安装pip:

在这里插入图片描述
④、报错 File "C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-bc9u2mik\future_056aacedab064306af7d71fa0ae1c055\setup.py", line 86, in <module> import src.future ModuleNotFoundError: No module named 'src' 这块卡的时间最长。
在这里插入图片描述
其实看目录的话我是感觉没啥问题的,感觉是下载文件的问题,换种思路,手工安装:python setup.py install,最好是把future整个文件内容复制在python.exe目录下。
在这里插入图片描述
在这里插入图片描述
然后还是报错:FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'c:\\users\\administrator\\downloads\\python-3.7.3-embed-win32\\python37.zip\\collections\\__init__.pyc ,这个文件我确实是没找到。阿西吧。
在这里插入图片描述

  • 2、Lazagne减少模块入手

    Lazagne由多个模块组成,分析源文件大概可知:
    在这里插入图片描述
    其中配置文件中有模块管理设置:
    在这里插入图片描述
    若知道某一指定模块的依赖,就可以删除其他的无用模块对Lazagne进行改造,以火狐浏览器密码抓取为例。
    在这里插入图片描述
    可以按需求删除lib文件夹下依赖然后进行打包。尝试下来依赖比较麻烦,很多情况下会少modules,并且文件大小还没有显著变化。
    在这里插入图片描述
    重新复制粘贴lazagne.softwares.windows 并且重新打包,因为之前为了减少打包后的体积删除了一部分文件,其中就有lazagne.softwares.windows。打包之后执行如下:
    在这里插入图片描述
    好家伙,问题没完没了了,这个其实是编码问题,本来不想看源码的(就是懒),大佬说看一下逻辑结构,大致跟一下函数,于是我就发现问题所在了。
    在这里插入图片描述
    在这里插入图片描述
    可以看到read函数没有进行encoding设置,改为encoding='utf-8'应该就可以了,打包尝试结果如下:
    在这里插入图片描述

其实问题出在配置文件中存在中文,而lazagne是老外写的,导致中文识别部分可能就会有问题。
在这里插入图片描述
为啥会存在中文,因为多次测试后我自己生成了Firefox的配置文件。firefox.exe -p --no-remote,正常情况下是不会产生中文配置文件的。

在这里插入图片描述
看下打包后的体积,小了一点,还行。
在这里插入图片描述
但还是很尴尬,从repo下载下来的体积只有6.33M,还是包括全部功能的,不知道怎么做到的。
在这里插入图片描述

五、参考链接

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。