启动message

192.168.1.11
kill -6 进程
路径:cd /oracle/others/activemq/linux-x86-64/nohup ./activemq start\
查看日志
cd /oracle/others/activemq/data/
先用sys登陆200数据库
select 'alter system kill session '''||sid||','||serial#||''';' from v$session where username='MESSAGE'

然后kill掉220上的activemq进程

再在200上执行
select 'alter system kill session '''||sid||','||serial#||''';' from v$session where username='MESSAGE'

找到对应的链接
全部kill掉
再重新启动activemq
Wireshark 本身不会主动“知道” RADIUS 是否启动了消息认证(Message-Authenticator),但它可以通过 **解析 RADIUS 数据包的内容**,来判断是否存在 `Message-Authenticator` 属性,并进一步验证其值是否符合规范。 RADIUS 协议中,`Message-Authenticator` 是一个可选的属性(Attribute 80),用于在某些情况下提供额外的消息完整性保护,尤其是在使用 EAP(Extensible Authentication Protocol)时是 **强制要求** 的。 --- ### ✅ Wireshark 如何识别和验证 Message-Authenticator 1. **检测是否存在 Attribute 80** - 当 Wireshark 解析 RADIUS 包时,它会查看属性列表。 - 如果发现类型为 `80` 的属性,就会标记为 `Message-Authenticator`。 2. **自动验证 HMAC-MD5 值** - Wireshark 内置了 RADIUS 解密/验证逻辑。 - 如果你提供了共享密钥(Shared Secret),Wireshark 可以: - 提取前 20 字节的请求/响应头(包括 Code, Identifier, Length, Authenticator) - 将除 `Message-Authenticator` 外的所有属性按顺序放入临时缓冲区 - 在原 `Message-Authenticator` 的位置填充 16 字节全 0 - 使用共享密钥计算 HMAC-MD5 - 比较计算出的值与实际值是否一致 3. **可视化提示** - 如果验证通过:显示为正常,可能提示 “Verified” - 如果不匹配:显示警告,如 “Message-Authenticator invalid” --- ### 🧪 示例:如何在 Wireshark 中操作 #### 步骤 1:确保启用了 RADIUS 解码 - 默认开启。只要端口是 1812(认证)或 1813(计费),Wireshark 自动用 RADIUS 解析器。 #### 步骤 2:提供共享密钥(关键!) - 打开:`Edit → Preferences → Protocols → RADIUS` - 设置共享密钥(Shared Secret),例如:`mysecretkey` - 确保勾选“Validate Authenticators” 和相关选项 > 注意:如果没有设置共享密钥,Wireshark 无法验证 `Message-Authenticator` 的正确性,只能显示原始字节。 #### 步骤 3:抓包观察 ```text RADIUS Protocol Code: Access-Request (1) Packet identifier: 0x01 Length: 158 Authenticator: ... Attributes: User-Name: "testuser" NAS-IP-Address: 192.168.1.1 EAP-Message: ... Message-Authenticator: 00000000000000000000000000000000 ``` Wireshark 会尝试替换这个 `Message-Authenticator` 的占位符,用 HMAC-MD5 计算预期值,并对比。 --- ### 🔐 技术原理:Message-Authenticator 验证过程(HMAC-MD5) ```python import hmac import hashlib def verify_message_authenticator(packet_bytes: bytes, shared_secret: str, expected_ma_offset: int): """ packet_bytes: 完整的RADIUS包(bytes) shared_secret: 共享密钥(字符串) expected_ma_offset: Message-Authenticator 属性在属性区的偏移量(通常从第20字节后开始) """ # Step 1: Extract header (Code, ID, Length, Request Authenticator) header = packet_bytes[:20] # Step 2: 找到属性部分(从第20字节开始) attributes = packet_bytes[20:] # Step 3: 创建伪造属性区,在 MA 字段填入16个0 # 假设我们知道 MA 出现在属性中的某个位置(比如第N个属性) fake_attributes = bytearray(attributes) ma_start = None i = 0 while i < len(fake_attributes): attr_type = fake_attributes[i] attr_len = fake_attributes[i + 1] if attr_type == 80 and attr_len == 18: # Type=80, Length=18 (16 bytes value) ma_start = i + 2 break i += attr_len if ma_start is None: print("No Message-Authenticator found") return False # Replace MA value with 16 zeros fake_attributes[ma_start:ma_start+16] = b'\x00' * 16 # Step 4: 构造输入数据 = header + fake_attributes input_data = header + fake_attributes # Step 5: 计算 HMAC-MD5 computed_hmac = hmac.new( key=shared_secret.encode(), msg=input_data, digestmod=hashlib.md5 ).digest() # Step 6: 提取真实的 MA 值进行比较 real_ma_value = attributes[ma_start:ma_start+16] # Step 7: 比较 if computed_hmac == real_ma_value: print("✅ Message-Authenticator is valid") return True else: print(f"❌ Invalid. Expected: {computed_hmac.hex()}, Got: {real_ma_value.hex()}") return False ``` > ⚠️ 上述代码是一个简化版本,真实实现需考虑属性编码规则、TLV 结构等。 --- ### 📌 总结 | 功能 | Wireshark 是否支持 | |------|------------------| | 显示是否有 Message-Authenticator | ✅ 是 | | 高亮 Attribute 80 | ✅ 是 | | 使用共享密钥验证 HMAC-MD5 | ✅ 是(需配置密钥) | | 自动报错无效认证子 | ✅ 是 | --- ### ❗ 注意事项 - 必须正确配置共享密钥,否则无法验证。 - 若使用 UDP 负载混淆(如某些厂商私有扩展),可能导致误判。 - Wireshark 不会“探测”服务是否启用认证”,而是基于数据包内容做静态分析。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值