io.open()

/*

API 函数接口...................................................................................2

2.1 查找 ET99 ....................................................................................................... 2

2.2 打开锁 ............................................................................................................ 2

2.3 关闭设备 ........................................................................................................ 3

2.4 读存储区 ......................................................................................................... 4

2.5 写存储区 ........................................................................................................ 5

2.6 产生产品标识................................................................................................. 6

2.7 产生随机数 .................................................................................................... 7

2.8 产生超级用户 PIN 码..................................................................................... 7

2.9 重置普通用户 PIN 码..................................................................................... 9

2.10 设置密钥 .................................................................................................... 10

2.11 纯软件 HMAC_MD5 接口................................................................................ 11

2.12 计算 HMAC_MD5............................................................................................. 12

2.13 验证 PIN 码................................................................................................. 13

2.14 修改用户 PIN 码......................................................................................... 14

2.15 重置安全状态............................................................................................. 15

2.16 获得硬件序列号......................................................................................... 15

2.17 配置设备 .................................................................................................... 16

2.18 打开 LED 灯.................................................................................................. 17

2.19 关闭 LED 灯.................................................................................................. 18

*/importstring.md5;varET_API = ..raw.loadDll($"\FT_ET99_API.dll")//高级API,超级管理员PINet_SetupToken= ET_API.api("et_SetupToken","int(int hHandle,BYTE bSoPINRetries,BYTE bUserPINRetries,BYTE bUserReadOnly,BYTE bBack)");

et_ResetPIN= ET_API.api("et_ResetPIN","int(int hHandle,string pucSoPIN)");

et_SetKey = ET_API.api("et_SetKey","intI(int hHandle,int Keyid, BYTE pucKeyBuf)");//设置密匙MD5_HMAC = ET_API.api("MD5_HMAC","int(string pucText, INT ulText_Len, string pucKey, INT ulKey_Len, string& string pucToenKey, string& pucDigest )");//软件MD5加密et_HMAC_MD5 = ET_API.api("et_HMAC_MD5","int(int hHandle,int keyID,int textLen,int string pucText,int byte &digest)");//硬件MD5加密//普通API,普通用户PINet_FindToken = ET_API.api("et_FindToken","int(string pid,int& count)")

et_OpenToken = ET_API.api("et_OpenToken","int(int& hHandle,string pid,int index)");

et_CloseToken = ET_API.api("et_CloseToken","int(int hHandle)");

et_GetSN = ET_API.api("et_GetSN","int(int hHandle,string& pucSN)");

et_Verify= ET_API.api("et_Verify","int(intHandle,int Flags,string pucPIN)");

et_TurnOnLED = ET_API.api("et_TurnOnLED","int(int hHandle)");

et_TurnOffLED = ET_API.api("et_TurnOffLED","int(int hHandle)");

et_Read = ET_API.api("et_Read","int(int hHandle,WORD offset,int Len,string& pucReadBuf)");

et_Write= ET_API.api("et_Write","int(int hHandle,WORD offset,int Len,string& pucWriteBuf)");/*

et_GenPID= ET_API.api("et_GenPID","ET_API(int hHandle,int SeedLen,int string pucSeed,int string pid)");

et_GenRandom= ET_API.api("et_GenRandom","ET_API(int hHandle,int string pucRandBuf)");

et_GenSOPIN= ET_API.api("et_GenSOPIN","ET_API(int hHandle,int SeedLen,int string pucSeed, int string pucNewSoPIN)");

et_ResetPIN= ET_API.api("et_ResetPIN","ET_API(int hHandle,int string pucSoPIN)");

et_ChangeUserPIN= ET_API.api("et_ChangeUserPIN","ET_API(int hHandle,int string pucOldPIN,int string pucNewPIN)");

et_ResetSecurityState= ET_API.api("et_ResetSecurityState","ET_API(int hHandle)");

*/ET_SUCCESS = 0x00//函数执行成功ET_ACCESS_DENY = 0x01//访问被拒绝,权限不够ET_COMMUNICATIONS_ERROR = 0x02//通讯错误,没有打开设备ET_INVALID_PARAMETER = 0x03//无效的参数,参数出错ET_NOT_SET_PID = 0x04//没有设置PIDET_UNIT_NOT_FOUND = 0x05//打开指定的设备失败ET_HARD_ERROR = 0x06//硬件错误ET_UNKNOWN = 0x07//一般性错误ET_PIN_ERR_MASK = 0x0F//验证PIN码掩码ET_PIN_ERR_MAX = 0xFF//验证PIN码最大剩余次数,如果验证错误还还回ET_PIN_ERR_MAX则表示PIN码永远不被锁死。//define pin FlagsET_VERIFY_USERPIN = 0

ET_VERIFY_SOPIN = 1//define read/write flagET_USER_WRITE_READ = 0

