分享:身份证阅读器在ARM Linux系统调用libwlt2bmp.so解码库实现身份证头像解码

头像解码库:libwlt2bmp.so

照片文件名:photo.bmp

原始身份证相片数据:574C66007E00320000F........(此处省略)

调用身份证阅读器Linux开发包,然后调用libwlt2bmp.so解码库文件,传入身份证原始相片1024字节的加密信息,即可出来下面的明文相片信息。

测试X86_X64、ARM等有效。

以下编译工具实测有效。

arm-poky-linux-gnueabi-gcc
arm-xmv2-linux-uclibcgnueabi
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf-32位
gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf-32位
gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf
gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu
gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu
SDK-6.4-aarch64-cortexa53-linux-gnu


 


typedef int (*wltdecode)(unsigned char *src, int nlen, unsigned char *dst, int *cbDst);
char imagePath[256] = "./photo.bmp";  //照片文件名static int writePhoto(unsigned char photo[], unsigned char *bmpfileData, const char *image_file)
{int ret = 0;int nlen;int i, offset;unsigned char tmp[5] = {0};unsigned char *imageData = bmpfileData;char outbmpdata[40960] = {0};// printf("image_file = %s\n",image_file) ;wltdecode_t pFun = NULL;void *handle = dlopen("./libwlt2bmp.so", RTLD_LAZY);if (NULL == handle){printf("调用相片解码库失败,返回值:%s.\n", dlerror());return 0;}pFun = (wltdecode_t)dlsym(handle, "_Unpack");if (NULL == pFun){printf("pFun = (wltdecode) dlsym(handle, _Unpack == NULL \n");dlclose(handle);return 0;}if ((ret = (*pFun)((char *)photo, 1024, outbmpdata, &nlen)) == 1){FILE *fpWrite = NULL;fpWrite = fopen(image_file, "wb");if (NULL != fpWrite){fwrite(outbmpdata, 1, nlen, fpWrite);fclose(fpWrite);}else{printf("相片解码失败\n");}}else{// printf("ret = %d\n",ret) ;}dlclose(handle);return 0;
}int main()
{
//广东东信智能科技有限公司
//EST-100多功能智能卡读写器
//照片原始数据示例char pic1024[1024*5]="111166888800111100FF85175151513E710DD564F335902D039CB4F2528DBAF0CC39213ED161D92FA5A926C853ECD2A1012F80DF523E1BC5256084DDADBE510C3A46E08DD31B3BC495A2DE1B7506FE57D4C27151AEDC5251515A3E9246D6C208748C2D3A5BCCE7451E57929F31522C75FDABEECBD6C8557372BF9181CE1EE460E1111FE8E77B1AA6902E1E41A28F479888839CA6BC73B4874295BFB7A6D839EADBF54D6C8E4AC63041D32A07045EDF136A8175A6F22A538A017293140904FC1111F3AAB75EC0404F58744D5FA8AD714F71573819625ED9EA15E715F4140035E337D55FAA0AA434D10F4542C5BCD80D526C1FE8AC62336BCDDB8A2BFDB29E33A96E287AD75983C11C24348D7B5779775E4B9D8F7A51111126ED5C1723B325F22B3ADB810A4D1111143D9F92FC23BECD204F8B76943F70A128C0E6AB07CB57FB2F61C4B45D6102D256E93AB59B5F228A58F33141825C6C617E5ADB2D186F7481D145A9167213FF450C5F1AE749344415B5CBD2DD608906DD30835D7D59F5BB1B5B80A38740E63AFFA6A4638B7426869B79FBA120EF925D9BFBC56918B79D9993D08DA9AD81171AD9F6357EF3F9549BE8088C08F30EFC160B85BA8A07EBBB9CB25DEAAAD7F3FB21444A0AD8ED6949499D01111029B06E040CFD84FC3D7C4847887BB993334FA0437624B0BE7C318AD02A73580A8029829760039986DA8BEA1192B502726391E9B598AD50D33FE917028716E1316098A24E64851E1568E410EC0BA1E6FC6605FB33894B02E48BA5BC30542DCF352F9836C3B7736C5D5BD2F12CB56436220111118B632908CA8336C4BE3A5CFDDD4B7C109BC5E983C3AE512A23F9BFB4C839491057CC502B2EB5D092EB9DCB2BA890D45AF3A9D9AC98888630963CB4F99A00D1E5C6C510F82055FFDCB3B69DCDFBBC3C8C766CDF59AF8EC68D95E1498C66796D6A686D511D3234990D9A22DF2213E7A06F3A60828F98824A15C350CF94B06B2E6FBD165D0CAA0897C4AC4F9783CB356814D52B8E4C11FB67287282F27777B1785AB0B22EF45BCD51C47D16F2A148DF57D1EDAFF71EBE481E6DC7DF495B562E899417BFD5FC8F43FDEA29B5250E5F275B62DD4E09FC06239D6AEA6CBF0075762E9FBA2AFC35F01BA9D2BA02878A78ED1767585170E990DD42FA0E1EF25E82BEFB3FE6BD5C394C3509EE70938119B284A45E67CAC44DC57ABE6711D60E7CB8B2A45A3EA6016C3DCE110A12A6AE51B03EAFF5665DB259D38F0F77B98DDFB476A55519E7680E2A797154416028888136F82DE0A516F8F49790145E9B0B46CB01E6A92218AE512393E8EFEE8126CF0401B34198125A3EC64EA738CF8820C5E22EACB3853A2CF2CEA7768F2B3B6147C8F424B89C92CCE20103839E0B6F6424022DEDE4C09D8A55D51111C6BCBD6D03A2E1769645A5248DBEFD9F0E02601234";unsigned char temp[300];unsigned char OutReport[2048];unsigned char Response_APDU[1024] = {0};int t_nCmdLen;unsigned char t_arrCmdRe[1024] = {0};char t_arrCmdSend[1024] = {0};t_nCmdLen = util_putHex2Char(pic1024, t_arrCmdSend, 0);unsigned char t_charTempEDZ[5 * 1024 * 1024] = {0} ;writePhoto(t_arrCmdSend, t_charTempEDZ, imagePath);return 0 ;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/185324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何熟练使用vim工具?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

软件系统安全漏洞检测应该怎么做?靠谱的软件安全检测公司推荐

软件系统安全漏洞检测是指通过对软件系统进行全面的、系统化的评估,发现和解决其中可能存在的安全漏洞和隐患。这些安全漏洞可能会被不法分子利用,引发数据泄露、系统瘫痪、信息被篡改等安全问题,给企业造成严重的经济和声誉损失。那么软件系…

zabbix分布式监控平台从IPV4切换到IPV6之监控主机切换

现在有一套监控了海量服务器的zabbix分布式监控平台需整体在线从IPV4切换到IPV6,不能影响其原有的定制监控及视图。本文讲解了切换的第一步--监控主机切换。 一、zabbix分布式监控平台平台架构 本套zabbix分布式监控平台是一个多代理服务器分布式部署的典型传统架构…

Node——Node.js简介

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它能够让JavaScript脚本运行在服务端,这使得JavaScript成为与PHP、Python等服务端语言平起平坐的脚本语言。 1、认识Node.js Node.js是当今网站开发中非常流行的一种技术,它以简单易…

开放远程访问MySQL的权限

访问远程数据库时,产生Access denied for user ‘root‘‘xxx.xxx.xxx.xxx‘ (using password: YES)异常的解决办法 一. 异常现象 我编写了一个SpringBoot项目,项目中连接的数据库服务器地址是192.168.87.107,然后打包生成了对应的jar包&am…

Microsoft Remote Desktop高效、安全、稳定的远程办公解决方案

在今天的数字化时代,Remote Desktop远程办公已成为许多人的日常生活。无论你是因为工作需要,还是因为在家中需要访问公司服务器,微软远程连接软件都是一个理想的选择。 微软远程连接软件Remote Desktop是一款高效、安全、稳定的远程办公解决…

苹果手机照片恢复,这3个方法收藏好了吗?

如今,我们越来越喜欢用手机拍照来记录生活的点点滴滴。对于很多人来说,手机中的照片是他们珍贵的记忆和情感。如果这些照片丢失了,会给他们带来很大的困扰。那么,如何恢复苹果手机照片呢?本文将为您介绍有关苹果手机照…

内网穿透的应用-如何部署Tale博客并结合cpolar内网穿透发布个人站点到公网访问

Linux系统部署Tale个人博客并发布到公网访问 文章目录 Linux系统部署Tale个人博客并发布到公网访问前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale…

阿里云效一键部署前后端

静态站点到OSS 阿里云-云效,阿里云企业级一站式 DevOps,可以免费使用(会限制人数、流水线数量等,个人项目够用了)。相关文章 CI 持续集成 - 阿里云云效 OSS 是对象存储的意思,一般一个项目对应一个 Bucke…

深度学习手势检测与识别算法 - opencv python 计算机竞赛

文章目录 0 前言1 实现效果2 技术原理2.1 手部检测2.1.1 基于肤色空间的手势检测方法2.1.2 基于运动的手势检测方法2.1.3 基于边缘的手势检测方法2.1.4 基于模板的手势检测方法2.1.5 基于机器学习的手势检测方法 3 手部识别3.1 SSD网络3.2 数据集3.3 最终改进的网络结构 4 最后…

STM32 外部中断配置与中断函数设计

单片机学习 目录 文章目录 一、外部中断配置步骤 1.1配置RCC 1.2配置GPIO 1.3配置AFIO 1.4配置EXTI 1.5配置NVIC 二、中断函数设计 总结 一、外部中断配置步骤 第一步:配置RCC,把涉及外设的时钟打开。第二步:配置GPIO,选择…

样品实验K-KAT348羧酸铋催化剂TDS说明书

样品实验K-KAT348羧酸铋催化剂TDS说明书 50克 100克 200克

STM32_11(SPI)

一、SPI通信 SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slav…

还在愁没项目?来瞧瞧这些另类赚钱方式

客套话不多说,直接上案例,这些都是正儿八经的真实案例,相信大家通过这些人的案例自然能摸索整理出一套属于自己的项目!摸索不出,也多多少少能受一些灵感上的启发。 小A是长期混B站的,大家称他为“B站搬运工…

C++ 通过SQLite实现命令行工具

本文介绍了一个基于 C、SQLite 和 Boost 库的简单交互式数据库操作 Shell。该 Shell 允许用户通过命令行输入执行各种数据库操作,包括添加、删除主机信息,设置主机到特定主机组,以及显示主机和主机组列表。通过调用 SQLite3 库实现数据库连接…

【网络安全】meterpreter攻击实战

1.meterpreter 攻击成功后可以做什么指令? 远程控制命令执行摄像头监控密码获取创建后门用户破坏篡改系统。 2.创建后门用户并开启远程连接: net user zhangsan 123456/add && net localgroup adminstrators zhangsan/add exit run getgul -…

拓数派荣获上海市“智慧工匠”工业软件创新案例奖

近日,由上海市经济和信息化委员会指导、上海市城市数字化转型应用促进中心主办、上海中创产业创新研究院承办的“工业软件赋能新型工业化”主题沙龙暨2023“智慧工匠”工业软件创新案例竞赛颁奖典礼在上海圆满落幕。拓数派凭借上汽集团工业数据管理服务平台案例成功…

ROS vscode使用基本配置

1、创建ros工作空间 2、启动 vscode 3、vscode 中编译 ros ctrl shift B 调用编译,选择:catkin_make:build 修改.vscode/tasks.json 文件 4、 创建 ROS 功能包 选定 src ---> create catkin package 依次设置包名、添加依赖 5、C 实现 在功能包的 src 下…

Yolov8训练数据集过程 + 测试测试集 + 继续训练+报错解决

做自己第一次使用Yolov8训练的记录 1、下载代码 官网的我没找到对应的视频教程,操作起来麻烦,一下这个链接的代码可以有对应bilibili教程:完整且详细的Yolov8复现训练自己的数据集 选择这个下载: 2、安装需要的包: …

扫码听音乐该如何制作?音乐的二维码生成方法

多个音频文件怎么做成一个二维码显示?二维码在现在的生活中拥有丰富的使用场景,可以用来作为多种内容类型的载体,比如音频二维码就是经常被使用的一种二维码类型。通过扫秒二维码来听音频文件,更加的灵活方便,那么音频…