⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 head.pas

📁 rockey2是一种应用比较广泛且使用简单的加密锁。本程序适用于极域电子教室加密锁数据读取并记录成模拟狗所需的形式。稍加修改就能模拟rockey2加密锁了。本程序仅供研究适用
💻 PAS
字号:

unit head;
interface
type

// 1. 查找计算机上连接的 Rockey2 加密锁设备
 TRY2_Find=function():integer;stdcall;
// 返回:
// 如果返回值小于 0,表示返回的是一个错误编码,具体含义请看下面的错误编码。
// 如果返回值为 0,表示没有任何 Rockey2 设备存在。
// 如果返回值大于 0,返回的是找到的 Rockey2 加密锁的个数。

// ====================================================================

// 2. 打开指定的加密锁
TRY2_Open=function(mode:integer; uid :cardinal; var hid :cardinal):integer;stdcall;
// 输入:
// mode 是打开加密锁的方式
// mode = 0 表示的是打开第1个找到的 Rockey2,不理会 UID 和 HID
// mode > 0 表示的是按 UID 方式打开,这时候 mode 的值表示的是要打开锁的序号
//          譬如: uid=12345678, mode=2 表示的是希望打开 uid 等于12345678 的
//          第2把加密锁。
// mode = -1 表示的是按 HID 方式打开,要求 *hid 不能为 0
// uid(UserID)
// 当按 UID 方式打开的时候,在这给出要打开加密锁的 UID,此 UID 就是用户调用
// RY2_GenUID 功能获得的用户 ID。
// hid
// 这个是加密锁的硬件 ID,这是1个输入/输出值,如果按 HID 方式打开加密锁的
// 时候,表示希望打开硬件ID = *hid 的加密锁。
// 不论以哪种方式打开加密锁,在成功打开加密锁以后会在这返回加密锁的硬件 ID
// 返回值:
// 大于等于0		表示成功,返回的就是打开的加密锁的句柄
// 小于0			返回的是一个错误编码,具体含义请看下面的错误编码部分。

// ====================================================================

// 3. 关闭指定的加密锁
  TRY2_Close=procedure(handle:integer); stdcall;
// 输入:
// handle 设备的句柄,跟 RY2_Open 命令返回的 handle 一致。
// 返回:
// 返回的是一个错误编码,具体含义请看下面的错误编码部分。

// ====================================================================

// 4. 生成用户 ID
 TRY2_GenUID=function(handle:integer; var uid : cardinal; seed: pchar; isProtect:integer):integer;stdcall;
// 输入:
// handle 设备的句柄,跟 RY2_Open 命令返回的 handle 一致。
// uid 输出参数,生成的用户 ID 从此参数返回
// seed 用户给出的用于生成用户 ID 的种子,这是一个最大长度可以是 64 个字节的字符串
// isProtect 用来指定此 Rockey2 是否可写,0 是可写,1 是不可写
// 返回:
// 返回的是一个错误编码,具体含义请看下面的错误编码部分。

// ====================================================================

// 5. 读取加密锁内容
TRY2_Read=function(handle:integer;block_index : integer;  buffer512:pchar):integer;stdcall;
// 输入:
// handle 设备的句柄,跟 RY2_Open 命令返回的 handle 一致。
// block_index 块索引,指明要读取的是哪1个块,取值为(0-4)
// buffer512 读出块的缓冲区,因为每个块的长度固定为 512 个字节,所以这个
// buffer 的大小至少是 512 个字节
// 返回:
// 返回的是一个错误编码,具体含义请看下面的错误编码部分。

// ====================================================================

// 6. 写入加密锁内容
 TRY2_Write=function(handle:integer;block_index : integer;  buffer512:pchar):integer;stdcall;
// 输入:
// handle 设备的句柄,跟 RY2_Open 命令返回的 handle 一致。
// block_index 块索引,指明要写入的是哪1个块,取值为(0-4)
// buffer512 写入块的缓冲区,因为每个块的长度固定为 512 个字节,所以这个
// buffer 的大小至少是 512 个字节
// 返回:
// 返回的是一个错误编码,具体含义请看下面的错误编码部分。


var

RY2_Find : TRY2_Find;
RY2_Open : TRY2_Open;
RY2_Close : TRY2_Close;
RY2_GenUID : TRY2_GenUID;
RY2_Read  : TRY2_Read ;
RY2_Write : TRY2_Write;


const
//
AUTO_MODE :integer=0;
HID_MODE :integer=-1;
ROCKEY2_DISABLE_WRITE_PROTECT:integer =0;
ROCKEY2_ENABLE_WRITE_PROTECT:integer  =1;

// 错误编码 ===========================================================
// 成功,没有错误
 RY2ERR_SUCCESS								:integer=0;

// 没有找到给定要求的设备(参数错误)
 RY2ERR_NO_SUCH_DEVICE							:integer = $A0100001 ;

// 在调用此功能前需要先调用 RY2_Open 打开设备(操作错误)
 RY2ERR_NOT_OPENED_DEVICE						:integer = $A0100002;

// 给出的 UID 错误(参数错误)
 RY2ERR_WRONG_UID								:integer = $A0100003 ;

// 读写操作给出的块索引错误(参数错误)
 RY2ERR_WRONG_INDEX								:integer = $A0100004  ;

// 调用 GenUID 功能的时候,给出的 seed 字符串长度超过了 64 个字节(参数错误)
 RY2ERR_TOO_LONG_SEED							:integer = $A0100005    ;

// 试图改写已经写保护的硬件(操作错误)
 RY2ERR_WRITE_PROTECT							:integer = $A0100006   ;

// 打开设备错(Windows 错误)
 RY2ERR_OPEN_DEVICE								:integer = $A0100007  ;

// 读记录错(Windows 错误)
 RY2ERR_READ_REPORT								:integer = $A0100008  ;

// 写记录错(Windows 错误)
 RY2ERR_WRITE_REPORT								:integer = $A0100009  ;

// 内部错误(Windows 错误)
 RY2ERR_SETUP_DI_GET_DEVICE_INTERFACE_DETAIL		:integer = $A010000A                 ;

// 内部错误(Windows 错误)
 RY2ERR_GET_ATTRIBUTES							:integer = $A010000B   ;

// 内部错误(Windows 错误)
 RY2ERR_GET_PREPARSED_DATA						:integer = $A010000C  ;

// 内部错误(Windows 错误)
 RY2ERR_GETCAPS									:integer = $A010000D  ;

// 内部错误(Windows 错误)
 RY2ERR_FREE_PREPARSED_DATA						:integer = $A010000E       ;

// 内部错误(Windows 错误)
 RY2ERR_FLUSH_QUEUE								:integer = $A010000F ;

// 内部错误(Windows 错误)
 RY2ERR_SETUP_DI_CLASS_DEVS						:integer = $A0100010   ;

// 内部错误(Windows 错误)
 RY2ERR_GET_SERIAL								:integer = $A0100011 ;

// 内部错误
 RY2ERR_TOO_LONG_DEVICE_DETAIL					:integer = $A0100012        ;

// 错误的报告长度(硬件错误)
 RY2ERR_WRONG_REPORT_LENGTH						:integer = $A0100013  ;

// 操作验证错误(硬件错误)
 RY2ERR_VERIFY									:integer = $A0100014 ;

// 未知错误(硬件错误)
 RY2ERR_UNKNOWN_ERROR							:integer = $A010FFFF   ;
implementation

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -