加密锁/加密狗 ET99(包含网络锁功能)

      加密锁(加密狗)ET99(包含网络锁功能)是一款高速HID无驱并且可以同时支持软件保护和身份认证应用的多功能USB设备。支持HAMC-MD5,3DES加解密,7个模块许可证。其提供完善易用的API接口调用和高强度外壳(数据保护中心)两种加密方式。同时,ET99是第一款价格不到十元,而性能等同于四五十元的加密锁产品。ET99的发布在业界掀起价格风暴,为广大用户最大限度的节省了购买成本。

优惠的价格帮您最大限度节省购买成本 
稳定的质量解决后顾之忧
全系统兼容的HID无驱USB设备
高速USB通讯模式
单个硬件多种功能
完善易用的API接口保护
超强外壳保护工具(数据保护中心)。不仅保护PE,.Net程序,还可以保护PDF,Flash和视频文件
硬件内部支持HMAC-MD5运算
3DES加解密(192位密钥)
7个模块许可证
全球唯一64位硬件序列号
1000字节安全存储空间,用户级别读写控制
8个32字节算法密钥
支持网络锁功能
Windows、Linux、Mac跨平台支持(具体支持版本需咨询)

全球唯一ID:64位(bit)
硬件算法:硬件内完成HMAC-MD5运算
PID(Product IDentification):产品ID,用户自定义,出厂默认为8个F,即“FFFFFFFF”,不区分大小写。
SO PIN(Super Officer Personal Identification Number):管理员PIN码,用户自定义,出厂默认为16个F,即“FFFFFFFFFFFFFFFF”,不区分大小写。
User PIN(User Personal Identification Number):用户PIN码,用户自定义,出厂默认为16个F,即“FFFFFFFFFFFFFFFF”,不区分大小写。
PIN重试次数限制:SO PIN和User PIN都有重试次数限制。最大重试次数可以设置为1~15次,当设置为0时,则表明SO PIN和User PIN将永远不被锁死。
安全存储区:1000字节,只有通过User PIN验证后才可以读写。
安全密钥存储区:8个32字节的HMAC-MD5密钥存储区,硬件保证该存储区中的密钥只能在锁内参与HMAC-MD5运算,无法被读取或导出。
外壳加密:高强度外壳保护

PID(Product IDentification):
      产品ID,用户自定义,出厂默认为8个F,即“FFFFFFFF”,不区分大小写。调用et_FindToken 和et_OpenToken时输入的参数,开发商需要通过种子产生自己的PID,以区分不同开发商之间的ET99。种子机制的优势,种子是由开发商自己设定的一串数据,其他人即使得到PID,但不知道产生该PID的种子,因此无法制作相同PID的ET99。注意:产生新的PID后,请保留好新产生的PID和种子。
SO PIN(Super Officer Personal Identification Number):
      管理员PIN码,用户自定义,出厂默认为16个F,即“FFFFFFFFFFFFFFFF”,不区分大小写。SO PIN在产生PID和解锁User PIN时用到。SO PIN同样使用种子机制产生。注意:请保留好新产生的SO PIN和种子。
User PIN(User Personal Identification Number):
      用户PIN码,用户自定义,出厂默认为16个F,即“FFFFFFFFFFFFFFFF”,不区分大小写。User PIN在读写数据,使用HMAC-MD5密钥进行计算等操作中用到。User PIN的修改需要先验证旧的PIN码,再设置新的PIN码。注意:User PIN码长度为16个十六进制字符,即16个0~9和A~F的字符组合。
PIN重试次数限制:
      SO PIN和User PIN都有重试次数限制。最大重试次数可以设置为1~15次,当设置为0时,则表明SO PIN和User PIN将永远不被锁死。如果开发商将SO PIN和User PIN的最大重试次数设为1~15时,那么当使用者连续输入错误的次数达到了最大限制次数,则多功能锁锁死,这时即使输入正确的SO PIN和User PIN,也不能进行相应的操作。如果在最大限制次数内只要有一次输入正确,最大重试次数又恢复为开发商所设置的最大值。出厂默认为SO PIN不会锁死,User PIN3次锁死。另外,可以通过et_Verify验证PIN码接口的错误返回值得到重试次数,调用该接口成功时返回0,错误时返回0xF*,*表明剩余的重试次数,如:0xF2表明还剩2次重试机会,0xF0表明PIN码已被锁死,如果每次都返回0xFF,表明没有重试次数限制。

