• XSS.stack #1 – первый литературный журнал от юзеров форума

помогите с base64

Вместо последней строчки, которая eval(...) вставьте код (саму строку eval закомментируйте)

Код:
base = base64.b64decode(eval('\x74\x72\x75\x73\x74'))
print base

и запускайте скрипт, он выдаст вам еще один похожий скрипт, там делаете теже самые действия и шаг за шагом снимаете каждый уровень обфускации. (на 20м шаге получите нужный скрипт какого-то бота в телеге)
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну для конкретного случая это довольно просто. Создаем класс, наследуем от ast.NodeTransformer, находим все ast.Call, у которых func - b64decode и аргумент - строковый литерал, забираем литерал, дебейзим, заменяем вызов на расбейзенную строку (ast.Str). Но все частные случаи для всех таких горе-обфускаторов сложно покрыть.
Даже набросал пример, не прадакшн реди, тк скорее всего будет много подводных камней, но для конкретного примитивного сорса даже работает (еще и нужно доставить модуль astunparse):
Python:
import astunparse
import base64
import ast

class Deobfuscator(ast.NodeTransformer):
    def deobfuscate(self, src: str) -> str:
        tree = ast.parse(src)
        tree = self.visit(tree)
        return astunparse.unparse(tree)

    def visit_Call(self, node: ast.Call):
        node.args = [self.visit(arg) for arg in node.args]
        
        if not isinstance(node.func, ast.Attribute):
            return node

        attrib: ast.Attribute = node.func
        if attrib.attr != 'b64decode':
            return node

        b64value = node.args[0].value
        decoded = base64.b64decode(b64value)
        return ast.Str(decoded)

if __name__ == "__main__":
    hello = base64.b64encode("Hello".encode()).decode()
    src = f"import base64; print(base64.b64decode('{hello}'))"
    print(src)

    deobfuscator = Deobfuscator()
    src = deobfuscator.deobfuscate(src)
    print(src)
Результат:
Код:
python deobf.py
import base64; print(base64.b64decode('SGVsbG8='))

import base64
print(b'Hello')
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх