![]() |
Reversing Python (Part 7)
Данный таск выполнял мой колега и друг Антон и разбор будет с его слов. Мои познания ещё далеки от гуру в питоне, но синтаксис я уже изучил. Поэтому, в то время пока @clevergod штурмовал стеганографию, я разбирал строки кода небольшого скрипта. Python: Код:
#!/usr/bin/python2.7Задание:Reversing Python Points: 15 Описание: В этот раз змея запуталась настолько, что не понятно, где ее хвост, а где голова. Все, что тебе надо - это разобраться в этой путанице и найти ее голову. Говорят, что длина змеи 10 метров. 10 метров как можно догадаться - длина флага - 10 символов. https://forum.antichat.xyz/attachmen...8c128d3c16.png При запуске скрипт генерирует случайное число с помощью random.randint(0, 0x3e8) и выводит в строке "Your number is ..." Естественно были мысли что флаг как-то связан с этим числом, но оказалось что оно здесь лишь для отвлечения внимания. Пришла умная мысль что разбирать работу скрипта нужно с конца... Точнее со строк которые запрашивают "username" Я немного схитрил и указал в коде вывести username при любом неправильном вводе Python: Код:
''''https://forum.antichat.xyz/attachmen...167f1f657b.png Скрипт выдаёт только первый символ пароля - "u" Значит надо думать шире... https://forum.antichat.xyz/attachmen...ef53a614e9.png Первая буква username "a" является переменной Код:
" a ='\x61' "Всего в скрипте 4 основных переменных: chains, keys, lock_pick и lock. Password и Auth лишь для отвлечения внимания и по факту нигде не используются. lock_pick генерирует случайное число, а lockсначала умножает его на 2, затем добавляет 10, делит на 2 и вычитает исходное число lock_pick. На примере 169 проведём эти вычисления - Код:
"((169*2)+10)/2-169 = 5"Далее разберем цикл для keys и chains. Каждый из них по своему модифицирует указанные ранее значения в массивах keys и chains. ^ - знак карет - Бинарный "Исключительное ИЛИ" оператор копирует бит только если бит присутствует в одном из операндов, но не в обоих сразу. Например первый знак в переменной keys: 5 ^ 0x70 = 117, а str(chr(117)) это "u" Можно по буквам перебрать, а можно цикл написать... кому как удобнее) Включайте мозг и пробуйте... Тем, кто пропустил что-то, задач было 11: Brain, Finde the cat, FTP-authentication, Reversing Python, Steganography 2, Steganography 3, Steganography 4, Steganography 5, WTFilee, Command & Control, Command & Control2 |
| Время: 22:59 |