【逆向系列】25-某歌翻译-算法改写

admin 2024年10月20日00:44:28评论12 views字数 3217阅读10分43秒阅读模式

免责声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在微信公众号【小白逆向】联系作者立即删除!

前言

此次将对某歌翻译进行逆向处理,其中报错网页右键翻译。在网页中的翻译将会对其进行逆向处理,并且会将其js算法改写为python算法,实现从python中直接调用,不需要使用execjs来进行调用。这其中的两个版本源代码都会进行开源处理。
某歌翻译的难点在于tkk的加密处理。
声明:!!!所有代码测试,需要蹄子测试!!!

逆向目标-某歌翻译

逆向首页:aHR0cDovL3RyYW5zbGF0ZS5nb29nbGUuY29tLw==

参数逆向

  1. 在chrome浏览器中网页中,选择右击翻译为中文,同时开启浏览器抓包

    【逆向系列】25-某歌翻译-算法改写

  2. 通过发起程序,ws.translate定位到加密参数点

    【逆向系列】25-某歌翻译-算法改写

    【逆向系列】25-某歌翻译-算法改写

  3. 断下断点,提取加密函数Xp、zo等相关函数

    【逆向系列】25-某歌翻译-算法改写

  4. 提取出来的结果全部函数:(函数名可能不一样)

    【逆向系列】25-某歌翻译-算法改写

tkk加密参数获取

tkk加密参数是每天发生变化的,但是以往的tkk都是可以使用的。

【逆向系列】25-某歌翻译-算法改写

【逆向系列】25-某歌翻译-算法改写

js调用测试

相关代码:

# **************************************
# --*-- coding: utf-8 --*--
# @Time    : 2023-07-05
# @Author  : white
# @FileName: google_translate.py
# @Software: PyCharm
# **************************************
import execjs
import requests
from urllib.parse import quote

url = "https:/脱敏处理/translate_a/t"
headers = {
    "Content-Type""脱敏处理",
    "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

params = {脱敏处理}
data = {
    "q": ["你应该是一场梦,我应该是一阵风。"]
}

tk = execjs.compile(open("google.js", encoding="utf-8").read()).call("white""".join(data["q"]))
params["tk"] = tk
data = "q=" + "&q=".join(data["q"])
data = quote(data).replace("%3D""=").replace("%26""&")
res = requests.post(url=url, headers=headers, data=data, params=params)
print(res.text)

成功示例图

【逆向系列】25-某歌翻译-算法改写

js算法改写为python代码

基于js改写的算法,可以适用于任何一个tkk加密参数

class GoogleEncryption:
    def __init__(self, Vp="469040.3323378158"):
        self.Vp = Vp

    def _c_int(self, x, nbits=32):
        return (x & ((1 << (nbits - 1)) - 1)) - (x & (1 << (nbits - 1)))

    def _c_uint(self, x, nbits=32):
        return x & ((1 << nbits) - 1)

    def _zo(self, data):
        b = list()
        for d in range(len(data)):
            e = ord(data[d])
            if 128 > e:
                b.append(e)
            else:
                if 2048 > e:
                    b.append(e >> 6 | 192)
                else:
                    if 55296 == (e & 64512and d + 1 < len(data) and 56320 == (len(data) + 1) & 64512:
                        d += 1
                        e = 65536 + ((e & 1023) << 10) + (ord(data[d]) & 1023)
                        b.append(e >> 18 | 240)
                        b.append(e >> 12 & 63 | 128)
                    else:
                        b.append(e >> 12 | 224)
                        b.append(e >> 6 & 63 | 128)
                    b.append(e & 63 | 128)
        return b

    def _Up(self, a, b):
        for c in range(0, len(b) - 23):
            d = b[c + 2]
            d = (ord(d[0]) - 87if "a" <= d else int(d)
            wa = self._c_uint(a)
            d = wa >> d if "+" == b[c + 1else wa << d
            a = (a + d & 4294967295if "+" == b[c] else a ^ d
        return self._c_int(a)

    def Wp(self, data: str):
        b = self.Vp.split(".")
        c = int(b[0])
        a = self._zo(data)
        d = c
        for e in range(len(a)):
            d += a[e]
            d = self._Up(d, "+-a^+6")
        d = self._Up(d, "+-3^+b+-f")
        d ^= self._c_int(int(b[1]))
        if 0 > d:
            d = (d & 2147483647) + 2147483648
        b = int(d % 1E6)
        return f"{b}.{b ^ c}"

成功示例图

【逆向系列】25-某歌翻译-算法改写

相关代码已开源:
https://github.com/puboop/reverse/

原文始发于微信公众号(律图拟项):【逆向系列】25-某歌翻译-算法改写

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月20日00:44:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【逆向系列】25-某歌翻译-算法改写https://cn-sec.com/archives/2029713.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息