C#简易网络验证

C#简易网络验证
一个简单的C#网络验证,用于学习MaterialSkin和Windows Forms开发,毕竟学了C#总要拿来做做事情 😃
界面使用说明
数据库采用的sqlite,当用户初次双击启用软件的时候,程序会主动在当前目录生成一个名为data.db的数据库文件,该文件中主要包含两张数据表:

kami:记录卡密相关信息的数据表
net_log:记录用户登录信息的数据表
登录记录
该界面主要记录每次用户访问服务端的信息, 其界面如下:

如上图, 时间指的是用户访问的时间,卡密是访问的唯一手段,IP地址包含了用户的端口信息,状态指的是用户最终是成功访问还是失败,如果是因为卡密过期导致的原因会特意提示,最后是使用软件。
搜索栏这里不过多介绍。
登录记录使用的是net_log这张数据表,该表的结构如下,如上面的成员对应:

在该界面右键会出现下面的菜单栏:

复制不过多介绍,导出(JSON)会根据用户的选择将最近一天\周\月的记录数据导出一个JSON格式的文件到选定的目录下(以追加的形式),删除记录会根据用户的选择将一天\周\月前的数据进行删除同步到数据库,避免记录数据过大导致的数据库文件臃肿,也可以在设置界面中选择定时清理登录记录,刷新不过多解释。
卡密管理

如上图,各个成员其实没什么好介绍的,显示里的内容默认全都不选择的话就显示全部卡密。
卡密操作需要用户设置卡密类型、卡密数量、用户最后点击生成卡密,生成的结果会放在红框内的TextBox中,并同步刷新列表。删除过期卡 会删除数据库中所有过期卡密。
搜索栏这里不过多介绍。
卡密管理使用的是kami这张数据库表,该表的结构如下,如上面的成员对应:

在该界面右键会出现下面的菜单栏:

复制不过多介绍,操作中支持卡密的删除、禁用、激活,刷新不过多解释。
设置界面

没实现太多的功能,主要是用于配置服务器地址和端口,最后点击保存设置后会在程序目录下生成一个config.json的配置文件并重启软件,config.json内容如下:

以及一个定时清理登录记录的功能,大体流程就是生成一个Windows计划任务每个月1号凌晨3点调用编写的DbCleaner.exe程序来清理net_log表对应时间的数据:


数据包解析说明
数据包的解析效验主要在handleNetWorkData函数,当用户传来数据包后会进行解析,正常情况下的数据包结构应当如下:
/* server recv
{
"magic": "520" // 作为固定字节用来区分非法数据
"id": "ABCDEF123456", // 卡密
"timestamp": "1756357200", // 请求时间(Unix时间戳,表示2025-08-28 05:00:00)
"software": "pubg v3" // 软件版本
"sign": "E10ADC3949BA59ABBE56E057F20F883E" // 签名字段("sign": "md5(id + timestamp + secret)")
}
*/
/* server send
{
"status": 100, // 状态代码, 100(成功)或101(失败)或102(卡密过期)
}
*/
handleNetWorkData函数中对数据包拆解,大体流程:效验magic ➡️ 时间戳验证 ➡️ 签名验证 ➡️ 数据库校验。

项目成品:

浙公网安备 33010602011771号