我怀疑是恶意代码的 github 上混淆的 python 代码 手动操作

问题描述

我对任何编程语言都不太熟悉或没有经验,所以我有点被困在这里,想知道是否可以做任何事情。基本要点是,我在 GitHub 上浏览了一个用 python 编写的 selfbot,用于一个名为 discord 的应用程序。我想看一些东西,看看我是否能知道发生了什么。我最终犯了一个错误,在运行之前忘记检查脚本。稍后我查看它,发现它被混淆了。几个小时后,我的所有 3 个 discord 帐户都通过我的帐户令牌登录,绕过了 2fa 和位置登录验证,并且所有 3 个帐户都被 discord 迅速锁定。我运行的其他 python 脚本都没有被混淆,所以我认为这是最有可能的情况。我想知道是否有一种简单的方法可以对代码进行反混淆,以确定这是否是罪魁祸首并将其从 GitHub 中删除

这是它被混淆的网站。

https://development-tools.net/python-obfuscator/

因为超出了 StackOverflow 的字符数限制,所以不得不在这里发布代码

https://zerobin.net/?806880066f5b7356#wyixWYKBCtGhAThmhM4XSwGqVkeXqTaG744nENY/LpA=

这里是 github 仓库

https://github.com/zVilao/Luxuria-SelfBot-Nuker-Discord

解决方法

首先,我应该警告您:您正在处理的代码可能是恶意的,不要相信链中的任何链接 - 不是混淆网站,甚至我也不相信。自己验证一切。


看起来您可以简单地将最后一行中的 eval(compile()) 替换为 print() 以获取反混淆的代码,但是有混淆的 eval在前一行中,这可能是恶意的。


手动操作

我将使用一些真正简单的示例代码:

print('foobar')

如我们所料,将其上传到站点会产生 8 行混淆的 Python 代码。为安全起见,我不会将其全部发布在这里,一次只发布一篇。

首先,有些字符串包含 \x 转义符而不是字符本身。让我们提取它们,看看它们包含什么:

>>> joy = '\x72\x6f\x74\x31\x33'
>>> joy
'rot13'
>>> 
>>> '\x6d\x61\x67\x69\x63'
'magic'
>>> '\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65'\
... '\x28\x6c\x6f\x76\x65\x2c\x20\x6a\x6f\x79\x29'
'codecs.decode(love,joy)'
>>> '\x67\x6f\x64'
'god'
>>> '\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65'\
... '\x28\x64\x65\x73\x74\x69\x6e\x79\x2c\x20\x6a\x6f\x79\x29'
'codecs.decode(destiny,joy)'
>>> 
>>> '\x74\x72\x75\x73\x74'
'trust'

(为了避免将分号隐藏在右边距之外,我将两行长行分开。)

ROT13 是一种基本的字母替换密码。让我们继续解密:

>>> love = 'DbW2Mi'
>>> destiny = 'pcPt=='
>>> import codecs
>>> codecs.decode(love,joy)
'QoJ2Zv'
>>> codecs.decode(destiny,joy)
'cpCg=='

现在我们可以将所有这些放在一起并解码:

>>> magic = 'cHJpbn'
>>> god = 'b2Jhci'
>>> trust = magic + 'QoJ2Zv' + god + 'cpCg=='
>>> import base64
>>> base64.b64decode(trust)
b"print('foobar')\n"

所以我们的原始代码又回来了,然后在最后一行编译和评估。