0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术针对MAC地址的应用程序加密方法

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-17 10:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在实际应用中,客户可能希望对自己的程序添加验证过程,使得无法被随意拷贝到其它板子上使用。英创ARM系列工控主板都配有唯一指定MAC,我们可以根据MAC地址,生产加密字符串,存入KEY文件或是注册表内。然后在程序启动部分添加验证代码,验证这个字符串,从而达到防拷贝的目的。

本文介绍MAC的获得方式及几种常用的加密方式。

验证设备

在验证MAC之前,首先应当检查使用的板卡型号,以检查EM9281为例,代码如下。

添加头文件及宏定义,此部分代码均包含在板子对应SDK包中的bsp_drivers.h下

#include

extern"C"__declspec(dllimport) BOOLKernelIoControl( DWORDdwIoControlCode,

LPVOID lpInBuf,

DWORD nInBufSize,

LPVOID lpOutBuf,

DWORD nOutBufSize,

LPDWORD lpBytesReturned);

#defineIOCTL_HAL_BOARD_STATE_READ CTL_CODE(FILE_DEVICE_HAL, 4024, METHOD_BUFFERED, FILE_ANY_ACCESS)

#defineEM9280_BOARD_TYPE_9280 0

#defineEM9280_BOARD_TYPE_9281 1 // -> EM9281

#defineEM9280_BOARD_TYPE_9380 2

#defineEM9280_BOARD_TYPE_9283 3

#defineEM9280_BOARD_TYPE_ES9281 4 // -> ES9281

#defineEM9280_BOARD_TYPE_9287 7

#defineEM9280_BOARD_CFG_SHIFT 14

#defineEM9280_BOARD_CFG_MASK 0x3

#defineEM9280_BOARD_TYPE_SHIFT 4

#defineEM9280_BOARD_TYPE_MASK 0x7

#defineEM928X_BOARD_TYPE_BASE(v) ((v >> EM9280_BOARD_TYPE_SHIFT) & EM9280_BOARD_TYPE_MASK)

#defineEM928X_BOARD_TYPE_SUB_ID(v) ((v >> EM9280_BOARD_CFG_SHIFT) & EM9280_BOARD_CFG_MASK)

#defineEM9287_BOARD_TYPE_SUB_TYPE(v) ((EM928X_BOARD_TYPE_SUB_ID(v)==1)? EM9280_BOARD_TYPE_9281:\

(EM928X_BOARD_TYPE_SUB_ID(v)==2)? EM9280_BOARD_TYPE_ES9281: EM9280_BOARD_TYPE_9287)

#defineEM928X_BOARD_TYPE_ALL(v) ((EM928X_BOARD_TYPE_BASE(v)==EM9280_BOARD_TYPE_9287)? EM9287_BOARD_TYPE_SUB_TYPE(v):EM928X_BOARD_TYPE_BASE(v))

检查板卡型号,以EM9281为例

BOOL bRet;

DWORD dwReturnBytes;

DWORD dwBoardInfo = 0;

dwReturnBytes = 0;

bRet = KernelIoControl(IOCTL_HAL_BOARD_STATE_READ,

NULL, 0,

(LPVOID)&dwBoardInfo,sizeof(DWORD),

&dwReturnBytes);

If(EM928X_BOARD_TYPE_ALL(dwBoardInfo)!= EM9280_BOARD_TYPE_9281)return;

获得MAC地址

必要的头文件和lib库

#include"Iphlpapi.h"

#pragmacomment(lib,"Iphlpapi.lib")

VOIDGetMAC(BYTE* buf)

{

DWORD dwRetVal;

IP_ADAPTER_INFO AdapterInfo[4];

ULONG OutBufLen =sizeof(IP_ADAPTER_INFO);

GetAdaptersInfo(&AdapterInfo[0], &OutBufLen);

GetAdaptersInfo(&AdapterInfo[0], &OutBufLen);

/*if(strcmp(AdapterInfo[0].AdapterName, "ENET1") != 0)

{

return;

}*/

memcpy(buf, AdapterInfo[0].Address, 6);

}

BYTE mac[6];

GetMAC(mac);

char macstr[16];

