единый пароль-секретную последовательность действий для разных сайтов или устройств.что бы предоставить доступ ко всему сразу за одну успешную атаку?
Люди очень плохо запоминают длинные пароли и как правило хранят их небрежно.


Детали по разбиениям:0010
[0, 0, 10] → 236,992 комбинаций
[0, 0, 1, 0] → 48,278,656 комбинаций
Детали по разбиениям:1881172
[18, 8, 11, 72] → 82,944 комбинаций
[18, 81, 1, 72] → 20,352 комбинаций
[18, 81, 17, 2] → 18,816 комбинаций
[1, 8, 8, 11, 72] → 13,188,096 комбинаций → исключено, за пределами 1й итерации
[1, 8, 81, 1, 72] → 3,235,968 комбинаций → исключено, за пределами 1й итерации
[1, 8, 81, 17, 2] → 2,991,744 комбинаций → исключено, за пределами 1й итерации
[18, 8, 1, 1, 72] → 9,707,904 комбинаций → исключено, за пределами 1й итерации
[18, 8, 1, 17, 2] → 8,975,232 комбинаций → исключено, за пределами 1й итерации
[18, 8, 11, 7, 2] → 16,257,024 комбинаций → исключено, за пределами 1й итерации
[18, 81, 1, 7, 2] → 3,988,992 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 1, 1, 72] → 1,543,556,736 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 1, 17, 2] → 1,427,061,888 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 11, 7, 2] → 2,584,866,816 комбинаций → исключено, за пределами 1й итерации
[1, 8, 81, 1, 7, 2] → 634,249,728 комбинаций → исключено, за пределами 1й итерации
[18, 8, 1, 1, 7, 2] → 1,902,749,184 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 1, 1, 7, 2] → 302,537,120,256 комбинаций → исключено, за пределами 1й итерации
Надежность , устойчивость к взлому увеличится? да. После двух подсматриваний остается 80 к вариантов.
Получил вызов:этот порядок предлагает компьютер но я не увидел у вас в действиях на что он влияет... это изменение порядка колонок в сгенерированных таблицах? плохой не показательный пример, нужно было что то типа 2 4 1 3, тогда было бы яснее.
1234
Вот вы подсмотрели валидный пароль-ответ (можете посмотреть на пример который я давал демону). Ну ладно 2 (вы такой хитрый хакер). Вот получили 80 тыс возможных формул. Вот начинаете их подставлять.
«Кто угодно может изобрести такой алгоритм шифрования, который он сам не сможет взломать; гораздо труднее изобрести такой, который не сможет взломать никто другой» Брюс Шнайер "Secrets and Lies", 2000 год
Есть 60 трл дверей и им соответствующих ключей. А правило изготовления - одно. На всю жизнь хватит.
Вот: Я пользователь. Я выбрал пароль A1+A1; A1*A1; A1-A2(abs); A1*A2 (а мог бы меньше или больше действий и ячейки самые разные) и сохранил его. Начал работу. Получил вызов:
1234
A 0123
B 4567
C 8901
D 2345
В уме я вычислил: 0+0=0; 0*0=0; 0-1=1; 0*1=0
И в поле ввода ввел полученный ключ: 0010 И получил доступ.
На следующий день прихожу, начинаю работать и получаю новый вызов:
1234
A 9876
B 5432
C 1098
D 7654
решаю: 9+9=18; 9*9=81; 9-8=1; 9*8=72
В окне ключа ввожу: 1881172 И получаю доступ.
Do you understand now?
Детали по разбиениям:0010
[0, 0, 10] → 236,992 комбинаций
[0, 0, 1, 0] → 48,278,656 комбинаций
Детали по разбиениям:1881172
[18, 8, 11, 72] → 82,944 комбинаций
[18, 81, 1, 72] → 20,352 комбинаций
[18, 81, 17, 2] → 18,816 комбинаций
[1, 8, 8, 11, 72] → 13,188,096 комбинаций → исключено, за пределами 1й итерации
[1, 8, 81, 1, 72] → 3,235,968 комбинаций → исключено, за пределами 1й итерации
[1, 8, 81, 17, 2] → 2,991,744 комбинаций → исключено, за пределами 1й итерации
[18, 8, 1, 1, 72] → 9,707,904 комбинаций → исключено, за пределами 1й итерации
[18, 8, 1, 17, 2] → 8,975,232 комбинаций → исключено, за пределами 1й итерации
[18, 8, 11, 7, 2] → 16,257,024 комбинаций → исключено, за пределами 1й итерации
[18, 81, 1, 7, 2] → 3,988,992 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 1, 1, 72] → 1,543,556,736 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 1, 17, 2] → 1,427,061,888 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 11, 7, 2] → 2,584,866,816 комбинаций → исключено, за пределами 1й итерации
[1, 8, 81, 1, 7, 2] → 634,249,728 комбинаций → исключено, за пределами 1й итерации
[18, 8, 1, 1, 7, 2] → 1,902,749,184 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 1, 1, 7, 2] → 302,537,120,256 комбинаций → исключено, за пределами 1й итерацииA1+A1 → A1*A1 → A1-A2 → A1*A2✅ Предварительная обработка завершена: 768 валидных операций.
Проверяем разбиение: [18, 8, 11, 72]
❌ Нет операций для (0, 8)
Проверяем разбиение: [18, 81, 1, 72]
✅ Все пары найдены. Проверяем комбинации...
✅ РЕШЕНИЕ НАЙДЕНО для разбиения [18, 81, 1, 72]
Операции: A1+A1 → A1*A1 → A1-A2 → A1*A2
mat1: [0, 0, 1, 0] → 0010
mat2: [18, 81, 1, 72] → 1881172
Process finished with exit code 0def find_operations_v2():
# Матрицы
mat1 = [
[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 0, 1],
[2, 3, 4, 5]
]
mat2 = [
[9, 8, 7, 6],
[5, 4, 3, 2],
[1, 0, 9, 8],
[7, 6, 5, 4]
]
# Единая функция для вычисления результата операции
def apply_op(a, b, op):
if op == 0:
return a + b
elif op == 1:
return abs(a - b)
else: # op == 2
return a * b
# Все возможные операции: (r1,c1,r2,c2,op) → результаты (res1, res2)
from collections import defaultdict
all_ops = [] # список всех валидных операций
result_map = defaultdict(list) # (res1, res2) → операции
for r1 in range(4):
for c1 in range(4):
for r2 in range(4):
for c2 in range(4):
for op in range(3):
res1 = apply_op(mat1[r1][c1], mat1[r2][c2], op)
res2 = apply_op(mat2[r1][c1], mat2[r2][c2], op)
if res1 > 81 or res2 > 81:
continue
all_ops.append((r1, c1, r2, c2, op))
result_map[(res1, res2)].append((r1, c1, r2, c2, op))
print(f"✅ Предварительная обработка завершена: {len(all_ops)} валидных операций.")
# Целевой результат для mat1
target1 = [0, 0, 1, 0]
# Возможные разбиения "1881172"
possible_splits = [
[18, 8, 11, 72],
[18, 81, 1, 72],
[18, 81, 17, 2]
]
labels = "ABCD"
# Перебираем все разбиения
for target2 in possible_splits:
print(f"\n Проверяем разбиение: {target2}")
steps = list(zip(target1, target2)) # [(0,18), (0,8), (1,11), (0,72)] и т.д.
candidates = []
valid = True
for t1, t2 in steps:
key = (t1, t2)
if key not in result_map:
print(f" ❌ Нет операций для ({t1}, {t2})")
valid = False
break
candidates.append(result_map[key])
if not valid:
continue
print(f" ✅ Все пары найдены. Проверяем комбинации...")
# Перебираем все 4-операционные последовательности
from itertools import product
count = 0
for ops_seq in product(*candidates):
count += 1
# Проверим результаты
res1_check = []
res2_check = []
for (r1, c1, r2, c2, op) in ops_seq:
res1_check.append(apply_op(mat1[r1][c1], mat1[r2][c2], op))
res2_check.append(apply_op(mat2[r1][c1], mat2[r2][c2], op))
if res1_check == target1 and res2_check == target2:
print(f"✅ РЕШЕНИЕ НАЙДЕНО для разбиения {target2}")
ops_str = []
for (r1, c1, r2, c2, op) in ops_seq:
cell1 = f"{labels[r1]}{c1+1}"
cell2 = f"{labels[r2]}{c2+1}"
op_char = "+" if op == 0 else "-" if op == 1 else "*"
ops_str.append(f"{cell1}{op_char}{cell2}")
print(" Операции:", " → ".join(ops_str))
print(" mat1:", res1_check, "→", ''.join(map(str, res1_check)))
print(" mat2:", res2_check, "→", ''.join(map(str, res2_check)))
return
print(f" ❌ Решений для этого разбиения не найдено.")
print("\n❌ Ни одно разбиение не дало решения.")
# Запуск
find_operations_v2()---1 2 3 4 1 2 3 4
-------------- ------------
A [2, 7, 0, 4] [1, 9, 4, 2]
B [0, 3, 6, 5] [5, 3, 0, 9]
C [0, 7, 8, 3] [4, 6, 2, 0]
D [4, 5, 1, 2] [1, 7, 8, 2]
-----------------------------
511427 1845
Детали по разбиениям:
[10, 4, 25, 5] → 592,800 комбинаций
[10, 42, 5, 5] → 190,000 комбинаций
[1, 0, 4, 25, 5] → 59,716,800 комбинаций
[1, 0, 42, 5, 5] → 19,140,000 комбинаций
[10, 4, 2, 5, 5] → 533,520,000 комбинаций
[1, 0, 4, 2, 5, 5] → 53,745,120,000 комбинаций
Детали по разбиениям:0010
[0, 0, 10] → 236,992 комбинаций
[0, 0, 1, 0] → 48,278,656 комбинаций
Детали по разбиениям:1881172
[18, 8, 11, 72] → 82,944 комбинаций
[18, 81, 1, 72] → 20,352 комбинаций
[18, 81, 17, 2] → 18,816 комбинаций
[1, 8, 8, 11, 72] → 13,188,096 комбинаций → исключено, за пределами 1й итерации
[1, 8, 81, 1, 72] → 3,235,968 комбинаций → исключено, за пределами 1й итерации
[1, 8, 81, 17, 2] → 2,991,744 комбинаций → исключено, за пределами 1й итерации
[18, 8, 1, 1, 72] → 9,707,904 комбинаций → исключено, за пределами 1й итерации
[18, 8, 1, 17, 2] → 8,975,232 комбинаций → исключено, за пределами 1й итерации
[18, 8, 11, 7, 2] → 16,257,024 комбинаций → исключено, за пределами 1й итерации
[18, 81, 1, 7, 2] → 3,988,992 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 1, 1, 72] → 1,543,556,736 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 1, 17, 2] → 1,427,061,888 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 11, 7, 2] → 2,584,866,816 комбинаций → исключено, за пределами 1й итерации
[1, 8, 81, 1, 7, 2] → 634,249,728 комбинаций → исключено, за пределами 1й итерации
[18, 8, 1, 1, 7, 2] → 1,902,749,184 комбинаций → исключено, за пределами 1й итерации
[1, 8, 8, 1, 1, 7, 2] → 302,537,120,256 комбинаций → исключено, за пределами 1й итерации
Ну ладно 80 к комбинаций. как обойти защиту от брут-форса которая уже естьв моей программе? 3 ошибки бан 15 мин, 5 ошибок 30 мин, больше полный бан, пройдите аутентиф другим способом.
Задача мне не дается потому что я и не собирался ее решать.

Не работает ваш алгоритм - ищите другой. Пароль одинаковый.Сначала докажите, что нет B3*C2 или B3*A2