ET_USER_READ_ONLY  = 1

ET_VERIFY_USERPIN  = 0//验证普通用户ET_VERIFY_SOPIN = 1//验证超级用户varpid ="FFFFFFFFF"//设备pid,需要自设varuserPin ="FFFFFFFFFFFFFFFF"//默认USERPINvarsoPin ="FFFFFFFFFFFFFFFF"//默认超级用户PINvarseed ="123456"io.print("查找设备")varError,ETCount = et_FindToken(pid,0)if(Error !== ET_SUCCESS){error("查找ET99出错")

}

io.print(Error,ETCount )for(i=1;ETCount ;1){

io.print("设备打开句柄",i)varError,hHandle = et_OpenToken(0,pid,i)if(Error !== ET_SUCCESS){error("打开设备出错")

}

io.print(Error,hHandle)

io.print("获取序列号",i)//et_GetSN = ET_API.api("et_GetSN","int(int hHandle,byte& pucSN)");varError,ETsn = et_GetSN(hHandle,"########")if(Error !== ET_SUCCESS){error("获取SN出错")

}varETsn = string.format("%02X%02X%02X%02X%02X%02X%02X%02X", ETsn[1],ETsn[2],ETsn[3],ETsn[4],ETsn[5],ETsn[6],ETsn[7],ETsn[8])

io.print(ETsn)

io.print('验证用户PIN',userPin)varError = et_Verify(hHandle,ET_VERIFY_USERPIN,userPin)if(Error !== ET_SUCCESS){error("验证PIN出错")

}else{//  io.print("用户PIN是正确的!")}

io.print(Error)

io.print('')

io.print("MD5_HMAC获取Key")varconKey ="1122"//要设置的密匙varpucKey ="################################"varpucDig ="################"MD5_HMAC = ET_API.api("MD5_HMAC","int(string pucText, INT ulText_Len, string pucKey, INT ulKey_Len, string& string pucToenKey, string& pucDigest )");//软件MD5加密varError,key,dig = MD5_HMAC(null,0,conKey,#conKey,pucKey,pucDig)if(Error !== ET_SUCCESS){error("计算HMAC_MD5出错",Error)

}//io.print(key,dig)io.print(string.unpack(key))

io.print(string.format("%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", string.unpack(key)))

io.print(string.unpack(dig))

io.print(string.format("%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", string.unpack(dig)))

io.print('')

io.print("设置密匙")varET_STRUCT =class{

BYTE SN[32] ="#######";

BYTE KEY[32] = key

}varETS = ET_STRUCT()

ETS.KEY = key;

et_SetKey = ET_API.api("et_SetKey","intI(int hHandle,int Keyid,string pucKeyBuf)");//设置密匙varError = et_SetKey(hHandle,1,key)

io.print(Error)

io.print("计算MAC")

et_HMAC_MD5 = ET_API.api("et_HMAC_MD5","int(int hHandle,int keyID,int textLen,string pucText,string& digest)");//硬件MD5加密varval ="110011"varError,digest= et_HMAC_MD5(hHandle,1,#val,val,"################")

io.print(Error)

io.print(string.format("%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", string.unpack(digest)))/*

io.print("写入缓冲区")

for(iw=1;30;1){ //写入30个MD5密码

break;

var data = string.md5(iw++"fs88%^&*$%#(")

var offset = (iw-1)*32;

var Error,Cdata = et_Write(hHandle,offset,32,data)

if(Error !== ET_SUCCESS){

error("写入失败",iw)

}else{

io.print("写入成功",offset,offset+32,data)

}

}

io.print("读取缓冲区")

for(ir=1;30;1){

var offset = (ir-1)*32;

var buf = "################################"

var Error,Cdata = et_Read(hHandle,offset,32,buf)

if(Error !== ET_SUCCESS){

error("读取失败")

}else{

io.print("读取成功",offset,offset+32,Cdata)

}

}

*/io.print("关闭LED0.5秒钟")varError = et_TurnOffLED(hHandle)if(Error !== ET_SUCCESS){error("关闭LED出错")

}//win.delay(500)io.print("开启LED")varError = et_TurnOnLED(hHandle)if(Error !== ET_SUCCESS){error("开启LED出错")

}varError = et_CloseToken(hHandle)if(Error !== ET_SUCCESS){error("查找ET99错误")

}else{

io.print('\r\n关闭设备成功')

}

}execute("pause")

io.close()returnfalse;