SDK(Software Development Kit)是为开发人员提供的开发包,您购买ET系列产品后,需要到“资源下载”页面下载开发所需要的资源,SDK内容包括: 
软件保护:
      高强度外壳加密
      完善易用的API接口
工具:
      高强度外壳加密工具
      批量设置PID,SO PIN,User PIN工具 实现全部功能调用的编辑器工具
支持编程语言:
      Visual C++Visual Basic
      Visual FoxPro
      Delphi
      C++ Bulider
      Power Builder
      Java
      VS.Net
      易语言
      更多……(包括32位和64位版本)
支持操作系统平台:
      WINDOWS 98SE/Me/2000/XP/Server 2003/Vista/2008(包括32位和64位)及各补丁版本 Linux各版本(包括32位和64位)

核心芯片:8位CPU芯片 
硬件序列号:全球唯一64位(bit)硬件序列号
安全存储空间:1000字节
硬件内置算法:HMAC-MD5
读次数:没有限制
写次数:至少10万次
USB通讯:全系统兼容的HID无驱USB设备,USB1.1标准设备,兼容USB2.0接口

默认外壳:ABS工程塑料,表面抛光处理 
默认颜色:瓷白色
外壳尺寸:57×19×9 (毫米)
重量:10克
防水:防水浸泡10分钟
接口类型:USB A类接头
工作温度:0℃~50℃
存放温度:-10℃~60℃
工作湿度:20%~80%
工作功率:250mW(最大)
工作电压:5V
工作电流:50mA(最大)
数据保存年限:至少10年
USB接口号码:USB接头上所刻的11位号码的前5位为生产日期,后6位为随机数。如:90831E15576,表明2009年8月31日生产。该序列号只作为保修参考用,没有API接口可以得到,也不保证是唯一的。

保修时间:正常使用导致硬件损坏,一年内免费保修,终身维护。超过一年,收取成本费。 
保修运费:维修锁的往返运费由用户承担。为了节省运费,建议在再次购买前,将需要维修的锁先寄回,这样在发送新锁时将维修锁一起寄回,节省一次运费。

资源下载

ET99软件保护资源全部下载

用户手册

API接口手册

FULL组件接口手册

MOD组件接口手册

ET99批量设置工具

ET99编辑器工具

ET99设置PID工具

ET99设置SOPIN工具

ET99修改UserPIN工具

设置ET99的PIN码重试次数和只读属性工具

ET99身份认证设置工具

ET99/ET299管理工具。通过该工具可以批量设置PID、SOPIN、USERPIN、存储区数据、密钥区密钥等。

ET99批量设置工具源代码

ET99编辑器工具源代码

ET99设置PID工具源代码

ET99设置SOPIN工具源代码

ET99修改UserPIN工具源代码

ET99设置工具源代码

ET99身份认证设置工具源代码

ET99 API头文件

ET99 API DLL库

ET99 静态LIB库

ET99 BCB LIB库

ET99 Delphi OBJ库

ET99Java库

ET99 MOD组件库

ET99 FULL组件库

ET99 x64位库

ET99 x64位库

ET99 ASP示例

ET99 C#示例

ET99 JSP示例

ET99 PHP示例

ET99 WEB页面检测插拔示例

ET99 页面安装示例

ET99 exe方式安装文件

ET99 网页中设置MD5HMAC密钥、登录时在硬件中进行MD5HMAC计算和读写数据的JavaScript示例

安装ET99加密锁插拔监控程序(ET99_monitor.exe)并注册为开机启动;插入ET99弹出指定网页(weburl.ini中指定),拔出ET99关闭指定网页。拷贝FT_ET99_API.dll、ET99_FULL.dll、ET99_MOD.dll到system32目录并注册两个控件ET99_FULL.dll、ET99_MOD.dll。

