前言:帮学校的学长做了个Ubuntu的软件,需要给软件加密,用到了加密狗,在网上挑了很多,大都不支持Linux下ELF文件的加密,最后终于找到了Sentinel加密狗支持我们的需求,当然这个进口货也很贵,写一篇博客来记录一下使用方法。

环境配置

购买Sentinel的加密狗一般包括两个U盘,一个是主锁(Master key),一个是子锁。主锁只能用来加密,不能用来解密;子锁只能用来解密,不能用来加密。例如下图,我购买的产品,蓝色的是主锁,紫色的子锁。一般而言,主锁比较贵(例如我们购买的主锁400多RMB),子锁相对便宜一些(我们购买的子锁150多RMB)。并且,在一家供应商购买的主锁,对应的子锁也都只能在同一家供应商购买,这一点还是不太方便的。

有了主锁和子锁之后,我们还需要一个Linux下的SDK工具包,这个工具包可以问你的供应商索要。一般供应商会提供一个Windows下的工具包,在Windows电脑安装后,从其中可以提取出Linux工具包。工具包的名字一般叫Sentinel-LDK.tar.gz。有了这个工具包之后,我们需要把这个压缩包移动到Linux设备下并解压。我这里是拖动到了Ubuntu虚拟机里面。Linux工具包解压后,会得到一个叫Linux的文件夹,文件夹里面有这样一些文件:

其中最后的那个HTML是Linux的说明文档,可以把它用浏览器打开,看相关的使用说明。
解压好工具包之后,我们还需要在Ubuntu中安装这个工具包,安装工具可以使用apt,安装包在Linux/Redistribute/Runtime/文件夹下。

然后找到你对应的Linux发行版本和设备类型对应的rpm或deb包,安装即可。我这里的Ubuntu系统,amd64设备,所以我就使用命令sudo apt install ./aksusbd_8.11-1_amd64.deb来安装。

安装完成之后,请在浏览器中打开http://localhost:1947,检查是否安装成功。正常情况下,安装成功后应该会显示Sentinel的管理后台。

在管理后台的左下方可以选择语言中文。然后我们点击上方的Sentinel 锁,可以查看已连接的U盘狗。例如我这里的#2就是连接的主锁。注意这里的#1是保留的序号,正常情况下可以忽略。

在使用主锁加密之前,我们需要导出主锁的Vendor code。具体方法是,进入Linux/VendorTools/VendorSuite目录,注意到其中的masterhasp文件,这是一个可执行文件,可以用chmod a+x ./masterhasp添加执行权限。添加完执行权限之后,请使用sudo ./masterhasp运行这个程序(运行程序时需要保证主锁已经插在电脑上,如果是虚拟机的话,U盘必须连接到虚拟机而不是主机),之所以加sudo是因为这个程序需要读取连接的U盘,需要管理员权限才能进行。

执行程序后会弹出这样一个窗口

直接按默认选项,点击OK即可。然后看到下面这个窗口,我们选第一个(按他推荐的来)。

如果你的主锁正常连接到Linux的话,在新弹出的窗口中会自动读取到U盘狗的相关信息,直接点击next即可。然后,在下面的这个窗口,我们勾选所有的API选项,并点击next。

然后会进入漫长的下载过程。Sentinel的服务器在欧洲,并因为安全需求在国内没有镜像,但是下载速度还是可以接受的。

下载完成之后,直接点击Finish。
然后我们打开Linux的~/Documents目录,你会发现多了一个叫Gemalto/的文件夹。
~/Documents/Gemalto/Sentinel LDK 8.0/VendorCodes目录下,有一个以.hvc结尾的文件,它就是你的Vendor Code文件。你需要妥善的保管它。

加解密方法

在加密时,我们进入一开始的那个Sentinel Linux工具包文件夹,进入Linux/VendorTools/Envelope目录,会发现其中有一个文件叫linuxenv,这是一个可执行文件,我们通过chmod a+x ./linuxenv给他添加执行权限,然后运行./linuxenv -h可以看到这个程序的使用说明,这个程序就是专门给软件加密用的。

我们用一个示例程序来进行加解密演示,这个程序的文件名叫test_program,它位于Linux/VendorTools/Envelope目录下。

在加密前,请把之前得到的Vendor Code文件复制到Linux/VendorTools/Envelope目录下,即上一步得到的在~/Documents/Gemalto/Sentinel LDK 8.0/VendorCodes目录下的那个以.hvc结尾的文件,复制到Linux/VendorTools/Envelope目录下,我们假设您的Vendor code文件名叫DEMO.hvc(实际上,这个Vendor code文件名应该每个用户都不同)。

然后请您确认在Linux/VendorTools/Envelope目录下是否有这几个文件:

  • linuxenv (加密程序)
  • DEMO.hvc (Vendor code文件,每个人的文件名都不同)
  • test_program (要加密的软件程序,以你自己需要加密的程序名为准)

