客户需求解密板子里面的加密文件,qt做的openssl的加解密的tool
来源:互联网 发布:js 获取当前日期 周几 编辑:程序博客网 时间:2024/05/25 08:13
客户需求解密板子里面的加密文件,做的openssl的加解密的tool
tool去除了加密的,只需要解密,想加密只需反向操作下。
源码:
https://github.com/leolin0518/openssl_dec_enc_tool
记录下:
这个工具是给客户测试使用的
1.主要是公司的RE板子上会把一些config和信息加密备份,客户测试那边想通过一个tool可以解密,查看一些数据。
2.是不同的板子的root级别密码是根据mac地址和sn号的一部分组成一个字符串,然后对字符串进行加密,加完的密钥的某X位作为密码,本来是用openssl的-aes-256-cbc 加密密码,但是-aes-256-cbc 加密的话,每次密钥都会变化,so,用的md5算得。
3.板子加密的是在板子的Linux系统下,加密的,解密的tools是需要在windows下使用。
思路:
我用qt写的,如果使用openssl源码,感觉蛮费事,刚开始使用源码函数写的,发现在windows下,测试,自己加密解密都是ok的。但是把板子里面的备份文件,死活就是解密不了。赶时间,后来就想因为只是简单的使用加密相关的,就直接用qt做个ui, QProcess调用openssl的进程,通过命令的形式获取相关的数据就行了。
但是,然而md5的密码没问题。
加密文件用-aes-256-cbc加解密,在板子是下命令可以解密,然后我把加密文件拷贝到另一台Linux系统的电脑上,同样的命令并不是每次的可以解密的,醉了。很大概率不行。
后来发现,加密的key不要用一些特殊字符,就可以了,原因可能是板子的Linux是裁剪修改过的,mtk的sdk。在板子里面的key和windows下输入的key,可能是编码格式不一样,去除特殊字符就ok了。醉了。
tips:
1.最好是Linux下的openssl 和windows下的openssl版本一致。
2.加密的key不要用一些特殊字符
3.windows下没有echo这些用,每次加密都是通过-in -out 参数“`
openssl enc -aes-256-cbc -salt -a -in /tmp/.config.tgz -out /tmp/.config.enc -k xxxxxx
4.注意加解密行的空格或者回车
5.同样的加密,板子上是先tar打包,加密,然后算一个md5值插入到加密文件的某一行还有EOF行。so,解密的时候先删除加密文件的某一行(md5行)再进行解密,删除EOF行。刚开始做的时候,忘了这个。
md5是,md5为了保持和板子的一致性,用的openssl里面的OpenSSL> dgst -md5 in.log
其实也可以使用qt里面的加密类QCryptographicHash。有哈希,md4,5什么的。
Qt5自带加密方法
QProcess如何调用其它进程
QProcess用法demo
openssl_md5_all是参数cmd.exe /c dir /c是执行完dir命令后关闭命令窗口------------------------------------------------------------------ QProcess p; QString windwos_cmd="cmd.exe"; p.start(windwos_cmd,QStringList() << "/c" <<openssl_md5_all ); if (p.waitForStarted()) { p.waitForFinished(); QString p_read = p.readAllStandardOutput(); qDebug() <<p_read; QStringList p_read_strlist =p_read.split("="); qDebug() <<"p_read_strlist" << p_read_strlist; qDebug() << "-------strlist------" << p_read_strlist.last(); ui->plainTextEdit_info->clear(); QString enc_psw = p_read_strlist.last(); qDebug() <<"enc_psw" << enc_psw; enc_psw = enc_psw.trimmed();//去除字符串首尾的空格 qDebug() <<"enc_psw.trimmed" << enc_psw; enc_psw = enc_psw.mid(0, 10); qDebug() <<"enc_psw 前十位" << enc_psw; ui->plainTextEdit_info->appendPlainText(enc_psw); qDebug() << "-------ok------"; // ui->plainTextEdit_info->appendPlainText(QString("------------加密完成-------------")); p.close(); } else { ui->plainTextEdit_info->appendPlainText(QString("------------加密失败-------------")); qDebug() << "Failed to start"; }
openssl 对称加密算法enc命令详解
利用openssl里的库函数进行AES的加解密—cbc
password_generator
/*************/
openssl enc -aes-256-cbc -salt -a -in /tmp/.config.tgz -out /tmp/.config.enc -k xxxxxx
openssl enc -aes-256-cbc -salt -d -a -in /tmp/RGA_config_v1.02.01_31.10.16_1702.bin -out /tmp/d_config.tgz -k xxxxxx
tar xzf /tmp/d_config.tgz -C /tmp/leo/
enc -aes-256-cbc -salt -d -a -in RGA_config_v1.02.01_31.10.16_1702.bin -out d_config.tgz -k xxxxxxxx
enc -aes-256-cbc -salt -d -a -in in.bin -out d_config.tgz -k xxxxxxx
/*************/
openssl enc -aes-128-cbc -in in.txt -out out.txt -a -k 12345678
openssl enc -aes-128-cbc -d -in RGA_config_v1.02.01_01.11.16_0003.bin -out xx.tar -a -k xxxxxx
openssl enc -aes-128-cbc -d -in out -out de_out -a -k 12345678
- 客户需求解密板子里面的加密文件,qt做的openssl的加解密的tool
- 文件的加密解密
- 关于openssl加解密文件的几个API
- 基于openssl的RSA加解密实现
- 基于openssl的AES加解密 android
- 使用OpenSSL库的AES加解密
- 基于OpenSSL库的加解密实验
- 简单的加密解密文件
- 文件的加密与解密
- 文件的加密和解密
- 简单的文件加密解密
- RSA 加解密的例子,JS加密--php解密
- 【C】【CrytoAPI】【加密解密】基于CryptoAPI的文件加解密系统设计与实现
- Qt版本的TEA加解密使用
- QT下的Base64加解密
- 使用异或做的简单文件加密和解密
- Qt对中文文件的简单加密解密
- Qt对中文文件的简单加密解密
- HTTP Status 403
- 简单工场、工场方法、抽象工厂模式浅析
- 一、面向对象的六大原则
- C语言 static 解析
- AtCoder Grand Contest 017做题记录
- 客户需求解密板子里面的加密文件,qt做的openssl的加解密的tool
- 机顶盒操作时常用的一些基本命令
- Codeforces 514C Watto And Mechanism 哈希
- PHP入门必选
- PS中jpg、png和psd格式
- 第十章 分组数据
- 动态规划:HDU1224-Free DIY Tour
- linux基础
- java.util.ConcurrentModificationException的解决办法