LabVIEW源程序安全性保护综合方案
LabVIEW源程序安全性保护综合方案
一、硬件加密保护方案
-
选择和安装硬件设备
-
选择加密狗和TPM设备:选择Sentinel HASP加密狗和支持TPM(可信平台模块)的计算机主板。
-
安装驱动和开发工具:安装Sentinel HASP加密狗的驱动程序和开发工具包(SDK),并确保TPM功能在BIOS中启用。
-
-
加密狗与TPM集成
-
安装LabVIEW工具包:在LabVIEW中安装Sentinel HASP提供的LabVIEW工具包。
-
加密狗验证逻辑:在LabVIEW程序启动部分,编写代码检查加密狗是否插入。
-
TPM密钥管理:使用TPM API或第三方库,在LabVIEW中编写代码,调用TPM进行密钥存储和验证操作。
-
二、软件加密保护方案
-
代码混淆
-
使用LabVIEW中的VI脚本或第三方工具,对LabVIEW代码进行混淆处理,使其难以被逆向工程。
-
-
密码保护
-
设置密码保护LabVIEW项目文件和关键VI,防止未经授权的访问和修改。
-
-
许可证管理
-
使用LabVIEW工具包或第三方工具,集成许可证管理系统,对程序的使用进行授权和控制。
-
-
程序签名
-
使用数字签名工具,对LabVIEW可执行文件进行签名,确保程序在分发和运行过程中未被篡改。
-
三、双重验证与使用限制
-
加密狗验证
-
在程序关键部分添加加密狗验证逻辑,确保程序运行时需要加密狗的存在。
-
-
TPM验证
-
在程序运行过程中,通过TPM验证存储的加密密钥,确保只有在特定硬件上才能运行程序。
-
-
使用限制
-
使用加密狗管理工具,设置程序的使用限制,如使用期限、功能模块等。
-
-
联合验证
-
结合加密狗和TPM的双重验证,在LabVIEW程序中编写逻辑,要求同时通过加密狗和TPM的验证,才能正常运行程序。
-
四、测试和部署
-
测试
-
在开发环境中测试加密狗和TPM的功能,确保其工作正常,同时验证软件加密手段的有效性。
-
-
部署
-
将编译后的可执行文件、加密狗和TPM设备一起分发给最终用户,并提供详细的安装和使用说明。
-
通过综合硬件加密和软件加密手段,形成双重保护机制,最大限度地保障LabVIEW源程序的安全性,防止其被非法复制和商业使用。
问题详述
我想阻止用户查看和编辑我的VI程序框图。我有哪些选择,安全级别有何不同?
解决方案
LabVIEW VI密码保护
LabVIEW VI密码保护功能允许用户运行VI,但是未提供密码的情况下禁止查看或编辑VI的程序框图。在新的的LabVIEW版本中打开VI时,只要重新编译,此功能将适用。请参阅创建受密码保护的VI以了解如何对VI进行密码保护。
相反,当前的VI密码保护机制是依赖于由VI密码得到的散列数据和其他一些数据(用作散列函数的输入),这些数据内嵌在VI中的不同位置,且密码本身并不存储在VI内部。这个机制保证了LabVIEW在需要查看或编辑程序框图的时候,即使不提供密码也仍然可以进入程序框图。LabVIEW会在随后的执行过程中,把根据输入密码计算出来的散列数据同存储在VI中的散列数据相比,然后决定使用者能否进入VI的程序框图。由于这个机制,加密的设计并不是针对VI程序框图本身的,因此攻击者有可能将密码散列替换成他自己定义的散列数据:
-
确定散列输入数据,以及VI文件中散列的准确位置
-
修改LabVIEW进程中的散列比较程序,比如使用内存调试器
尽管我们相信这种情况很少会发生,但攻击者仍有可能创建程序来破解VI的密码保护功能,从而将原密码替换为攻击者自己创建的密码。。
如果您需要比VI密码保护提供的更高的安全性,我们建议您改为删除VI的程序框图。

