【问题标题】:Are there any python libraries that can safely interpret obfusticated javascript strings?是否有任何 python 库可以安全地解释混淆的 javascript 字符串?
【发布时间】:2013-05-18 15:47:26
【问题描述】:

我希望能够在 javascript 代码可能是恶意的 Python 中对 javascript 字符串进行去混淆处理。有没有可用的库来做到这一点?

我开始构建自己的,但我很快意识到这是一个比我最初意识到的更大的任务。为了正确地做到这一点,我不仅必须安全地将所有 javascript 字符串函数映射到 python 函数(包括正则表达式),我还必须处理数组、循环、与循环相关的变量等。

编辑:这是我的意思的一个例子

str1 = 'sdfhsjkdfhIdhgjkdfNgjkdfhgjkdfPdhfgkdfjUhdfjkghdfkgjTdfhgjkdfgf';
str2 = str1.replace(/[a-z]/g, '');

str2 应该等于 "INPUT"

还有一个例子:

arr = ['-', 'M', '1', 'a', 'a', 'l', 's', 'i', 'r', 'c', 'f', 'i', '#', 'o', '[', 'u', '$', 's'];
str = ""
for (i=1; i<arr.length; i+=2) {
  str = str + arr[i];
}

str 应该是“恶意”

【问题讨论】:

  • @JakubM。我添加了两个示例,希望您能明白我的意思。
  • 只需在隔离环境中运行代码,让它为所欲为,观察结果。大量混淆代码依赖 eval。 (如今,现代浏览器环境可能是“安全的”;考虑 jsfiddle。)
  • 我尽量避免需要完整的 JavaScript 环境,如果可能的话。不过,这可能是唯一可行的选择。

标签: javascript python


【解决方案1】:

一个不错的选择是JSBeautifier,它可以处理大多数免费的混淆器(实际上,任何我知道的混淆器)。可以选择eval 使用 Rhino 的 Javascript,但默认情况下它被列入黑名单(不安全)。

披露:我与人合着了 JSBeautifier,特别是我编写了 Python 反混淆架构。顺便说一句,如果你发现一些 JSBeautifier 无法处理的 JS,可以考虑在项目 bugtracker 上打开一个问题 :)

【讨论】:

  • JSBeautifier 确实很棒,但是有bugs in python,它似乎并没有做我想做的每一件事。我将按照 Jakub 的建议创建一些示例。
  • 是的,我看到您在 21 小时前发布了错误报告。考虑到 web 版本通过原始评估(在 Python 版本中禁用)解包。我负责你的报告。
  • 太好了,谢谢。我意识到如果没有 javascript 解释器,在 python 中要困难得多。
  • 其实你可以开启evalbased插件,让Rhino产生和网页版一样的结果。但这会带来一个 JS 解释器,从而破坏了您提出问题的目的。特定的解包器了解混淆脚本的结构,不需要评估。
猜你喜欢
  • 2017-10-24
  • 1970-01-01
  • 2012-04-30
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
相关资源
最近更新 更多