Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 03.01.2022
Сообщений: 17

Взлом пароля

07.01.2022, 18:58. Показов 3599. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На Васином любимом сайте обнаружилась уязвимость: недоброжелатель может узнать, сколько раз встречался каждый символ в пароле. И такая напасть, что сайт позволяет использовать в качестве символов пароля только латинские строчные и заглавные буквы, а также цифры. И никаких спецсимволов!
На сайте отсутствует защита от ботов: ни капч, ни двухфакторной аутентификации. Брутфорсь в удовольствие.
Вася придумал новый пароль, и ему интересно, насколько он надёжен при учёте этой уязвимости. Но сам он только новости про уязвимости читает, а код написать не может – просит Вас.
Нужно найти, с какой попытки зайдёт в его аккаунт взломщик, узнавший набор символов, которые встречаются в пароле, если будет перебирать все подходящие пароли в лексикографическом порядке.

Формат входных данных
В первой строке входного файла содержится натуральное число N – длина пароля (1 ⩽ N ⩽ 100).
Во вторую строку записана последовательность символов длины N, состоящая только из цифр и из букв латинского алфавита, как строчных, так и заглавных.

Формат выходных данных
В выходной файл необходимо вывести одно натуральное число – номер попытки, с которой будет введён правильный пароль, если перебирать все пароли в лексикографическом порядке, а попытки считать с единицы.
Так как число может получиться очень большим, то требуется вывести его по модулю 10^9 + 7.

Примеры

input.txt
5
bOjXg

output.txt
53

input.txt
10
fg6Fg10000

output.txt
60030

input.txt
5
JJJJJ

output.txt
1

Примечание
Лексикографический порядок – это отношение любых строк такое, что строка α предшествует строке B, если:
1. Любые первые m символов совпадают, а (m+1)-й символ строки α меньше (m+1)-го символа строки B. При этом считается, что буквы сравниваются согласно их кодам в ASCII, то есть цифры меньше заглавных латинских букв, а заглавные латинские буквы меньше строчных латинских букв.
Пример: GREW < GROW

2. Строка a является началом строки B
Пример: GROW < GROWN
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.01.2022, 18:58
Ответы с готовыми решениями:

Взлом шифра
нужна помощь с взломом шифра, вообще не понимаю как это сделать, важен только конечный результат, код не обязательно &quot;VT0ST3RS...

Взлом архива
Здравствуйте! Помогите пожалуйста дописать код для взлома архива в цикле While, у меня правильно не выходит( import string import...

Взлом пароля
Здравствуйте! У меня есть кое-какой сайт, который нужно взломать. При переходе на нужную мне страницу нужно ввести пароль из...

3
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
08.01.2022, 16:29
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
import itertools
#==============================================================================
def attempts_num( word ):
    word_sort = sorted( word )
    word_as_tup = tuple( word )
    word_perm_set = set( [ *itertools.permutations( word_sort ) ] )
    word_perm_set = sorted(word_perm_set)
    return word_perm_set.index(word_as_tup) + 1
#==============================================================================
while True:
    word = input( '-> ' )
    print( attempts_num( word ) )
    print()
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
09.01.2022, 13:10
100 факториал. ну норм))
1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
12.01.2022, 14:32
Оставлю это здесь. Может кому пригодится.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Номер по перестановке
from math import factorial
 
s = input()
ss = sorted(set(s))
n = len(s)
ans = 0
v = dict.fromkeys(ss, False) # visited dict
for i in range(n):
    j = 0
    while ss[j] < s[i]:
        if not v[ss[j]]:
            ans += factorial(n - i - 1)
        j += 1
    v[s[i]] = True
print(ans + 1)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Номер по перестановке с повторениями
from math import factorial, prod
from collections import Counter
from copy import deepcopy
 
s = input()
ss = sorted(set(s))
n = len(s)
v = dict.fromkeys(ss, False)  # visited dict
ans = 0
for i in range(n):
    j = 0
    d = Counter(s[i:])
    while ss[j] < s[i]:
        if not v[ss[j]]:
            z = deepcopy(d)
            z[ss[j]] -= 1
            p = prod(factorial(x) for x in z.values())
            res = factorial(n - i - 1) // p
            ans += res
        j += 1
    v[s[i]] = True
print(ans + 1)
Будет время приведу код в нормальный вид, а пока лень.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.01.2022, 14:32
Помогаю со студенческими работами здесь

Взлом угадайки
«Взломайте» guessing_game_2, дописав что-то в пустую строчку. Есть дополнительное условие: в команде, которую вы добавите, не должно быть...

Взлом планетной угадайки — 2
«Взломайте» guessing_game_2, дописав что-то в пустую строчку. Есть дополнительное условие: в команде, которую вы добавите, не должно быть...

Взлом планетной угадайки — 3
«Взломайте» guessing_game_3, дописав что-то в пустую строку. Пояснение: здесь пустая строка выбрана так, что нет возможности вывести ответ...

Взлом пароля
Здравствуйте, у меня стоит Win 7, имееться доступ к администратору компьютера и нужно узнать пароль на Неглавной учетной записи, НЕИЗМЕНЯЯ...

Взлом пароля на WI-FI
Здавствуйте,у меня в доме у соседей есть закрытый доступ к WI-FI ну тоесть защищеный паролем. Когда подкл с тел пишет что &quot;Защищено...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru