自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 某起名软件逆向分析

9-4-2、逐字节对9-4-1的字符串进行转换,如果当前字符是数字,则与8进行异或运算。9-4-4、9-4-3的计算结果第11、12、7、8、5、6、3、4位拼接为计算结果。9-4-1、将MD5的4、5、13、14、8、9、11、12、1、2、6、7拼接。3、第5位如果是6、7、B、b则第5位为1、如果是8、9、C、c时为2.5、第7位如果是4、5、A、a则第7位为0、如果是6、7、B、b时为1。4、第6位如果为A、B、C、D、E、F、G、H、J、K分别对应0-9。这个程序是.net的,无壳,32位。

2025-04-15 15:04:08 1827

原创 SI ObjectBrowser 注册破解

6、license第13-16字节按1、2、3、4字节顺序从KeyTable2中查表并分别减去license第9-12字节按2、3、4、1的顺序从KeyTable中查表得到的位置做差,如果差<1则加上36,得到的位置从KeyTable中获取字符。9、license第25-28字节按1、2、3、4字节顺序从KeyTable2中查表并分别减去license第5-8字节按2、3、4、1的顺序从KeyTable中查表得到的位置做差,如果差<1则加上36,得到的位置从KeyTable中获取字符。

2025-04-09 17:22:37 778

原创 动静态库快速编译为鸿蒙版本

熟悉IDE的会说,去build目录里复制出来就行了。没错,可以这样,但个人很不喜欢,so文件在build目录里真的太深了,不只目录深,隐藏的也深。可以看到,cmake编译时的命令就在这个文件里,这样就好办了,自己写一个批处理,已有动态库编译成鸿蒙版本就可以和其它CPU架构一样了。仔细观察编译生成的路径,在.cxx目录下,有一个metadata_generation_command.txt文件,打开文件,内容如图。至于Cmakelist.txt的编写,这里就不详细介绍了,其实并不难,而且大多数人也是会的。

2024-09-26 09:36:10 657

原创 【加解密与C】对称加密(五)blowfish

Blowfish 是一种对称密钥分组加密算法,由 Bruce Schneier 于 1993 年设计。其特点包括快速、免费且安全性高,适用于加密大量数据。Blowfish 使用可变密钥长度(32 位至 448 位)和固定的 64 位分组大小。

2025-08-05 09:46:47 486

原创 C Primer Plus 第6版 编程练习——第17章(下)

7.编写一个程序,打开和读取一个文本文件,并统计文件中每个单词出现的次数。程序在读入文件后,会提供一个有3个选项的菜单。第1个选项是列出所有的单词和出现的次数。第2个选项是让用户输入一个单词,程序报告该单词在文件中出现的次数。6.编写一个函数接受3个参数:一个数组名(内含已排序的整数)、该数组的元素个数和待查找的整数。然后该程序把该字符串的字符逐个压入一个栈(参见复习题5),然后从栈中弹出这些字符,并显示它们。当用户选择查找宠物时,程序应询问用户该宠物的名字,然后列出该名字的所有宠物(及其种类)。

2025-08-05 09:43:38 220

原创 【加解密与C】CRC128

CRC128(Cyclic Redundancy Check,128位循环冗余校验)是一种用于检测数据传输或存储过程中错误的校验算法。相比常见的CRC32,CRC128提供更长的校验位(128位),理论上错误检测能力更强,但计算开销更大。

2025-08-04 13:48:34 274

原创 C Primer Plus 第6版 编程练习——第17章(上)

一种方法是修改链表的定义,可以双向遍历链表。重写list.c(程序清单 17.5)中的函数以适应新的定义,并通过 films.c(程序清单 17.4)测试最终的代码。重写list.c(程序清单 17.5)中的函数以适应新的定义,并通过films.c(程序清单 17.4)测试最终的代码。4. 重写mall.c(程序清单 17.9),用两个队列模拟两个摊位。//指向1ist的开头。int items;/* list中的项数*Node* end;//指向list的末尾。

2025-08-04 13:42:02 362

原创 【加解密与C】HASH系列(四)SHA-3

