4

RADIUS プロトコルを実装しようとしています。RFC 2866 に従って、RADIUS アカウンティングの場合、Authenticator フィールドを計算するときの手順は次のとおりです。

Accounting-Response パケットの Authenticator フィールドは、Response Authenticator と呼ばれ、Accounting-Response Code、Identifier、Length、Accounting-Request からの Request Authenticator フィールドで構成されるオクテットのストリームに対して計算された一方向の MD5 ハッシュが含まれています。返信されるパケット、および応答属性 (存在する場合)、その後に共有秘密鍵が続きます。結果として得られる 16 オクテットの MD5 ハッシュ値は、Accounting-Response パケットの Authenticator フィールドに格納されます。

私はそれを計算しようとしていますが、正しい値を取得できません: コード = 5 (0x05) 1 バイト 識別子: 134 (0x86) 1 バイト 長さ: 20 (0x0014) 2 バイト 要求オーセンティケータ: bac85592365b2e786ad3095a1cf22646 、16 バイト 属性はありません私の応答で共有秘密: 63 21 6d 40 35 32 32 35 (c!m@5225)

したがって、MD% ハッシュの入力は次のようになります

実際の応答のオーセンティケーターは 9629702dca9469714fb423ca7b1525bc です。クライアント/サーバーから送信された実際の RADIUS パケットを比較していますが、計算したオーセンティケーターはサーバーから送信されたものと一致しません。それは何ですか?

The RFC 2865 at the end has a couple of examples. Example 1, using the shared
secret "xyzzy5461"



User Telnet to Specified Host

The NAS at 192.168.1.16 sends an Access-Request UDP packet to the
RADIUS Server for a user named nemo logging in on port 3 with
password "arctangent".

The Request Authenticator is a 16 octet random number generated by
the NAS.

The User-Password is 16 octets of password padded at end with nulls,
XORed with MD5(shared secret|Request Authenticator).

01 00 00 38 0f 40 3f 94 73 97 80 57 bd 83 d5 cb
98 f4 22 7a 01 06 6e 65 6d 6f 02 12 0d be 70 8d
93 d4 13 ce 31 96 e4 3f 78 2a 0a ee 04 06 c0 a8
01 10 05 06 00 00 00 03

1 Code = Access-Request (1)
1 ID = 0
2 Length = 56
16 Request Authenticator

Attributes:

6 User-Name = "nemo"
18 User-Password
6 NAS-IP-Address = 192.168.1.16
6 NAS-Port = 3

The RADIUS server authenticates nemo, and sends an Access-Accept UDP
packet to the NAS telling it to telnet nemo to host 192.168.1.3.

The Response Authenticator is a 16-octet MD5 checksum of the code
(2), id (0), Length (38), the Request Authenticator from above, the
attributes in this reply, and the shared secret.

02 00 00 26 86 fe 22 0e 76 24 ba 2a 10 05 f6 bf
9b 55 e0 b2 06 06 00 00 00 01 0f 06 00 00 00 00
0e 06 c0 a8 01 03

1 Code = Access-Accept (2)
1 ID = 0 (same as in Access-Request)
2 Length = 38
16 Response Authenticator

Attributes:

6 Service-Type (6) = Login (1)
6 Login-Service (15) = Telnet (0)
6 Login-IP-Host (14) = 192.168.1.3
4

1 に答える 1

2

問題が解決しました!オンラインの md5 ツールは文字列を想定しているため、バイト値を渡しても文字列として扱われていたため、値が間違っていました。

于 2015-01-23T22:25:43.917 に答える