【问题标题】:Translating Javascript Function to Python [closed]将 Javascript 函数转换为 Python [关闭]
【发布时间】:2020-10-17 16:11:57
【问题描述】:

我远不了解 javascript,但我正在尝试解决解码函数并将其转换为 python。在站点代码中,它生成一个长度为 100 个字符的字符串,该字符串被插入一个名为 decode 的函数中,如此处所示,并返回一个长度为 96 个字符的字符串。我已经开始尝试将其转换为可用的 python 函数。

decode.call(undefined, "TaYWuqsVvO1zjYWnzcZaSyOucBGnvoz7Jiq2RLZBvTk35uaNHlYrwFb8V2fqQqBjVOGPyuu4WD1dMXeX1Si1GqVIWJYXey75PQMS");

function decode(message) {
  /** @type {number} */
  var offset = 71 + 28 * 75 + 14 + 38;
  if (this.angular.isDate(offset)) {
    console.log("Offset derived as: {", offset, "}");
  }
  return _.replace(message, /./g, function(char, increment) {
    return String.fromCharCode((char.charCodeAt(0) * increment + offset) % 77 + 48);
  });
}
;

Javascript 不是我的母语,因此对不同函数调用的任何帮助和解释都会有很大帮助。我已经明白,在这种情况下,我们的偏移量是一个整数值 2223。然后我们获取我们的消息并替换它的内容。但是我对增量函数和/./g 部分有点困惑。

【问题讨论】:

  • 用回调查看re.sub

标签: javascript python angular encryption obfuscation


【解决方案1】:

您的代码中并不清楚this.angular 的含义,但您似乎对字符串替换最感兴趣。在 python 中,您可以执行以下操作:

def decode(s):
    offset = 71 + 28 * 75 + 14 + 38;
    return "".join(chr((ord(a) * increment + offset)  % 77 + 48) for increment, a in enumerate(s) )

p = decode("TaYWuqsVvO1zjYWnzcZaSyOucBGnvoz7Jiq2RLZBvTk35uaNHlYrwFb8V2fqQqBjVOGPyuu4WD1dMXeX1Si1GqVIWJYXey75PQMS")

这使得p 等于:

's:>Dy@pe:8BGNueGAhvnQsRohGqRldO1`sk^@NFG=^BK<CoUj^cMB4^sPtfS|N1^K[hUhgBoAJzEss><l>eeI_wKGOusZ11D_vs]'

这与我在 javascript 中得到的值相同。

chr()ord()String.fromCharCode()char.charCodeAt() 大致相同。您可以使用enumerate 获取increment 和值。之后剩下的就是数学了。

【讨论】:

  • 谢谢,我很欣赏语言之间的翻译。
猜你喜欢
  • 1970-01-01
  • 2013-02-01
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 2012-05-09
  • 2011-04-01
相关资源
最近更新 更多