常见问题

      在使用统一外壳工具加密成功之后,还要进行下面两步操作:
      1.打开vs的命令行(如下图所示)

      2.在命令行中输入sn命令(如下图所示): sn -Ra [加密后的文件路径] [snk文件路径]
      注意:命令行中的snk文件为客户程序中的snk文件(BOLKeyPair.snk),非加密工具生成的snk文件。这一步操作是为了用正确的强命名文件,重新给加密后的文件签名。

      对由C#程序加密后,包括exe或者dll。当程序不能运行时,需要将加密后文件的文件名改成原文件名。如原文件为abc.exe,加密后为abc_packed.exe,这时需将abc_packed.exe改名为abc.exe运行。

      先使用lsusb查看是否有ET99/ET199。然后增加.rules文件,文件名可以随意,完成后重启计算机。.rules文件一般位于/etc/udev/rules.d目录下.rules文件内容为
      ET99:
      BUS==”usb”, SYSFS{idVendor}==”096e”, SYSFS{idProduct}==”0303″, MODE=”0666″


      ET199:
      BUS==”usb”, SYSFS{idVendor}==”096e”, SYSFS{idProduct}==”0304″, MODE=”0666″

      C#中两种方式调用:
      (1)调用FT_ET99_API.dll,这个是标准的dll库,需要使用DllImport声明每个函数,参数是char*类型,可以参看ET99 C#示例中的dll目录下的示例。
      (2)另外一种是调用ET99_FULL.dll这个是Activex com控件,参数是string类型,使用前需要先regsvr32进行注册,ET99_FULL.dll是建立在FT_ET99_API.dll基础上的,因此注册时需要将ET99_FULL.dll和FT_ET99_API.dll一起拷贝到system32目录下。

      x64系统上是可以运行32位的程序的,x64系统中的windows\syswow64目录下都是32位的程序,因此可以将API库,如ET99_Full.dll拷贝到这个目录,使用这个目录下的regsvr32进行注册。另外,这时上层应用也要是32位的应用,如c#在编译时要选择x86(只调用32位的库),而不是any cpu(any cpu会根据系统的不同而调用不同的库)。如果是IE,要运行program(x86)下面的IE目录下的IE(这个是32位的),而不是program下的IE(这个是64位的)。

      如果应用是64位的,那么就需要将64位的API库放到x64系统上的windows\system32目录(这个目录下都是64位的库)下。64位的应用只能调64位的库。

      PID(8个十六进制字符)的作用是区分不同开发商系统中的锁。PID出厂默认为8个F,即“FFFFFFFF”(不区分大小写),PID必须修改后,锁的功能才能使用。例如:客户A公司购买锁后PID设置为“11111111”,客户B公司购买锁后PID设置为“22222222”,客户A公司的系统中是查找PID为“11111111”的锁,那么B公司或者其他公司的锁在A公司的系统中是无法使用的。
      PID是在查找锁和打开锁时用到的,即必须输入正确的锁的PID,打开和查找才能成功。如锁的PID为:“A1B2C3D4”,这时调用et_FindToken和et_OpenToken函数时,pid参数就要给“A1B2C3D4”,函数执行才能成功。
      另外,PID非常安全,它是由一个长度不超过51个字节的字符串作为种子,多功能锁会根据这个种子生成PID(8个十六进制字符)。这个生成算法是在多功能锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的PID,别的人即使知道PID,也能够调用这个计算过程,但因为不知道种子是什么,是无法生成您的PID的,从而无法生产出一个与您手中一致的加密锁硬件。

      特别注意,请保留好PID和产生PID的种子,特别是种子。由于种子相同,产生的PID就相同,所以在忘记了PID的情况下,可以使用已知PID的锁和相同的种子产生忘记的PID。如果种子也忘记了,那么只能返厂重新生产。

      SOPIN(16个十六进制字符)为管理员密码,这个密码只能由专门的人员掌握,而不应透露给其他人,也不要出现在应用系统中。掌握管理员密码的管理员可以设置锁的PID,和解锁UserPIN,即在做这两个操作前,需先验证SOPIN,验证通过后才能进行设置。
       SOPIN可以设置重试次数限制,但特别注意,当SOPIN锁死后,只能返厂重新生产。为了减少不必要的麻烦,SOPIN出厂默认为没有锁死限制。
       重试次数可以设置为0~15次,设为0时表示没有限制。当设置有重试次数限制时,如果连续输入错误的次数超过了最大重试次数,则多功能锁锁死,这时输入正确的密码也不能进行相应的操作;在最大重试次数内只要有一次输入正确,则重试次数又恢复为最大重试次数。这种机制类似于银行卡,防止破坏者反复重试破解密码。
      SOPIN的生成与PID的生成都是通过种子机制来完成的。即是由一个长度不超过51个字节的字符串作为种子,多功能锁会根据这个种子生成SOPIN(16个十六进制字符)。这个生成算法是在多功能锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的SOPIN。
      可以通过批量设置工具(ET99Setting.exe)或者et_SetupToken接口设置SOPIN重试次数。使用ET99Setting.exe设置时,在“请选择设置项”中选上“读写属性”前的复选框, 并在“重试次数”后填入相应的次数(0-15)。