SHA-3(Secure Hash Algorithm 3)是由美国国家标准与技术研究院(NIST)于2015年发布的加密哈希函数标准,基于Keccak算法。它是SHA-2的替代方案,设计上采用了海绵结构(Sponge Construction),具有更强的抗碰撞性和灵活性。

2025-07-31 09:10:53 865

原创 C Primer Plus 第6版 编程练习——第16章

另外,如果你的实现有time()(第12章讨论过)或类似的函数,可任srand()中使用这个函数的输出来初始化随机数生成器 rand()。int类型的参数指定了动态数组中的元素个数,double 类型的值用于初始化元素(第1个值赋给第1个元素,以此类推)。直角坐标用向量的x轴和y轴的坐标来描述该向量。2.两数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的倒数。需要一个函数来完成转换,该函数接受一个包含极坐标的结构,并返回一个包含直角坐标的结构(或返回指向该结构的指针)。

2025-07-31 09:07:03 913

原创 【加解密与C】CRC64

CRC64(循环冗余校验 64 位)是一种基于多项式除法的错误检测码,用于检测数据传输或存储中的错误。它生成一个 64 位的校验和(checksum),能高效地捕捉常见错误如位翻转。相比较短位数的 CRC(如 CRC32),CRC64 提供更高的错误检测能力,适用于大容量数据或高可靠性场景(如文件校验、网络协议)。CRC64 的核心是多项式除法。输入数据被视为一个二进制多项式 $m(x)$,除以一个预定义的 64 位生成多项式 $g(x)$。计算出的余数 $r(x)$ 就是 CRC64 校验和。

2025-07-30 09:29:18 644

原创 C Primer Plus 第6版 编程练习——第15章

5.编写一个函数,把一个 unsigned int 类型值中的所有位向左旋转指定数量的位。2.编写一个程序,通过命令行参数读取两个二进制字符串,对这两个二进州数使用~运算你、&运算徐、|运算符和^运算行,并以二进制字符串形式打印结果(如果无法使用命令行环境,可以通过交互式让程序读取字符串)。4.编写一个程序,按受两个 int 类型的参数:一个是值:一个是位的位置。3.编写一个函数,接受一个 int 类型的参数,并返回该参数中打开位的数量。对齐:0~2之间的一个数,表示左对齐、居中、右对齐;

2025-07-30 09:23:49 813

原创 C Primer Plus 第6版 编程练习——第14章(下)

如果删除记录,把空出来的空间留给下一个要读入的记录。最简单的方法是改动存储在内存中的所有数据,然后再把最后的信息写入文件。11.编写一个名为transform()的函数,接受4个参数:内含double 类型数据的源数组名、内含double 类型数据的目标数组名、一个表示数组元素个数的int 类型参数、函数名(或等价的函数指针)。每个结构中包括:一个成员表示座位编号、一个成员表示座位是否已被预订、一个成员表示预订人的名、一个成员表示预订人的姓。例如,选择菜单中的a,将激活由该数组第1个元素指向的函数。

2025-07-29 09:56:00 345

原创 C Primer Plus 第6版 编程练习——第14章(上)

文件可能包含多场比赛的数据,所以同一位球员可能有多行数据,而且同一位球员的多行数据之间可能有其他球员的数据。要实现这些功能,最简单的方法是把结构的内容都初始化为零,把文件中的数据读入临时变量中,然后将其加入相应的结构中。a.第1个成员是社会保险号,第2个成员是一个有3个成员的结构,第1个成员代表名,第2个成员代表中间名,第3个成员表示姓。3.修改程序清单 14.2中的图书目录程序,使其按照输入图书的顺序输出图书的信息,然后按照书名的字母顺序输出图书的信息,最后按照价格的升序输出图书的信息。

2025-07-29 09:51:21 832

原创 C Primer Plus 第6版 编程练习——第13章(下)