删除VI的程序框图
删除VI的程序框图提供了比使用VI密码保护更大的保护,但恢复原始程序框图难度很大且该VI只能运行在相同版本的LabVIEW中。请参阅从VI中删除方程序框图以了解如何删除VI程序框图。
删除VI的程序框图后,从VI中恢复原始程序框图非常困难,与仅仅包含文本语言编译器生成的机器指令的可执行应用程序恢复文本程序源相当。此外,LabVIEW只允许在编译和保存VI的LabVIEW版本和平台上运行VI;更新的LabVIEW版本或其他平台将无法重新编译VI。因此,您需要为希望支持的LabVIEW版本和平台提供独立的VI。
虽然VI密码保护的安全性略逊于移除程序框图,但为了防止随着移除VI程序框图带来的VI发布负担,我们创立了VI密码保护功能,并将会在今后继续提供这项功能。
关于我们
相关文章:
LabVIEW源程序安全性保护综合方案
LabVIEW源程序安全性保护综合方案 一、硬件加密保护方案 选择和安装硬件设备 选择加密狗和TPM设备:选择Sentinel HASP加密狗和支持TPM(可信平台模块)的计算机主板。 安装驱动和开发工具:安装Sentinel HASP加密狗的驱动程序和开发…...
JS包装类:循环中为什么建议用变量存储str.length进行循环判断?
前言 在Javascript通常我们在遍历一个字符串的时候通常使用的方式是 var str "abcdefg"; for(let i0;i<str.length;i){}但在最近的学习中,有人建议我最好应该是下面这样执行。 var str "abcdefg"; for(let i0,len str.length;i<len;i)…...
Android Audio实战——音量默认值修改(一)
在前面的文章《音频配置加载》中我们知道了,Audio 的一些配置信息是由硬件驱动保存到 audio_policy_configuration.xml 文件中,音量的一些默认值也会如此。但是在一些车载设备开发中,需要适配不同车型的需求,一套代码通常要适配多个车型,这就需要在 FW 层进行一些默认值的…...
解决uni-app progress控件不显示问题
官方代码: <view class"progress-box"><progress :percent"80" show-info activeColor"red" stroke-width"10" /> </view> 进度条并不在页面中显示,那么我们需要给进度条加上宽高style"…...
使用C++版本的opencv dnn 部署onnx模型
使用OpenCV的DNN模块在C中部署ONNX模型涉及几个步骤,包括加载模型、预处理输入数据、进行推理以及处理输出。 构建了yolo类,方便调用 yolo.h 文件 #ifndef YOLO_H #define YOLO_H #include <fstream> #include <sstream> #include <io…...
python中实现队列功能
【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 python中实现队列功能 选择题 以下代码最后一次输出的结果是? from collections import deque queue deque() queue.append(1) queue.append(2) queue.append(3) print(【显示】…...
自然资源-关于城镇开发边界局部优化的政策思路梳理
自然资源-关于城镇开发边界局部优化的政策思路梳理 国土空间规划的核心之一是要统筹划定“三区三线”,三条控制线中的城镇开发边界的划定与优化工作,一直是国土空间规划改革的重要组成部分,其有助于遏制城市盲目扩张,强化底线约束…...
ElementUI的Table组件在无数据情况下让“暂无数据”文本居中显示
::v-deep .el-table__empty-block {width: 100%;min-width: 100%;max-width: 100%; }...
ant design的upload组件踩坑记录
antd版本 v4.17.0 1.自定义了onpreview和onchange事件,上传文件后,文件显示有preview的icon但是被禁用,无法调用onpreview事件。 问题展现: 苦苦查找原因,问题出在了这里,当文件没有url的时候,…...
Python私教张大鹏 Vue3整合AntDesignVue之按钮组件
何时使用 标记了一个(或封装一组)操作命令,响应用户点击行为,触发相应的业务逻辑。 在 Ant Design Vue 中我们提供了五种按钮。 主按钮:用于主行动点,一个操作区域只能有一个主按钮。默认按钮࿱…...
【小海实习日记】PHP安装
## PHP环境搭建(Mac) ### php安装 使用brew需要安装homebrew >brew tap shivammathur/php >brew install shivammathur/php/php7.3 >brew link php7.3 这里可以需要homebrew使用代理进行下载,如果代理下载速度还是太慢,建议直接更该国内镜像…...
C++ Primer Chapter 4 Expressions
Chapter 4 Expressions 4.11 类型转换 4.11.2 其他隐式类型转换 数组转换成指针: 在大多数用到数组的表达式中,数组自动转换成指向数组首元素的指针: int ia[10]; int* ipa;♜ 当数组被用作decltype关键字的参数,或者作为取地…...
[leetcode hot 150]第一百三十七题,只出现一次的数字Ⅱ
题目: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 由于需要常数级空间和线性时间复杂度…...
wpf工程中加入Hardcodet.NotifyIcon.Wpf生成托盘
1、在项目中用nuget引入Hardcodet.NotifyIcon.Wpf。如下图所示。 2、在App.xaml中创建托盘界面,代码是写在 App.xaml 里面 注意在application中一定要加入这一行代码: xmlns:tb"http://www.hardcodet.net/taskbar" 然后在<Application.R…...
keil下载及安装(社区版本)
知不足而奋进 望远山而前行 目录 文章目录 前言 Keil有官方版本和社区版本,此文章为社区版本安装,仅供参考。 1.keil MDK 2.keil社区版介绍 3.keil下载 (1)打开进入登录界面 (2)点击下载,跳转到信息页面 (3)填写个人信息,点击提交 (4)点击下载…...
python书上的动物是啥
Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是一个叫Monty Python…...
数据库管理-第198期 升级Oracle ACE Pro,新赛季继续努力(20240605)
数据库管理198期 2024-06-05 数据库管理-第198期 升级ACE Pro,新赛季继续努力(20240605)1 惊喜2 变化3 Oracle ACE总结 数据库管理-第198期 升级ACE Pro,新赛季继续努力(20240605) 作者:胖头鱼的…...
华为坤灵交换机S300, S500, S210,S220, S200, S310 如何WEB抓包
通过S系列交换机配置端口镜像实现抓包 1、应用场景 端口镜像是指将经过指定端口(源端口或者镜像端口)的报文复制一份到另一个指定端口(目的端口或者观察端口)。 在网络运营与维护的过程中,为了便于业务监测和故障定位,网络管理员时常要获取设备上的业务…...
【亚马逊云科技 CSDN 联合巨献】 「对话AI 构建者:从基础到应用的 LLM 全景培训」 限时免费!
🚀🌟【亚马逊云科技 & CSDN 联合巨献】 📚「对话AI 构建者:从基础到应用的 LLM 全景培训」🔥 限时免费! 📆 抓紧时间!6月7日前注册,原价 399,现在仅需 0…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
