В каждой шутке есть доля шутки
Dec. 20th, 2020 08:44 pmЗнаете такую шутку? Извините, Вы не можете использовать указанный пароль. Такой пароль уже использует пользователь Misha. Пожалуйста, придумайте другой пароль. (https://bash.im/quote/399755 - 2008 год)
Так вот, вы будете смеяться, но лет 30-35 до появления этой хохмы на баше подобная ситуация существовала в реальности на БЭСМ-6.
В цитате ниже "ШИФР" = аккаунт, "ЭК ..." - экстракод операции системного вызова установки/смены пароля (те, кто работал в MS DOS, увидят сходство с "INT 21h, AH = ...."), "СМ" - сумматор (регистр шириной 48 разрядов).
Трюк заключается в том, что хранились только 2 из 6 цифр пароля; оставшиеся 4 цифры определяли расположение записи о пользователе в системной таблице из 3*512 = 1536 элементов. Если при установке пароля вычисленное место было пустым, то запись переносилась туда, а если там уже была запись о пользователе с паролем, то возвращалась ошибка.
Подтверждение пароля заключалось в проверке, действительно ли в позиции, вычисленной по указанному паролю, хранится запись о пользователе с данным шифром (и что первые две указанные цифры пароля совпадают с хранящимися, разумеется).
Всего возможных паролей, таким образом, могло быть 1536*99 = 152064, но автоматически перебрать их было нереально, поскольку запуск процесса занимал заметную долю секунды, а каждая неудачная попытка протоколировалась.
Так вот, вы будете смеяться, но лет 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, но автоматически перебрать их было нереально, поскольку запуск процесса занимал заметную долю секунды, а каждая неудачная попытка протоколировалась.