编写一个程序,把文件中的内容读入一个20X30的int数组中。一种把这些数字转换为图片的粗略方法是:该程序使用数组中的值初始化一个20X31的字符数组,用值0对应空格字符,1对应点字符,以此类推。最后,程序显示最终的图片(即,打印所有的字符串),并将给果存储在文本文件中。该函数把每个值与它上下左右相邻的值作比较,如果该值与其周围相邻值的差都大于1,则用所有相邻值的平均值(四舍五入为整数)代替该值。9.修改程序清单 13.3 中的程序,从1开始,根据加入列表的顺序为每个单词编号。

2025-07-28 11:18:01 836

原创 C Primer Plus 第6版 编程练习——第13章(上)

3.编写一个文件拷贝程序,提示用广输入文木文件名,并以该文件名作为原始文件名和输出文件名。a.该程序以这样的顺序打印:打印第1个文件的第1行,第2个文件的第1行,第1个文件的第2行,第2个文件的第2行,以此类推,打印到行数较多文件的最后一行。重写程序请单 13.2中的程序,不使用命令行参数,而是提示用户输入所需信息。2.编写一个文件携贝程序,该程序通过命令行获取原始文件名和拷贝文件名。1.修改程序清单13.1中的程序,要求提示用户输入文件名,并读取用户输入的信息,不使用命令行参数。使用argc制循环。

2025-07-28 11:04:14 313

原创 C Primer Plus 第6版 编程练习——第12章

然后,接收用户输入的单词,并显示出来,使用 malloc()并回答第1个问题(即要输入多少个单词),创建一个动态数组,该数组内含相应的指向char的指针(注意,由于数组的每个元素都是指向char的指针,所以用于存储 malloc()返回值的指针应该是一个指向指针的指针,且它所指向的指针指向char)。在读取字符串时,该程序应该把单词读入一个临时的char数组,使用malloc()分配足够的存储空间来存储单词,并把地址存入该指针数组(该数组中每个元素都是指向char的指针)。可以假设用户输入的都是数值数据。

2025-07-25 10:42:32 794

原创 C Primer Plus 第6版 编程练习——第11章(下)

12.编写一个程序,读取输入,直至读到 BOF,报告读入的单词数、大写字母数、小写字母数、标点符号数和数字字符数。13.编写一个程序,反序显示命令行参数的单词。例如,命令行参数是 see you later,该程序应打印later you see.14.编写一个通过命令行运行的程序计算幂。第1个命令行参数是double 类型的数,作为幂的底数,第2个参数是整数,作为幂的指数。16.编写一个程序读取输入,直至读到文件结尾,然后把字符串打印出来。如果输入的字符串不是纯数字,该函数返回0。

2025-07-25 10:20:45 274

原创 C Primer Plus 第6版 编程练习——第11章(中)

如果第2个字符串包含在第1个字符串中,该函数将返回第1个字符串开始的地址。否则,该函数返回空指针。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。该程序为用户提供一个有5个选项的菜单:打印源字符串列表、以ASCII中的顺序打印字符串、按长度递增顺序打印字符串、按字符串中第1个单词的长度打印字符串、退出。在一个程序中测试该函数,使用循环读取输入行,直到用户输入一行空行。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。

2025-07-24 13:25:27 335

原创 C Primer Plus 第6版 编程练习——第11章(上)

5.设计并测试一个函数,搜索第1个函数形参指定的字符串,在其中查找第2个函数形参指定的字符首次出现的位置。如果成功,该函数返指向该字符的指针,如果在字符串中未找到指定字符,则返回空指针(该函数的功能与 strchr()函数相同)。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。3.设计并测试一个函数,从一行输入中把一个单词读入一个数组中,并丢弃输入行中的其余字符。1.设计并测试一个函数,从输入中获取n个字符(包括空白、制表符、换行符),把结果存储在一个数组里,它的地址被传递作为一个参数。

2025-07-24 11:30:59 166

原创 C Primer Plus 第6版 编程练习——第10章(下)

也就是说,如果数组1中包含的值是2、4、5、8,数组2中包含的值是1、0、4、6,那么该函数把3、4、9、14赋给第3个数组。7.编写一个程序,初始化一个double类型的二维数组,使用编程练习2中的一个拷贝函数把该数组中的数据拷贝至另一个double类型的二维数组中(因为二维数组是数组的数组,所以可以使用处理一维数组的拷贝函数来处理数组中的每个子数组)。8.使用编程练习2中的拷贝函数,把一个有7个元素的数组中第3~第五个元素拷贝至含3个元素的数组中。a.把用户输入的数据存储在3X5的数组中。

