Назад | Перейти на главную страницу

£ пароль для входа не позволяет выполнить аутентификацию Windows NPS Radius с помощью Sonicwall SRA

У нас есть сервер Sonicwall SRA, настроенный для аутентификации пользователей с использованием RADIUS на сервере Windows NPS, работающем на Windows Server 2012 R2.

Все работает нормально, ЗА ИСКЛЮЧЕНИЕМ паролей, содержащих символ «£».

Согласно РАДИУС на странице 24 поле пароля

содержит 10646 символов в кодировке UTF-8, а строка содержит 8-битные двоичные данные

Я нашел интернет сайт который определяет знак фунта как

0xC2 0xA3 (c2a3)

Я собрал довольно уродливый Perl-скрипт для реализации шифрования паролей RADIUS для коротких паролей (<= 16 октетов) с использованием простого хеширования MD5 и XORing (я не эксперт по Perl, поэтому знаю, что это не очень красиво!)

#! /usr/bin/perl -w
use 5.010;
use Digest::MD5 qw(md5 md5_hex md5_base64);
use MIME::Base64;
use Carp qw/croak/;
use List::Util qw/max/;

$secret = "verysecret";
$authenticator = '5354ff6a10cec708f2da74a8b268b98d';
$pwd = "££££££££";
$pwdhex = $pwd;

# Convert password to a Hex string
$pwdhex =~ s/(.)/sprintf("%02x",ord($1))/eg;

print "Password in HEX = " .$pwdhex . "\n";
print "Password in ASCII " .$pwd . "\n";

# Convert RA from Hex string into bytes
$authenticator =~ s/([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;

# Concatenante the secret and authenticator then MD5 them
$md5input = $secret . $authenticator;
$md5 = md5($md5input);
$md5hex = $md5;
$md5hex =~ s/(.)/sprintf("%02x",ord($1))/eg;
print "Secret + RA (MD5)             " . $md5hex . "\n";

state $encryptedpassword = $md5 ^ $pwd;

$encryptedpassword =~ s/(.)/sprintf("%02x",ord($1))/eg;

print "Computed Encrypted Password = " . $encryptedpassword . "\n";

Используя сетевую трассировку трафика RADIUS, я смог показать, что пароль был правильно зашифрован с использованием c2a3 для каждого знака фунта.

Я собирался подать заявку в Microsoft следующим образом, поскольку это выглядит как проблема в их реализации сервера Radius в NPS, но подумал, что сначала выложу здесь эту довольно интересную головоломку, если кто-то видел что-то подобное.