Network Engineer at HRBUST.

​ 在日常网络管理工作中,我时常需要网络管理协会同学的协助以应对各类问题。然而,出于严格的安全考量和既定的管理规定,我无法向网管会同学开放 AC(无线接入控制器)的管理权限。但为保证网络运维工作的高效推进,及时将 AC 相关数据反馈给他们又显得尤为必要。为此,我展开了一系列深入探索与研究,最终借助飞书自建应用成功找到了一套行之有效的解决方案。接下来,我将详细阐述这一过程。

问题背景

​ 为达成 AC 数据向网管会同学的反馈目标,我起初运用了抓包 AC 管理控制台 登录后生成的 session token 的技术手段,并自主编写 API 接口以实现与飞书机器人的数据交互。然而在实际运行过程中,我很快察觉到该 session token 存在时效性问题,通常在数日后便会过期失效,进而致使数据获取流程中断,影响了信息反馈的持续性和稳定性。

解决方案

​ 面对 token 过期导致数据获取中断这个棘手问题,我试着去分析 AC 通信协议和交互流程,还参考了开源社区里不少相关工具。说实话,因为我水平有限,过程特别难,我遇到了各种各样的难题,很多时候都觉得没啥头绪。可能是运气好,最后还真让我摸到了 token 生成的一点规律。下面我就以 Python 为例,给大家分享一下我是怎么动态生成 token 来保证数据稳定获取的,要是有不足的地方,还希望大家多担待。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def gen_hmac_info(ac_ip,ac_user):
hmac_info_url = f"https://{ac_ip}/hmac_info.do?user={ac_user}"
try:
hmac_info_response = requests.get(hmac_info_url, verify=False)
hmac_info_response.raise_for_status()
except requests.RequestException as e:
print(e)
continue
hmac_info = json.loads(hmac_info_response.text)
return hmac_info
def gen_ruijie_token(password, hmac_info):
salt = hmac_info["salt"].encode()
iter_count = hmac_info["iter"]
key_len = hmac_info["keylen"]
hash = hashlib.pbkdf2_hmac('sha256', password.encode(), salt, iter_count, key_len)
return hash.hex()

最终成果

​ 由于当前代码中包含部分敏感信息,尚未完成脱敏处理,出于数据安全与合规性考量,现阶段实际应用代码暂无法对外公开。后续,我计划在完成脱敏及相关处理后,将其发布至 GitHub 平台开源,以便与广大技术爱好者及同行进行交流与分享。在此,仅为大家展示该方案在实际应用中的运行情况与效果呈现 。

image-20250407115539803

image-20250407115627867

Read More

本方法仅需增添一个判断条件。由于是在 post_auth 阶段进行判断,故会存在正常的认证过程,然而在最终阶段会返回认证失败的结果。

1
2
3
if ((NAS-IP-Address == "x.x.x.x" || NAS-IP-Address == "x.x.x.x") && Realm == "xxxxxx.edu.cn") {
reject
}

将以上内容添加至 sites-enabled/default 文件的post-auth 下即可。

[!tip]

本方法通常应用于高校 eduroam 等建设需求场景下,以禁止本校用户访问本校 eduroam 网络。eduroam 官方文档所介绍的方法会将指定 realm 全部舍弃。而在与锐捷 sam 或卓智 zos 进行搭配时,需要将本校 realm 代理至 sam 和 zos 之上。目前,经过摸索仅得出这一种方法。若有更为优良的方法,恳请各位前辈予以指导

Read More
post @ 2024-08-15

RCNP改题以后增加了很多 BGP 路由和ipsec VPN 的知识,难度有所增加,但有惊无险高级认证还是拿下啦!

aaa

[!tip]

证书编号等涉密信息已抹除

Read More
  1. 进入Boot模式后,按住键盘上的“Ctrl+Q”键,进入uboot简易命令行,显示为 “bootloader#”。

  2. 使用main_config_password_clear命令,跳过密码启动设备。

  3. 使用enable命令,进入特权模式。

[!tip]

引导时 Control + B 进入 boot 模式

Read More

众所周知,自从微软将账户与Windows账号强制绑定后,使用起来便一直有诸多困难,在Microsoft Support和搜索引擎长期搜索解决方案未果,今天偶然在一个佬的博客翻到了这个问题的解决方案,发现确实有效。

Read More

最近需要一台轻量化的小服务器来跑几个Python脚本,起初打算再买一台树莓派4b的,但是看了一圈这个溢价直接给我劝退,后来我想到了运营商送的小盒子 所以就有了接下来的故事。

中兴运营商盒子刷第三方系统什么的也不是什么新鲜事了,早几年再恩山就有很多大神出了TTL刷机和短接线刷的教程,但是经过了一番尝试,发现对于2022年的新盒子这些方法基本上都失效了,无奈只能自己摸索。

Read More

本人的JAVA期中考试题,分享给有需要的朋友,变量名和方法名 命名的都不规范 因为考试需要,仅供初学者参考

Read More

本人的JAVA期中考试题,分享给有需要的朋友,变量名和方法名 命名的都不规范 因为考试需要,仅供初学者参考

Read More

安装依赖是多么痛苦的事情,相信各位小伙伴比我要更加清楚。apt装不了 还要去github找source 来make install 。终于在某个实验上因为安装依赖崩溃的我才想起来docker容器这一神器。下面我基本记录下相关的指令和学习心得。

Read More
⬆︎TOP