Dec. 20th, 2020

spamsink: (Default)
Знаете такую шутку? Извините, Вы не можете использовать указанный пароль. Такой пароль уже использует пользователь Misha. Пожалуйста, придумайте другой пароль. (https://bash.im/quote/399755 - 2008 год)

Так вот, вы будете смеяться, но лет 30-35 до появления этой хохмы на баше подобная ситуация существовала в реальности на БЭСМ-6.

В цитате ниже "ШИФР" = аккаунт, "ЭК ..." - экстракод операции системного вызова установки/смены пароля (те, кто работал в MS DOS, увидят сходство с "INT 21h, AH = ...."), "СМ" - сумматор (регистр шириной 48 разрядов).
5.3.37. ЗABEДEHИE ПAPOЛЯ HA ШИФP.

                     ЭK 050, AИCП = 143B.

      BXOДHAЯ ИHФOPMAЦИЯ:

 CM:  24- 1 PP. - ПAPOЛЬ B ДBOИЧHO-ДECЯTИЧHOM BИДE. OДHA  ИЗ
                  ДBYX  CTAPШИX  ЦИФP  ПAPOЛЯ HE ДOЛЖHA БЫTЬ
                  HYЛEM.

      BЫXOДHAЯ ИHФOPMAЦИЯ:

 CM:            = 0 - ЗAДAH HEKOPPEKTHЫЙ ПAPOЛЬ;
                = 1 - ДAHHЫЙ ПAPOЛЬ YCTAHOBИTЬ HEЛЬЗЯ;
      БEЗ ИЗMEHEHИЯ - ПAPOЛЬ YCTAHOBЛEH.


Трюк заключается в том, что хранились только 2 из 6 цифр пароля; оставшиеся 4 цифры определяли расположение записи о пользователе в системной таблице из 3*512 = 1536 элементов. Если при установке пароля вычисленное место было пустым, то запись переносилась туда, а если там уже была запись о пользователе с паролем, то возвращалась ошибка.

Подтверждение пароля заключалось в проверке, действительно ли в позиции, вычисленной по указанному паролю, хранится запись о пользователе с данным шифром (и что первые две указанные цифры пароля совпадают с хранящимися, разумеется).

Всего возможных паролей, таким образом, могло быть 1536*99 = 152064, но автоматически перебрать их было нереально, поскольку запуск процесса занимал заметную долю секунды, а каждая неудачная попытка протоколировалась.
Page generated Jul. 22nd, 2025 07:16 am
Powered by Dreamwidth Studios