2025-07-23 10:04:28 359

原创 C Primer Plus 第6版 编程练习——第10章(上)

2.编写一个程序,初始化一个double数组,然后把该数组的内容拷贝至3个其他数组中(在main()中声明这4个数组)。5.编写一个函数,返回存储在double数组中最大值和最小值的差,并在一个简单的程序中测试该函数。4.编写一个函数,返回存储在double类型数组中最大值的下标,并在一个简单的程序中测试该函数。6.编写一个程序,把double类型数组中的数据倒叙排列,并在一个简单的程序中测试该函数。3.编写一个函数,返回存储在int类型数组中的最大值,并在一个简单的程序中测试该函数。

2025-07-23 09:42:38 438

原创 【加解密与C】Rot系列(四)RotSpecial

RotSpecial 是一个自定义函数,通常用于处理特定的旋转操作,尤其在图形变换或数据处理中。该函数可能涉及欧拉角、四元数或其他旋转表示方法,具体行为取决于实现上下文。这里给出的是一个简单的定义,即对大小写字母进行旋转,旋转长度从1开始递增,解密时反向旋转。如需具体实现细节,建议查阅相关代码库或文档的上下文定义。

2025-07-22 09:26:40 214

原创 【加解密与C】Rot系列(四)Rot8000

Rot8000 是一种基于 Unicode 字符集的旋转加密算法,类似于经典的 Rot13,但扩展到了更大的字符范围(通常是 Unicode 的基本多语言平面,即 U+0000 到 U+FFFF)。Rot13 仅适用于 26 个拉丁字母,而 Rot8000 通过覆盖更多字符(如中文、符号等),增强了加密的灵活性和趣味性。

2025-07-22 09:22:58 1254

原创 【加解密与C】Rot系列(四)Rot47

Rot47 是一种基于 ASCII 码的字符替换算法,属于 Rot13 的扩展版本。它将可打印的 ASCII 字符(从 33 '!' 到 126 '~')通过移位 47 位进行替换。与 Rot13 仅处理字母不同,Rot47 支持数字、符号和字母的转换。

2025-07-21 09:30:52 363

原创 【加解密与C】Rot系列(三)Rot13

ROT18是一种基于ROT13的变体加密方法,结合了字母和数字的旋转替换规则。它将字母表旋转13位(与ROT13相同),同时对数字0-9旋转5位(即0→5、1→6,依此类推,9→0)。名称中的“18”可能源于字母(26个)和数字(10个)旋转位数的某种组合(如13+5),但实际规则是分开处理的。

2025-07-21 09:28:32 357

原创 【加解密与C】Rot系列(二)Rot13

Rot13(Rotate by 13 places)是一种简单的字母替换加密算法,属于凯撒密码(Caesar cipher)的特例。它将字母表中的每个字母替换为字母表中距离它13个位置的字母。例如,字母A替换为NB替换为O,以此类推。由于英文字母有26个字符,Rot13的特点是加密和解密使用相同的算法。

2025-07-18 09:05:09 394

原创 【加解密与C】Rot系列(一)Rot5

Rot5是一种简单的字母替换加密方法,专门用于数字0-9的替换。其原理是将每个数字向前或向后移动5位,实现加密和解密。例如,数字0加密后变为5,数字5解密后变为0。Rot5适用于简单的数字混淆,常见于需要隐藏明文数字但无需高安全性的场景,如临时验证码生成或轻度数据脱敏。与加密规则相同,因为Rot5是对称加密(即加密和解密使用相同规则)。

2025-07-18 09:03:52 812

原创 【加解密与C】Base系列(八)Base100

Base100 是一种基于 Unicode 表情符号的编码方式,也称为 "Emoji Encoding"。它将二进制数据转换为一系列表情符号,通常用于娱乐或非正式场景。Base100 并非标准编码,但在某些社区(如程序员或社交媒体用户)中流行。

