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

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    科普|什么是MAC地址MAC码、OUI码、蓝牙串号

    点击上方蓝字关注我们第一问:MAC地址是什么?MAC地址(MediaAccessControlAddress),直译为媒体访问控制地址,也称
    的头像 发表于 04-16 11:07 296次阅读
    科普|什么是<b class='flag-5'>MAC</b><b class='flag-5'>地址</b>、<b class='flag-5'>MAC</b>码、OUI码、蓝牙串号

    龙芯中科携手五所高校加速构建自主信息技术人才体系

    为推动国产自主可控处理器深度融入高校人才培养全链条,加速构建自主信息技术人才体系,龙芯校园行活动相继走进中国科学技术大学、安庆师范大学、湖南大学、广西大学、大连理工大学5所高校,聚焦龙芯自主信息技术
    的头像 发表于 04-13 14:32 406次阅读

    瑞芯微RK平台AP6275PR3模块蓝牙MAC地址获取实战指南

    combo模块(如本文案例中的 AP6275PR3 )自带的硬件MAC地址,却找不到入口 •系统自动生成的临时MAC地址,在量产场景下完全不可靠 别急,我们结合RK平台的
    的头像 发表于 03-06 08:10 615次阅读
    瑞芯微RK平台AP6275PR3模块蓝牙<b class='flag-5'>MAC</b><b class='flag-5'>地址</b>获取实战指南

    提醒|MAC(oui)地址要涨价!

    如题,每一年都是这样没有任何意外的可能,从10多年从事此行业至此都是这个规律,没有变过。IEEE官方定于每年的12月31日起,在原费用上涨3%。Pleasenotethattheannual3%priceincreasewillgointoeffectforallregistrieson31December2025at1:00pmET.
    的头像 发表于 12-16 17:36 1422次阅读
    提醒|<b class='flag-5'>MAC</b>(oui)<b class='flag-5'>地址</b>要涨价!

    龙芯中科成功举办2025信息技术应用创新产教融合交流会

    11月30日,在教育部教育管理信息中心、山东省电化教育馆的支持和指导下,龙芯中科联合浪潮集团、济南幼儿师范高等专科学校(以下简称“济南幼高专”),成功举办信息技术应用创新产教融合交流会,并同步举行信息技术应用创新实践基地启用仪式
    的头像 发表于 12-08 14:53 993次阅读

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

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

    诚迈科技信电脑助力2025第二届教育信息技术应用创新大赛圆满收官

    11月15日,由中国教育技术协会主办、浙江大学与中国教育技术协会网络安全专业委员会联合承办,中国电子工业标准化技术协会信息技术应用创新工作委员会、浙江高校信
    的头像 发表于 11-17 17:58 842次阅读
    诚迈科技信<b class='flag-5'>创</b>电脑助力2025第二届教育<b class='flag-5'>信息技术</b>应用创新大赛圆满收官

    宝马南京信息技术有限公司开业

    今日,宝马(南京)信息技术有限公司在南京正式“挂牌运行”。这家华晨宝马全资子公司由领悦数字信息技术有限公司南京分公司“迭代”而来,代表着一次里程碑式的“进化”。这次升级不仅加速了宝马在华数字化转型进程,更通过深化本土创新,为“未来智慧出行”的发展谱写了核心“代码”。
    的头像 发表于 10-29 15:17 792次阅读

    加密算法的应用

    加密是一种保护信息安全的重要手段,近年来随着信息技术的发展,加密技术的应用越来越广泛。本文将介绍加密算法的发展、含义、分类及应用场景。
    发表于 10-24 08:03

    CYW20820 SPP 如何更改 MAC 地址

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

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

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

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技术应用创新,其核心目标是实现
    的头像 发表于 07-22 18:20 841次阅读

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

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

    wsOtaUpgrade有没有办法指定MAC地址

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

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

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