首页 > 数据库 >Windows下编译sqlcipher4的shell版本

Windows下编译sqlcipher4的shell版本

时间:2023-11-30 21:34:42浏览次数:37  
标签:shell lib LTLIBPATHS Windows LTLIBS sqlcipher4 编译 sqlcipher dec

越来越多的应用开始接入SQLCipher4了,虽然在Windows上有工具可以打开,但是没法使用脚本解密,也就不能实现自动化。

在网上找了很久都没有找到4的编译版本,因此自己找资料编译一下。

准备

  1. 安装openssl,并配置环境变量OPENSSSL_CONFIG,值为C:\Program Files\OpenSSL-Win64\bin\openssl.cfg(前面为你自己的安装目录,建议是按照默认的来),同时将bin目录添加到环境变量,以启用openssl命令
  1. 安装TCL
  1. 安装Windows编译工具,建议是直接安装Visual Studio

开始

先克隆项目git clone https://github.com/sqlcipher/sqlcipher.git

编辑Makefile.msc

修改这条

TCC = $(TCC) -DSQLITE_TEMP_STORE=1

改为(路径为openssl安装路径)

TCC = $(TCC) -DSQLITE_TEMP_STORE=2 -DSQLITE_HAS_CODEC -I"C:\Program Files\OpenSSL-Win64\include"

再找到这条

# If ICU support is enabled, add the linker options for it.
#
!IF $(USE_ICU)!=0
LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:$(ICULIBDIR)
LTLIBS = $(LTLIBS) $(LIBICU)
!ENDIF
# <</mark>>

在下面添加如下内容

LTLIBPATHS = $(LTLIBPATHS) /LIBPATH:"C:\Program Files\OpenSSL-Win64\lib\VC\static"
LTLIBS = $(LTLIBS) libcrypto64MT.lib libssl64MT.lib ws2_32.lib shell32.lib advapi32.lib gdi32.lib user32.lib crypt32.lib

打开vs提供的编译环境x64 Native Tools Command Prompt for VS 2022,在开始菜单中可以找到

使用cd命令切换到克隆的目录,然后执行命令nmake /f Makefile.msc进行编译

到最后会提示

结束后就可以在目录下找到sqlite3.exesqlite3.dll了,其中exe是单独的可执行文件,不用依赖,打开会显示sqlcipher,如果没有就说明编译失败

测试

随包克隆下来的还有一下测试数据库,密码都是testkey,能看到表就是成功打开了数据库

4之前的版本必须指定加密参数才可以解密

接下来就可以使用这个程序去解密数据库了,在sqlcipher的shell里执行下面的命令,会在当前目录生成解密后的数据库

ATTACH DATABASE 'dec.db' AS dec KEY '';
SELECT sqlcipher_export('dec');
DETACH DATABASE dec;

如果需要脚本执行,可以直接采用命令执行的方式(个人觉得比再编译一次pysqlcipher3要方便的多),一行解决,以python为例,只需要注意文件路径即可

subprocess.run(['sqlite3.exe','enc.db',f"PRAGMA key = {key};ATTACH DATABASE 'dec.db' AS dec KEY '';SELECT sqlcipher_export('dec');DETACH DATABASE dec;"])

标签:shell,lib,LTLIBPATHS,Windows,LTLIBS,sqlcipher4,编译,sqlcipher,dec
From: https://www.cnblogs.com/WXjzc/p/17868413.html

相关文章

  • [Jenkins]在windows slave上执行svn命令报错
    jenkins在windowsslave上执行svn命令报错"svn:E170001:Can'tgetusernameorpassword"原文:https://jianghaitao1221.github.io/2016/08/16/jenkins-windows-svn-name-pwd-not-fount/现象#jenkins上执行svn命令svnup报错如下:svn:E170013:Unabletoconnectt......
  • Shell个性化
    创建个人的shell环境有助于我们更有效地工作。配置ShellShell的行为方式由多个配置文件所支持。默认均为BashShell,以下列出BashShell的配置文件:文件描述/etc/profile为每个用户设置用户环境信息,首次登陆时执行此文件。对于设置的环境变量还会提高路径值。......
  • Shell封装日志函数
       使用echo打印输出日志严重影响观瞻,想打印时间戳就得每次都得把date命令加上,想自动加点别的东西真是好麻烦,封装一个日志函数,方便脚本在运行的时候输出日志,超级方便1、简单定义一个log函数function_log(){echo-e"${@}"}_log"helo"用的时候直接把想打印的信......
  • Windows10 Linux子系统迁移到非系统盘
    默认情况下,Windows安装了Linux子系统后,默认安装位置是在C盘,会导致C盘内存不足,因此需要迁移到非系统盘。以Ubuntu20.04为例:默认安装位置在%UserProfile%\AppData\Local\Packages\目录下一、通过wsl命令迁移、备份Linux分发#查看Ubuntu版本wsl--list--all--verbose......
  • windows 上 cmake 添加 vcpkg 选项
    使用cmake编写相关的工程时,工程有时会使用vcpkg添加的第三方库,比如zip库查看一些案例后,我发现有些回答不太准确,遂记录下现在,我们需要在工程中使用 zip_open函数执行压缩命令,这个函数是zip.h里的,所以我们先要添加zip库打开cmd,输入vcpkginstalllibzip:x86-window......
  • windows提权1
    本次学习利用Windows环境变量配置错误进行提权实验原理系统在执行用户命令时,若用户未给出绝对路径,则首先在当前目录下寻找相应的可执行文件、批处理文件等。若找不到,再依次在PATH保存的这些路径中寻找相应的可执行程序文件(windows环境变量的查找顺序是按照文件的录入顺序从前往......
  • Windows平台的prometheus和Grafana的学习与使用
    Windows平台的prometheus和Grafana的学习与使用背景最近没有了linux机器突然想捯饬一下Windows平台的监控与使用所以总结一一下.第一步下载https://prometheus.io/download/https://grafana.com/grafana/download注意需要下载windows平台的安装介质建议是选择zip包.zip包......
  • 2023年11月更新整理Windows11专业版激活密钥
    微软Windows11官方ISO镜像下载地址:https://www.microsoft.com/zh-cn/software-download/windows11整理自互联网,不保证可用性。A2B7C-Q8D4E-F1G6H-I7J3K-L5M9NP9Q2R-E4S6T-U1V8W-O3X7Y-K5Z9JU6S2F-V4C6B-K1X8Z-M7N3K-G9H5JL8K2J-C3V6B-G1X9Z-Y7I4P-O5Q9RF9D2H-V3C6B-K1X8Z-M7N4K-U......
  • HPM5301EVKlite windows下上手使用
    HPM5301是先辑半导体出的一款300Mhz的riscV芯片,售价7.99,开发板售价39.99,性价比超高资源获取evklite基本不需要原理图,下载SDK和ENV即可SDK连接:https://github.com/hpmicro/hpm_sdkENV连接:https://github.com/hpmicro/sdk_env占坑待续。。。......
  • Windows下读文件二进制模式和文本模式的区别
    前段时间,碰到了一个奇怪的事情,我实现了一个读某文件的类,原本这个文件是以二进制写的,读的时候没太在意,将模式少写了一个“b”,变成了文本模式_tfopen_s(&pFile,m_file,_T("r"))测试了好些文件都没有问题,直到有一天,一同事反应读取函数有问题,数据被截断了。我看了半天,百思不得其......