2025-07-17 16:14:31 275

原创 【加解密与C】Base系列(七)Base62

Base62 是一种将数字转换为由 62 个字符组成的字符串的编码方式。它通常用于缩短数字表示,同时避免特殊字符或混淆字符(如0和O0-9A-Z和a-z。

2025-07-17 16:13:21 453

原创 【加解密与C】Base系列(六)Base45

Base45 是一种基于ASCII字符的编码方式,主要用于紧凑地表示二进制数据(如二维码中的内容)。它由45个可打印字符组成,包括数字、大写字母及部分符号,优化了数据压缩率和可读性。

2025-07-16 10:04:53 490

原创 【加解密与C】HMAC

HMAC(Hash-based Message Authentication Code)是一种基于哈希函数的消息认证码算法,用于验证消息的完整性和真实性。它结合了密钥和哈希函数(如 SHA-256、MD5 等),生成一个固定长度的认证码,确保消息未被篡改且来源可信。

2025-07-16 10:03:40 1204

原创 【加解密与C】Base系列(五)Base91

Base92是一种二进制到文本的编码方案,类似于Base64,但使用92个可打印ASCII字符(从!到,排除单引号和反斜杠其设计目标是比Base64更高效,尤其在短数据块中可减少编码后的长度。

2025-07-15 13:36:13 180

原创 【加解密与C】Base系列(四)Base91

Base91 是一种二进制到文本的编码方案,用于将二进制数据转换为可打印的ASCII字符。与Base64相比,Base91 的编码效率更高,可节省约12%的空间。其字符集包含91个可打印字符(A-Z、a-z、0-9及部分符号),避免使用可能引起冲突的特殊字符(如。

2025-07-15 13:34:37 400

原创 【加解密与C】CRC

CRC是一种用于检测数据传输或存储中错误的校验算法。它通过生成固定长度的校验值(通常为16位或32位)来验证数据的完整性,广泛应用于网络通信、文件存储等领域。

2025-07-14 13:13:30 479

原创 C Primer Plus 第6版 编程练习——第9章(下)

10.为了让程序清单9.8中的to_binary()函数更通用,编写一个to_base_n()函数接受两个参数,且第二个参数在2~10范围内,然后以第2个参数中指定的进制打印第1个参数的数值。例如,to_base_n(129,8)显示的结果为201,也就是129的八进制数。另外,函数要处理0的任何次幂都为0,任何数的0次幂都为1(函数应报告0的0次幂未定义,因此把该值处理为1)。要使用一个循环,并在程序中测试该函数。合并一个函数,以一个字符作为参数,如果该字符是一个字母则返回一个数值位置,否则返回-1。

2025-07-14 13:09:59 183

原创 【加解密与C】非对称加解密(五)SM9

SM9是中国国家密码管理局发布的标识密码算法标准(GM/T 0044-2016),属于基于身份的密码体系(IBC)。它通过用户的唯一标识(如邮箱、手机号)直接生成公钥,无需数字证书,简化了密钥管理流程。SM9支持数字签名、密钥交换、加密等功能,适用于物联网、电子政务等场景。

2025-07-11 13:39:40 459

原创 C Primer Plus 第6版 编程练习——第9章(上)

字符参数是待打印的字符,第1个整数指定一行中打印字符的次数,第2个整数指定打印指定字符的行数。5.编写并测试一个函数larger_of(),该函数把两个double类型变量的值替换为较大的值。4.两数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的到数。编写一个函数,接受两个double类型的参数,返回这两个参数的调和平均数。6.编写并测试一个函数,该函数以3个double变量的地址作为参数,把最小值放入第1个变量,中间值放入第2个变量,最大值放入第3个变量。

2025-07-11 13:12:36 133

原创 【加解密与C】非对称加解密(四)SM2

SM2是中国国家密码管理局发布的椭圆曲线公钥密码算法标准,属于非对称加密体系,用于数字签名、密钥交换和公钥加密。其基于椭圆曲线密码学(ECC),安全性依赖于椭圆曲线离散对数问题的难解性。SM2标准推荐的椭圆曲线方程为:素数域特征:$p = \text{FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF}$

2025-07-10 16:38:30 1398

原创 C Primer Plus 第6版 编程练习——第8章

注意,在ASCII序列中,空格字符前面的字符都是非打印字符,要特殊处理这些字符。获得用户选择的选项后,程序提示用户输入两个数字,然后执行用户刚才选择的操作。程序使用 float 类型的变量存储用户输入的数字,如果用户输入失败,则允许再次输入。实际上,标点符号也不应该统计,但是现在暂时不同考虑这么多(如果你比较在意这点,考虑使用ctype.h系列中的ispunct()函数)。6.修改程序清单8.8中的get_first()函数,让该函数返回读取的第1个非空白字符,并在一个简单的程序中测试。

2025-07-10 16:34:52 728

原创 【加解密与C】非对称加解密(三)ECC椭圆曲线

与传统的RSA相比,ECC在相同安全级别下使用更短的密钥,计算效率更高,适用于资源受限的环境。ECC的安全性基于椭圆曲线离散对数问题(ECDLP):给定曲线上的点 (P) 和 (Q = k \cdot P),求解 (k) 是计算困难的。点加法用于定义曲线上两个点的加法运算,标量乘法则是通过重复点加法实现。椭圆曲线的数学定义通常表示为: [ y^2 = x^3 + ax + b ] 其中 (a) 和 (b) 是满足 (4a^3 + 27b^2 \neq 0) 的常数,以避免曲线出现奇异点。

2025-07-09 14:36:16 394

Win11 24H2 自定义桌面背景(C/C++)

Win11 24H2 自定义桌面背景(C/C++)

2025-06-12

CMake Cookbook中文版-自动化编译系统的全面指南及应用

内容概要:CMake Cookbook中文版系统地介绍了如何使用CMake进行跨平台项目配置、编译和测试,涵盖从入门到高级主题。全书内容广泛,既包括基础的项目搭建(如配置环境、编译不同类型的目标文件),也涉及复杂的多语言项目集成(C++, Python, Fortran)、外部库和工具检测、测试和CI配置、高级配置技巧如生成器表达式以及代码版本管理等方面的技术和实践经验。通过丰富的示例和详尽的代码片段,读者不仅可以快速上手简单的项目配置,还可以深入了解CMake在大规模项目管理和持续集成中发挥的作用。 适合人群:对跨平台开发有兴趣或是从事嵌入式、服务器端编程的工程师,以及对现有项目优化或移植感兴趣的开发者。 使用场景及目标:帮助读者掌握高效地管理C++及其他语言大型复杂项目的方法;利用CMake简化构建流程;增强团队协作效率;为自动化测试及持续交付奠定坚实的基础。 其他说明:书中提供了大量的实例工程,可以从Github仓库下载;此外,针对每一章节都有详细的配置指导与故障排查提示。

2025-01-15

银河麒麟高级服务器操作系统中的RPM包构建流程和技术详解

内容概要:本文档旨在帮助软件开发者快速掌握在银河麒麟高级服务器操作系统下构建RPM包的方法。文档涵盖了RPM的基本概念、打包流程、环境搭建、.spec文件编写和具体的打包实例。通过对不同阶段任务的详细介绍,确保开发者能高效地创建、验证并发布软件包,从而提高开发效率。 适合人群:具有一定Linux基础并对RPM软件包有兴趣的开发者,特别是在银河麒麟操作系统环境中工作的技术人员。 使用场景及目标:本指南有助于开发者理解RPM的工作机制及其优势,如简化源码包的复杂性和处理软件之间的依赖关系。它提供详细的步骤指导,让使用者能够在个人或团队项目中顺利集成并应用RPM打包工具。 其他说明:文档中提供了实用的例子,并鼓励读者尝试自行实践整个打包过程。此外还有详细的命令解释和服务联系方式以便遇到问题及时得到支持。最后,附件列出了官方发布的规范文档,进一步补充了正文内容。

2025-01-15

NetSDK编程指导手册(只能楼宇分册)

大华门禁控制器SDK

2025-01-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除