sprintf(macstr, "%02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);

加密策略

英创所有嵌入式板卡都拥有唯一的MAC地址,在对MAC地址加密后,生成唯一的加密KEY。同时程序中判断板卡信息,并验证这个加密KEY。这样可以保证程序必须处于正确的板卡中,并拥有正确的KEY文件,才能执行。

为了增加安全性,加大KEY文件破译难度,可以考虑以下处理

1、将MAC地址与常量字符串混合后,再进行加密,生成加密KEY。

2、多种加密手段结合使用,多次加密。

3、验证失败后“软”关闭程序,可以做延迟处理,并可以考虑重启设备,增加暴力破解KEY的难度。

加密程序流程

获得板卡MAC地址à 执行加密函数à 生成KEY文件置入板卡中

解密程序流程

查询板卡MACà执行加密函数à读取KEY文件中密钥并对比à判断验证是否成功并进行后续执行

读取KEY文件中密钥à执行解密函数à查询板卡MAC并对比à判断验证是否成功并进行后续执行

加密方法

常用的加密方法有很多,可以参考文章《常用加密方法及代码》。同时英创提供这些加密算法相关测试例程,如有需要,可以联系英创工程师获得。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    36948
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    龙芯中科助力2025教育信息技术应用创新大赛成功举办

    2025年11月13日-15日,由中国教育技术协会主办、浙江大学与中国教育技术协会网络安全专业委员会联合承办,中国电子工业标准化技术协会信息技术应用创新工作委员会、浙江高校信
    的头像 发表于 11-21 16:23 592次阅读

    CYW20820 SPP 如何更改 MAC 地址

    您好,我目前正在使用多个CYW20820进行应用程序开发。我主要使用rfcomm来发送和接收数据。我想知道如何更改每个芯片的经典Bluetooth®的 MAC 地址
    发表于 08-11 07:26

    佛瑞亚如何通过信息技术推动业务增长

    在数字化、信息化的浪潮下,信息技术已经不仅是后台工具,更成为驱动企业发展的关键力量。本期Women Inspiring Mobility,我们采访了佛瑞亚中国区信息技术总监马瑛,了解她和团队如何将
    的头像 发表于 07-29 14:00 728次阅读

    DEKRA德凯成为沙特通信和信息技术设备技术法规认证机构

    近日,DEKRA德凯成功获得沙特标准、计量和质量组织(SASO)认可,正式成为沙特通信和信息技术设备技术法规(Technical Regulation for Communications
    的头像 发表于 07-15 14:27 729次阅读

    wsOtaUpgrade有没有办法指定MAC地址

    cybt-353027 的 MAC 地址。 我可以制作一个软件实用程序,从连接的设备读取 MAC 地址,然后使用正确的
    发表于 06-27 06:19

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 6291次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    通过注册表和Technitium MAC Address Changer修改MAC地址(支持W5500模块及通用网卡)

    一、前言 在某些场景下(如网络调试、隐私保护或设备唯一性管理),需要修改网络设备的MAC地址。本教程将详细介绍两种方法:注册表修改(适合高级用户)和 Technitium MAC Ad
    发表于 03-28 09:18

    在STM32微控制器中实现数据加密方法

    相关文档和示例代码,确保正确理解和使用库函数。 · 对于涉及敏感数据的应用程序,建议定期更新和维护加密机制,以应对新出现的安全威胁和漏洞。 请注意,以上信息仅供参考。在实际应用中,应根据具体需求和场景
    发表于 03-07 07:30

    芯盛智能荣获2024年信息技术应用创新工作委员会卓越贡献成员单位

    日前,中国电子工业标准化技术协会信息技术应用创新工作委员会(以下简称 “信工委会”)2024 年度总结座谈会于北京隆重举行。此次会议对在信工作中作出突出贡献的成员单位予以表彰。江苏
    的头像 发表于 01-20 09:56 929次阅读

    IEEE即将涨价、MAC地址涨幅3%

    %priceincreasewillgointoeffectforallregistrieson31December2024at1:00pmET.MAC地址正是涨价范围,除去节假日还有几天,计划使用抓紧时机申请。MAC
    的头像 发表于 12-25 09:49 885次阅读
    IEEE即将涨价、<b class='flag-5'>MAC</b><b class='flag-5'>地址</b>涨幅3%

    飞腾助力首届教育信息技术应用创新大赛圆满落幕

    近日,由中国教育技术协会主办,教育部教育管理信息中心教育信实验室、公安部第三研究所、中国电子工业标准化技术协会信工委会支持,北京航空航天
    的头像 发表于 12-24 09:57 768次阅读

    浅谈加密芯片的一种破解方法和对应加密方案改进设计

    方案最重要的技术点就是加解密使用的临时秘钥的因子由主MCU芯片和加密芯片的双方的ID和随机数参与,使得每次通讯线路上的密文都是变化的。但是主MCU反汇编程序和ID1、R1、Data’、ID2、R2还是很
    发表于 12-20 15:31

    浅谈加密芯片的一种破解方法加密方案改进设计

    方案最重要的技术点就是加解密使用的临时秘钥的因子由主MCU芯片和加密芯片的双方的ID和随机数参与,使得每次通讯线路上的密文都是变化的。但是主MCU反汇编程序和ID1、R1、Data’、ID2、R2还是很
    发表于 12-20 15:10

    MAC地址的作用范围,MAC地址怎么申请?

    物理地址(PhysicalAddress),用于在网络中唯一标示一个网卡。以下是利检测针对其作用范围及申请方式的详细解答:MAC地址的作用
    的头像 发表于 12-19 17:44 2605次阅读
    <b class='flag-5'>MAC</b><b class='flag-5'>地址</b>的作用范围,<b class='flag-5'>MAC</b><b class='flag-5'>地址</b>怎么申请?

    mac的常见问题解决方法

    的启动项目。 磁盘清理: 使用磁盘工具进行磁盘清理,删除临时文件和缓存。 更新系统: 确保Mac系统和应用程序都是最新版本。 硬件检查: 如果问题持续,可能需要检查硬件,如硬盘是否有问题。 2. 应用程序崩溃 问题描述: 使用过
    的头像 发表于 12-19 15:02 1849次阅读