UserPIN(16个十六进制字符)为用户密码,在使用锁的读写功能,设置HMAC_MD5密钥和进行HMAC_MD5运算前,必须先验证这个密码,验证通过后才能正确执行。注意UserPIN必须是0-9 A-F(不区分大小写)的十六进制字符,长度必须是16个。 UserPIN可以设置重试次数限制,重试次数可以设置为0~15次,设为0时表示没有限制。UserPIN出厂默认设置3次锁死。锁死后需先验证SOPIN,然后通过解锁函数进行解锁,也可以参看常见问题中“解锁User PIN”。解锁后UserPIN恢复为默认的16个F,即“FFFFFFFFFFFFFFFF”(不区分大小写)。 可以通过批量设置工具(ET99Setting.exe)或者et_SetupToken接口设置UserPIN重试次数。使用ET99Setting.exe设置时,在“请选择设置项”中选上“读写属性”前的复选框,并在“重试次数”后填入相应的次数(0-15)。

      锁的存储区可以设置成只读。当设置成只读时,用户密码(UserPIN)验证后,只能读取数据而不能写入数据;开发商密码(SOPIN)验证后,可读可写。
      可以通过批量设置工具(ET99Setting.exe)或者et_SetupToken接口设置存储区只读属性。使用ET99Setting.exe设置时,在“请选择设置项”中选上“读写属性”前的复选框,并选上“只读标志”的复选框。

      ET99/ET299必须先要修改PID才能使用。如果使用默认的8个F,包括读写等很多功能都是不能成功的,会返回0x04(没有设置PID的错误)。

      最终用户在使用ET99进行网上身份认证或者使用加密后的应用软件时,特别是在进行身份认证时需要输入ET99的User PIN。由于ET99 的User PIN为16个字符,用户输入不方便,这时开发商应先对User PIN进行处理。可以将用户自己设定的USER PIN(如:superkey)通过调用我们接口库提供的MD5_HMAC接口或者自行设计相应的转换算法,将最终用户的输入转换成16个 (0~9,A~F)的字符。在使用MD5_HMAC接口时,其结果为16个字节,这时可以截取其中的8个字节,每个字节以2个字符(0~9,A~F)表示,这样再作为ET99的User PIN,以供验证调用的接口使用。

      可以参考这样的方案。保留系统中原有的用户名和密码,用户设置的这个任意字符的密码通过变换(可以自己写算法)为长度16个的十六进制字符,每次用户密码更改后,还要通过ET99的修改UserPIN的接口将硬件的密码同时修改。这样就解决了用户输入UserPIN码不方便的问题。

      只有将硬件退回给我们重新烧制固件程序,才可以恢复为全是F,我们也不知道全F的种子。但因为PID必须被修改后才能使用,恢复为全F是没有必要的。

      您可以使用当前的PID去产生一个新的PID。如PID已经设置为FFC5EB78,那么就可以使用FFC5EB78打开硬件,验证SOPIN,然后使用新的种子产生一个新的PID。SOPIN是一样的,先验证当前的SOPIN,在使用新的SOPIN种子产生新的SOPIN。

      另外,数据区中的数据出厂为0x00,如果要恢复,直接使用写接口写入0x00就可以。建议都写成0x00,因为0x00是字符串结尾的标志,这样在读取数据时比较方便。

      当您使用外壳加密工具或者其他验证User PIN的操作失败,并返回错误0xF0时,表明UserPIN已经锁死了。这时需要使用SO PIN进行解锁操作,过程如下。(注意:解锁时需要输入您手中ET99/ET299当前的PID和SO PIN,截图中为示范的PID和SO PIN):

      (1)运行ET99Edit.exe/ET299Edit.exe。输入“F”,输入PID,查找ET99/ET299,如下图:

      (2)输入“T”,输入PID,打开ET99/ET299,如下图:

      (3)输入“U”,进入SetupMenu,然后输入“R”,输入SO PIN,完成User PIN的解锁。User PIN解锁后,恢复为出厂设置的16个“F”,如下图:

      按“X”退出工具。

      可以通过et_Verify接口返回值来得到User PIN和SO PIN的重试次数。当et_Verify接口返回不为0时表示验证失败,这时返回值为0xF*,*代表剩余的重试次数。如:返回0xF2,表明还有2次重试机会。

      您可以使用ET99Setting.exe工具对ET99进行批量设置。

      需要注意:

      (1)运行时,需要将FT_ET99_API.dll拷贝到工具的同一目录下。

      (2)前三行:硬件PID、SO PIN码和UserPIN码中填写当前ET99的相应数据。启动时默认填写的是ET99出厂时的8个F或者16个F。

      (3)新的User PIN码填写您更改后的User PIN。特别注意:长度为16个字符,必须是0~9,A~F的十六进制字符,不区分大小写。

      (4)PID种子和SO PIN码种子填写您设定用于产生的种子,任何字符(包括中文)都是可以的。

      (5)在“请选择设置项”中选择需要设置的项目。最后一项“读写属性”包括设置“只读标志”和SO PIN/User PIN的重试次数。注意:重试次数只能为0~15次,设置为0表示没有重试次数限制。

      设置后,请保存好PID、SO PIN和User PIN,您也可以在工具目录下生成的History.ini文件中查看。

      ET99多功能锁提供1000字节的数据存储区域,必须经过USER PIN权限验证或者SO PIN权限验证后才可以进行读写操作。开发商也可以将该空间设置为只读,这时经过USER PIN权限验证后只可读取,不能写入;SO PIN验证后可读,可写。在使用读写接口进行读写操作时每次只能60个字节,多于60字节请分块操作,读写API接口函数中第二个参数offset不断变换写入的起始位置,第三个数Len为每个块要写的长度,不能大于60。

      PID(Product Identification)的初始值为8个字符“F”,即:“FFFFFFFF”。

      SO PIN (Super Officer Personal Identification Number)的初始值为16个字符“F”,即:“FFFFFFFFFFFFFFFF”,SO PIN没有锁死次数限制

      USER PIN (User Personal Identification Number)的初始值为16个字符“F”,即:“FFFFFFFFFFFFFFFF”,3次锁死。

      另外,普通用户状态可以对数据存储区进行读写,密钥存储区全为0xFF,数据存储区全为0xFF。

      1.可以先检查一下是不是硬件损坏(请参看“检查USB设备与计算机是否正常连接”问题说明)。步骤如下:

  • 在桌面“我的电脑”图标点击右键,选择“属性”。
  • 选择“硬件”标签,并按“设备管理器”按钮。
  • 在出现的设备窗口中找到“人体学输入设备”,点开前面的加号。双击HID-compliant device。
  • 点开详细信息,在下面的显示框中看是否有:VID_096E PID_0303。

      2.您使用编辑器工具ET99Edit.exe/ET299Edit.exe试一下,使用看ET99多功能锁用户手册.pdf第4.5节,按下面的过程:

  • 按F,输入PID,看能不能找到ET99/ET299。
  • 按T,输入PID,看能不能打开ET99/ET299。
  • 按S,输入SOPIN,看能不能通过。
  • 如果User PIN锁死了,可以通过解锁将User PIN恢复为出厂默认设置16个F。按4.5.8节操作,按U后再按R,输入正确的SO PIN。

      如果以上都可以的话,使用就没有问题了。有2种情况会造成使用不了:

  • 硬件损坏,这时即使输入正确的PID,也找不到ET99/ET299。这时可以在多台机器上测试一下,以便排除确认问题。
  • PID不正确,如果还记得产生PID的种子,那么可以使用另外的ET99/ET299用该种子获得PID。

      加密锁的SO PIN和User PIN非常安全,重试次数可以设置为0~15次,设为0时表示没有限制。SO PIN和USER PIN可以设置成没有锁死限制和锁死二种状态,开发商可以根据自己的情况灵活选择。出厂默认为SO PIN没有锁死限制,User PIN 3次锁死。

      当设置为锁死状态后,如果连续输入错误的次数超过了最大重试次数,则多功能锁锁死,这时输入正确的密码也不能进行相应的操作;在最大重试次数内只要有一次输入正确,则重试次数又恢复为最大重试次数。这种机制类似于银行卡,防止破坏者反复重试破解密码。

      当User PIN锁死时,可以使用SO PIN重新设置User PIN为16个字符“F”。但当SO PIN锁死时,只能退还给我们处理。

      PID非常安全。它是由一个长度不超过51个字节的字符串作为种子,多功能锁会根据这个种子生成PID。这个生成算法是在多功能锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的PID,别的人即使知道PID,也能够调用这个计算过程,但因为不知道种子是什么,是无法生成您的PID的,从而无法生产出一个与您手中一致的加密锁硬件。

      在桌面“我的电脑”图标点击右键,选择“属性”

      选择“硬件”标签,并按“设备管理器”按钮

      在出现的设备窗口中找到“人体学输入设备”,点开前面的加号。双击HID-compliant device

      点开详细信息,在下面的显示框中看是否有:VID_096E PID_0303

      如果这个步骤正常,表明计算机与USB设备连接正常。

      PID,SOPIN和UserPIN一旦被更改后,出于安全因素考虑,是不能恢复为出厂设置的。您可以将锁退还给我们,我们重新烧制一下。

      这是由于没有设置PID,或者输入的PID和UserPIN不正确造成的。

      目前无驱的技术主要分为:HID、SCSI和CCID。

      SCSI主要用于U盘等设备,主要应用于数据量大的传输中,但只有在Windows2000以上操作系统中不需要安装驱动,同时也受到是否是系统管理员访问的影响。

      CCID设备同样也只能应用于Windows2000+SP4以上的操作系统中。

      相比较而言,高速HID无驱设备兼容性强,工作稳定,能够适合从Windows98至Windows7的所有操作系统,即插即用。特别适合兼容性和稳定性要求高,且数据量不大的应用中。同时,ET系列采用高速HID通讯,满足各种高速需求。HID设备也能够在Linux、Unix、MAC等系统中稳定工作。

      USB设备为标准的HID无驱设备,即插即用。遇到机器不认时,一般有3种情况。

      (1)有干扰或是接触不良,请您重新插入或者更换计算机上的其它USB端口。

      (2)在Win2000以上的操作系统使用系统自带的驱动,不需要独立安装驱动。但在不完善的操作系统安装过程中会去掉系统驱动,用户需要在同版本的操作系统中将WINDOWS\Driver Cache\i386\driver.cab文件拷贝到不完善的操作系统的相应目录中。

      (3)请检查是否关闭了BIOS中的USB支持选项。

       另外,在Win98上安装时需要Windows98的系统安装盘上的base6.cab包。Win2000以上操作系统不需要系统安装盘,即插即用。如果在计算机上不能认到USB设备,请使用USB鼠标或者USB键盘来检测计算机的系统是否支持标准HID设备。