2015-01-21 3 views
1

Я пытаюсь реализовать протокол RADIUS. В соответствии с RFC 2866, для RADIUS Accounting, при расчете поля Authenticator эти шаги:Вычислить поле автотестатора для сообщения RADIUS

Поле аутентификатор в пакете Accounting-Response называется аутентификатор отклика, и содержит один конец MD5 хэш , рассчитанный по потоку октетов, состоящий из Accounting- Код ответа, идентификатор, длина, поле аутентификатора запроса из ответа на запрос-запрос, а также атрибуты ответа , если таковые имеются, за которым следует общий секрет. итоговое 16-октетное значение MD5 хешируется в поле Authenticator пакета Accounting-Response.

Я пытаюсь вычислить это, и я не могу получить правильное значение: Code = 5 (0x05) 1 байт Идентификатор: 134 (0x86) 1 байт Длина: 20 (0x0014) 2 байта Запрос Authenticator: bac85592365b2e786ad3095a1cf22646, 16 байт Там нет атрибутов в своем ответе разделяемой секрет: 63 21 6d 40 35 32 32 35 (! с м @ 5225)

поэтому вход для MD% хэша будет: 05860014bac85592365b2e786ad3095a1cf2264663216d4035323235 и я получаю: b7ac1e6909302b06bd021aede380dbc5 с помощью этих 2 веб-сайтов: http://www.md5hashgenerator.com/ и http://www.miraclesalad.com/webtools/md5.php

Фактическая реакция имеет Authenticator как 9629702dca9469714fb423ca7b1525bc я сравниваю, глядя на реальных пакетов RADIUS, посылаемой клиентом/сервером и Authenticator, что я вычислить не соответствует, отправленный сервером. Любые идеи, что это может быть?

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 
+0

Я также проверил примеры в конце rfc 2865, и я не могу получить тот же аутентификатор, который они получают и показывают в примере – user3196371

ответ

1

Проблема решена! В онлайн-инструментах md5 ожидаются строки, поэтому, несмотря на то, что я передавал значения байтов, он обрабатывался как строка, следовательно, неправильное значение.

Смежные вопросы