et99php,坚石诚信ET99加密狗api aardio调用示范相关推荐

  1. et99 php,ET99加密狗模拟之读取数据

    经过分析官方提供的et99 API ,写出下面读取数据的程序,delphi  代码,成品不贴 library FT_ET99_API; { Important note about DLL memor ...

  2. 加密锁(加密狗)使用技巧

    本文基于坚石诚信ET99软件加密锁来介绍软件加密锁的一些编程应用技巧,以及软件开发者如何编写安全可靠的代码,如何解决各种各样的加密狗破解,编写加密程序时产生的一些问题. 一.加密狗加密的基本原理 开发 ...

  3. USB加密锁(加密狗)复制和破解Key解密

    加密狗不是绝对不能复制,专门从事加密狗破解的人,肯不能用USB复制,因为USB和加密狗的构造完全不同,你知道哪些usb加密锁(加密狗)复制和破解的方法?下面由深圳凯基迪科技带大家一起分享: 目前加密锁 ...

  4. 十年破解经验教你如何破解加密狗

    硬件加密锁,俗程"加密狗",对于加密狗的破解大致可以分为三种方法,一种是通过硬件克隆或者复制,一种是通过SoftICE等Debug工具调试跟踪解密,一种是通过编写拦截程序修改软件和 ...

  5. 关于调用深思API读写加密狗

    工作中需要完成一些加密狗的简单功能,现稍作记录.具体详见深思API帮助工具及帮助文档. 1.加密狗登录与登出 1)登录 2)登出 2.加密狗信息读取与写入 1)读取 2)写入 3.获取设备信息 1.加 ...

  6. 使用USB Key(加密狗)实现身份认证

    首先你需要去买一个加密狗设备,加密狗是外形酷似U盘的一种硬件设备! 这里我使用的坚石诚信公司的ET99产品 公司项目需要实现一个功能,就是客户使用加密狗登录, 客户不想输入任何密码之类的东西,只需要插 ...

  7. 加密狗型号区分的几种方法

    1:有驱动的情况下,安装好驱动,一般直接就可以看到,没有安装驱动的情况下,插入加密锁,一般会有气泡提示,这里以深思4举例说明下,插入加密锁,会出来如下的气泡提示. 有驱动,安装驱动了的,这里以safe ...

  8. 坚石诚信ET系列加密锁应用保护技巧

    众所周知,利用加密锁保护软件不被破解及添加相应的授权,是众多软件开发商不二的选择,有一些软件开发商反应用加密锁保护的软件被复制.破解等等.那么加密锁被复制了真的是这样吗?软件被破解了到底是为什么?加密 ...

  9. 坚石诚信ET z201 时间型开发遇到的问题。Microsoft VBScript 运行时错误 (0x800A01AD) ActiveX 部件不能创建对象

    在开发一个ASP网站程序,后台有一块是微信提现到用户零钱,客户想像银行那样使用加密狗或秘钥来进行操作.后来在我网上查询了坚石诚信ET z201 时间型加密狗.并购买进行对接. 根据官方给的DEMO需要 ...

最新文章

  1. HTML的标签描述20
  2. Leetcode 461. Hamming Distance JAVA语言
  3. android studil打断点_Android Studio你不知道的调试技巧
  4. Android 设置界面的圆角选项
  5. nginx/tengine设置响应头中的cookie属性
  6. spyder pyecharts不显示_165Hz+1ms仅需千元左右 优派VX2771HDPRO显示器
  7. AUTOSAR从入门到精通100讲(三十八)-通信网络中的⽐特和帧同步技术
  8. 508. 出现次数最多的子树元素和
  9. php公钥模数,php – 如何从公共指数和RSA模数生成DER / PEM证书?
  10. 划重点!DWS开发的五大要点
  11. 电信校园PPOE软件拨号破解之开启移动热点
  12. samba 指定的网络名不再可用
  13. java连接redis设置密码_jedis设置密码连接Redis
  14. http://fonts.googleapis.com/css?打开很慢解决方案
  15. 【Android】使用后端云Bmob实现登录、注册
  16. [树状数组+离散化] NamomoCamp Daily 6
  17. 计算机界面打不了五笔,64位win7五笔输入法无法使用怎么办_win7电脑五笔输入法无法使用如何解决-win7之家...
  18. 《刷新》读书笔记2-看萨提亚治下的微软文化变革
  19. MIMIC-III数据库申请流程
  20. 分享一个免费的计算机书籍资料网站(含有编程语言,算法,人工智能,游戏开发等书籍资料)

热门文章

  1. CAD文件解析后按照特定规则将图形切割
  2. CodeSoft模板问题--字体扭曲条码无法扫描
  3. VHDL实现数字频率计的设计
  4. 安装冰点还原精灵的注意事项
  5. 服务器主板显示00无法开机,主板开机00点不亮
  6. asp.net中GridView排序的手动实现
  7. 内存模块与计算机兼容,cpu和内存条不兼容怎么办cpu和内存条不兼容的解决方法...
  8. java jdom 更新xml_用JDOM完成Java更新XML文件
  9. Could not get JDBC Connection排查
  10. Pjsip加入G729编码的方法