有了上面这些文件之后,我们可以直接开始加密。
我们使用命令./linuxenv -v:DEMO.hvc test_program test_program_protected来对test_program进行加密。
这个命令中,-v的意思是指定Vendor code文件,test_program是要加密的程序,test_program_protected是加密后输出的程序名。(特别提醒:在执行这个命令时,需要保证您的主锁正常连接在了电脑上,可通过http://localhost:1947查看主锁连接情况)。

加密后,我们执行./test_program_protected,会发现弹出下面的提示窗口:

这是因为我们没有插上子锁进行解密,主锁只能用来加密不能用来解密。我们插上子锁后,重新执行./test_program_protected,会发现程序可以正常执行了,说明我们的保护是有效的。

并且,可以用readelf -a test_program_protected查看test_program_protected文件的elf头部信息,会发现读取错误,说明Sentinel对软件代码进行了混淆处理,这大大增加了软件逆向的难度,说明我们的加密方案强度是很大的。

Sentinel圣天诺加密狗简单使用教程(Linux)相关推荐

  1. 圣天诺加密狗(HASP)破解

    圣天诺加密狗(HASP)破解 一.编写测试程序 dll代码: #include "pch.h" #include<stdlib.h> BOOL APIENTRY Dll ...

  2. 圣天诺SuperPro狗模拟视频语音教程

    http://u.115.com/file/f367a812a5 阿拉丁Aladdin_HASP系列语音视频教程.exe http://u.115.com/file/f31a5fdeea 阿拉丁Ala ...

  3. 圣天诺 加密java_圣天诺Sentinel LDK 7.8壳加密的编译环境是什么?

    圣天诺Sentinel LDK 7.8,对打包后项目中的jar文件进行壳加密. 运行后报错,error.log中如下: 2019-04-03 09:18:42 [ main:2 ] - [ ERROR ...

  4. Linux C/C++ Openssl RSA Encrypt/Decrypt(加密/解密) 简单示例教程

    PEM文件有以下格式 1.PEM私钥文件格式 -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- 生成该密钥的Linux命令 : ...

  5. 什么是灵活的软件授权模式,如何选择软件加密狗?

    作为软件和智能设备行业里的人,您很有可能听说过"灵活的软件加密打包"或"灵活的软件授权模式".但这些究竟指的是什么?灵活的软件模式可以归结为扩展客户的选择.它让 ...

  6. 加密狗圣天诺LDK V7.5特性

    SafeNet(现金雅拓) LDK加密锁(加密狗)对客户的持续承诺 加密狗(加密锁)开发套件免费下载中-- 让客户满意是SafeNet首要考虑的因素.我们在设计中始终考虑如何让现有客户可以非常轻松地完 ...

  7. 圣天诺LDK - HL

    圣天诺LDK是SafeNet 软件货币化方案中的一个旗舰产品.作为一套成品方案,它提供了安全又灵活的软件授权机制.它既包含高强度的.基于硬件锁的软件保护产品系列,又包含高灵活度.可管理的许可证(软锁) ...

  8. 圣天诺(LDK)加密锁 云授权,不用使用硬件的加密锁(加密狗)

    圣天诺(LDK)加密锁 云授权,不用使用硬件的加密锁(加密狗) 圣天诺LDK是市场上成熟且备受软件商信赖的软件许可授权方案,在它的基础上,我们做了进一步的开发,使其能够满足云授权场景的需要,并继承以往 ...

  9. safeNet sentinel 加密狗远程更改简单配置(时间和使用次数等)

    加密狗远程更改简单配置(时间和使用次数等) 一.用户端和开发端分别安装safeNet sentinel 软件包 二.第一次加密 开发端电脑分别插上developer key和sentinel key. ...

最新文章

  1. springboot+mongodb
  2. Spring MVC 中的 controller层的方法的返回值类型
  3. ruby imap抓取inbox中所有邮件的主题
  4. Envi和Arcgis软件冲突的解决方法
  5. vue中dom元素和组件的获取
  6. eeglab使用与错误解决
  7. tecplot教程发布
  8. Web开发技术架构图
  9. Linux dev是什么文件,linux dev文件详解
  10. 三分钟教你学Git(十二) 之 fast-forward
  11. boost库中thread多线程中的thread_specific_ptr
  12. PayPal完成对区块链公司的投资首秀
  13. Python学习笔记--解析式
  14. 偷偷看了同事的代码找到了优雅代码的秘密
  15. Redis-有序集合(Zset)数据结构
  16. 远程桌面--外网访问内网多台电脑
  17. 学计算机每天应该吃什么,上班族长时间看电脑,哪些食物对眼睛好?
  18. 生产安全事故应急预案
  19. 开篇 新手小白快速搭建微信商城
  20. C++11新式洗牌std::shuffle与老式洗牌函数std::random_shuffle的区别

热门文章

  1. 探讨打造会呼吸的数据中心
  2. TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片
  3. Py之BaseHTTPServer:Python库之BaseHTTPServer的简介、安装、使用方法之详细攻略
  4. ARIMA模型详细讲解
  5. 网络流 24 题汇总(LOJ 上只有 22 题???)
  6. Hadoop之HDFS(一)HDFS入门及基本Shell命令操作
  7. Linux下的inode记录
  8. 03构建之法阅读笔记之三
  9. Facebook POP 使用指南
  10. Discuz升级 Database Error : pre_common_syscache ADD PRIMARY KEY (cname)【解决办法】