数码之家

 找回密码
 立即注册
搜索
查看: 917|回复: 12

程序加密后传输 + 发布项目程序 + USB直接下载

[复制链接]
发表于 2023-6-3 17:16:43 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 钟山风雨起苍黄 于 2023-6-3 21:22 编辑


                               
登录/注册后可看大图

程序加密后传输 + 发布项目程序 + USB直接下载
5.3.2  程序加密后传输(防烧录时串口被监控被分析出程序
目前,所有的普通串口下载烧录编程或升级程序都是采用明码通信的(电脑和目标芯片通信时,或脱机下载板和目标芯片通信时),
问题:如果烧录环节烧录人员/或买通烧录人员的第三方通过分析下载烧录编程时串口通信的数据,高手是可以在烧录时在串口
上引2根线出来,通过分析串口通信的数据分析出实际的用户程序原始的目标代码的。
当然用STC的脱机下载板烧程序总比用电脑烧录程序强 !防止烧录人员将程序轻易从电脑盗走,如通过网络发走,如通过U盘烤走,
防不胜防,当然盗走你的电脑那就没办法那 !所以STC的脱机下载工具比电脑烧录安全,让前台文员烧录,让司机保安烧录都可以。

即使是STC全球首创的脱机下载工具要防止【不法分子在脱机烧录的过程中,通过分析串口通信数据获得实际的用户程序目标代码】
也是没有办法达到要求的,这就需要用到最新的 STC8/STC32 系列单片机所提供的程序加密后传输下载功能

程序加密后传输下载是:用户先通过新版STC-ISP V6.91Q或以上的STC-ISP软件帮你自己自动生成一套你的专用加密密钥对你的程序
进行加密然后将加密后的代码再通过串口下载,此时下载传输的是加密文件,通过串口分析出来的是加密后的乱码,如不通过派人潜
入你公司盗窃你电脑里面的加密密钥,就无任何价值,便可起到防止在烧录程序时被烧录人员或你要防范的第三方买通你的烧录人员,
在烧录时通过 监测 [P3.0,P3.1] 串口分析出目标代码的途径。

程序加密后传输功能的使用需要如下的几个步骤:
1、生成并保存新的密钥
如下图,进入到“程序加密后传输”页面,点击“生成新密钥”按钮,即可在缓冲区显示新生成的256字节的密钥。然后点击
“保存密钥”按钮,即可将生成的新密钥保存为以“.K”为扩展名的的密钥文件(注意:这个密钥文件一定要保存好,以后
发布的代码文件都需要使用这个密钥加密,而且这个密钥的生成是非重复的,即任何时候都不可能生成两个完全相同的密钥,
所以一旦密钥文件丢失将无法重新获得)。例如我们将密钥保存为“New.k”。
image.png

2、对代码文件加密
加密文件前,需要先打开我们自己的密钥。若缓冲区中存放的已经是我们的密钥,则不要再打开。如下图,在“程序加密后传输”
页面中点击“打开密钥”按钮,打开我们之前保存的密钥文件,例如“New.k”,然后返回到“程序加密后传输”页面中点击“加密代码”
按钮,如下图所示,首先会弹出“打开源文件(未加密)”的对话框,此时选择的是原始的未加密的代码文件
image.png
点击打开按钮后,马上有会弹出一个类似的对话框,但此时是对加密后的文件进行保存的对话框。
如下图所示,点击保存按钮即可保存加密后的文件。
image.png
image.png

3、将用户密钥更新到目标芯片中
更新密钥前,需要先打开我们自己的密钥。若缓冲区中存放的已经是我们的密钥,则不要再打开。如下图,
在“自定义加密下载”页面中点击“打开密钥”按钮,打开我们之前保存的密钥文件,例如“New.k”。密钥打
开后,如下图所示,勾选上“下载用户代码前先更新用户密钥”选项和“本次下载的代码为加密代码”的选项,
然后打开我们之前加密过后的文件,打开后点击界面左下角的“下载/编程”按钮,按正常方式对目标芯片
下载完成即可更新用户密钥。
image.png

4、加密更新用户代码
密钥更新成功后,目标芯片便具有接收加密代码并还原的功能。此时若需要再次升级/更新代码,则只需要
参考第二步的方法,将目标代码进行加密,然后如下图

对于一片新的STC单片机,可将步骤3和步骤4合并完成,即将密钥更新到目标单片机的同时也可将加密后的代码
一并下载到单片机中,若已经执行过步骤3(即已经将密钥更新到目标芯片中了),则后续的代码更新就只需要
按照步骤4,只需要在“程序加密后传输”页面中选择“本次下载的代码为加密代码”的选项(“下载用户代码前先更新
用户密钥”选项不需要选了),然后打开我们之前加过密后的文件,打开后点击界面左下角的“下载/编程”按钮,
按正常方式对目标芯片下载即可完成用用户自己专用的加密文件更新用户代码的目的
(防止在烧录程序时被烧录人员通过监测串口分析出代码的目的)。
image.png

 楼主| 发表于 2023-6-3 17:17:43 | 显示全部楼层
本帖最后由 钟山风雨起苍黄 于 2023-6-4 10:12 编辑

5.3.1      发布项目程序
发布项目程序功能主要是将用户的程序代码与相关的选项设置打包成为一个可以直接对目标芯片进行下载编程的用户自己界面的超级简单的可执行文件
关于界面,用户可以自己进行定制(用户可以自行修改发布项目程序的标题、按钮名称以及帮助信息),同时用户还可以指定目标电脑的硬盘号和目标
芯片的ID号,指定目标电脑的硬盘号后,便可以控制发布应用程序只能在指定的电脑上运行(防止烧录人员将程序轻易从电脑盗走,如通过网络发走,如
通过U盘烤走,防不胜防,当然盗走你的电脑那就没办法那,所以STC的脱机下载工具比电脑烧录安全,能限制可烧录芯片数量,让前台文员小姐烧,让老板娘
烧都可以),拷贝到其它电脑,应用程序不能运行。同样的,当指定了目标芯片的ID号后,那么用户代码只能下载到具有相应ID号的目标芯片中
(对于一台设备要卖几千万的产品特别有用---坦克,可以发给客户自己升级,不需冒着生命危险跑到战火纷飞的伊拉克升级软件啦),对于ID号不一致的
其它芯片,不能进行下载编程。

发布项目程序详细的操作步骤如下:
1、首先选择目标芯片的型号
2、打开程序代码文件
3、设置好相应的硬件选项
image.png

4、试烧一下芯片,并记下目标芯片的ID号,如下图所示,该芯片的ID号即为“F784C000001364”
(如不需要对目标芯片的ID号进行校验,可跳过此步)
image.png

5、设置自动增量(如不需要自动增量,可跳过此步)
image.png

6、设置RS485控制信息(如不需要RS485控制,可跳过此步)
image.png

7、点击界面上的“读取本机硬盘号”按钮,并记下目标电脑的硬盘号
(如不需要对目标电脑的硬盘号进行校验,可跳过此步)
image.png

8、点击“发布项目程序”按钮,进入发布应用程序的设置界面。
9、根据各自的需要,修改发布软件的标题、下载按钮的名称、重复下载按钮的名称、自动增量的名称以及帮助信息
10、若需要校验目标电脑的硬盘号,则需要勾选上“校验硬盘号”,并在后面的文本框内输入前面所记下的目标电脑的硬盘号
11、若需要校验目标芯片的ID号,则需要勾选上“校验芯片ID号”,并在后面的文本框内输入前面所记下的目标芯片的ID号
image.png

12、最后点击发布按钮,将项目发布程序保存,即可得到相应的可执行文件。
发布的项目程序打界面如下图
image.png

========如下梦幻的效果===================================

                               
登录/注册后可看大图

回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-3 17:18:50 | 显示全部楼层
本帖最后由 钟山风雨起苍黄 于 2023-6-4 10:49 编辑

5.3.3      【发布项目程序】+【程序加密后传输】结合使用
【发布项目程序】与【程序加密后传输】两项新的特殊功能可以结合在一起使用。首先程序加密后传输可以确保用户代码
在烧录编程时串口通信传输过程当中的保密性,而发布项目程序可实现让最终使用者远程升级功能(方案公司的人员不需要亲自到场)。
所以两项功能结合起来使用,非常适用于方案公司/生产商在软件需要更新时,让最终使用者自己对终端产品进行软件更新的目的,
又确保现场烧录人员无法通过串口分析出有用程序,强烈建议方案公司使用。

发布项目程序可参考5.16.1章节步骤,示意图如下:
image.png

程序加密后传输可参考5.16.2章节步骤,示意图如下:
image.png

=======如下梦幻的效果=====================

                               
登录/注册后可看大图



回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-3 17:19:31 | 显示全部楼层
本帖最后由 钟山风雨起苍黄 于 2023-6-4 10:51 编辑

STC8H8K64U-45MHz-TSSOP20, RMB1.4
USB直接仿真,USB直接下载,线路图
image.png
现在STC的带硬件USBMCU支持用硬件USB下载,因为用的是USB-HID通信协议,不需要安装任何驱动。
STC打狗棒、降龙棍、开天斧、屠龙刀核心板以及STC开源示波器、STC实验箱
D-/P3.0, D+/P3.1PC-USB端口连接好的状况下,USB-ISP下载程序步骤:
1、按下板子上的P3.2/INT0按键,就是P3.2接地
2、给目标芯片重新上电,不管之前是否已通电。
===电子开关是按下停电后再松开就是上电
等待STC-ISP下载软件中自动识别出“STC USB Writer (HID1)” ,识别出来后,就与P3.2状态无关了,这时可以松开P3.2按键
===传统的机械自锁紧开关是按上来停电,按下去是上电
3、点击下载软件中的“下载/编程”按钮(注意:USB下载与串口下载的操作顺序不同)
下载成功 !
===另外从用户区软复位到系统区也是等待USB下载。



回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2023-6-5 09:39:27 | 显示全部楼层
程序加密后传输 + 发布项目程序 + USB直接下载:在远方升级而控制次数的目的
回复 支持 反对

使用道具 举报

发表于 2023-6-6 16:24:53 | 显示全部楼层
意义有,但不大:
1.新芯片在生产线上烧入,还是要装载密钥文件,你的密钥文件还是要给小姐姐
2.既然第二次烧入才有保护,那么第一次烧入一个bootloader,后续通过这个bootloader进行IAP更新主程序即可(arm核的芯片都是这种方式,因为芯片的中断向量地址可以任意往后设置,除了要设置对编译起始地址,主程序编译代码完全和bootloader无关)
芯片有了bootloader,想怎么加密怎么加密,想怎么握手怎么握手,完全脱离MCU厂家的控制。
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2023-6-6 17:24:27 | 显示全部楼层
STC的IAP的芯片也可以实现远程升级的:

image.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-7 20:23:04 | 显示全部楼层
人生之际 发表于 2023-6-6 16:24
意义有,但不大:
1.新芯片在生产线上烧入,还是要装载密钥文件,你的密钥文件还是要给小姐姐
2.既然第二次 ...

你那个要重新手工开发,麻烦,MCU 要重新开发,电脑端要重新开发,STC这个是全自动生成,不是一个级别
回复 支持 反对

使用道具 举报

发表于 2023-6-8 13:29:19 | 显示全部楼层
这个很有中国特色!
回复 支持 反对

使用道具 举报

发表于 2023-6-8 20:55:43 | 显示全部楼层
9.9 的pwlink可以远程烧录
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2023-6-9 09:24:31 | 显示全部楼层
STC8H8K64U 可以直接USB下载,远方的客户升级,不需要另外的任何下载工具:


image.png

image.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-9 14:13:37 | 显示全部楼层
本帖最后由 钟山风雨起苍黄 于 2023-6-9 14:14 编辑
kkstun 发表于 2023-6-8 20:55
9.9 的pwlink可以远程烧录

就是要防你这个不专业的远程烧录工具的漏洞,你这个现场被拦截传输的程序是明码,可直接被还原成可以反复烧录的目标码,【STC的程序加密后传输功能】就是防止这种不专业工具的漏洞
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2023-6-12 14:59:35 | 显示全部楼层
程序加密后传输 + 发布项目程序 + USB直接下载远程升级
===让你的客人在远方自己升级更新程序,而拿不到你的源程序,达到控制次数的目的

                               
登录/注册后可看大图


                               
登录/注册后可看大图

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-3-29 22:20 , Processed in 0.171600 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表