某网页gpt的JS逆向

原网页网址 (base64)

在线解码

bash 复制代码
aHR0cHM6Ly9jbGF1ZGUzLmZyZWUyZ3B0Lnh5ei8=

逆向效果图

调用代码(复制即用)

把倒数第三行换成下面的base64解码

bash 复制代码
aHR0cHM6Ly9jbGF1ZGUzLmZyZWUyZ3B0Lnh5ei9hcGkvZ2VuZXJhdGU=
python 复制代码
import hashlib
import time
import requests
def generate_signature(timestamp, message):
    # 假设PUBLIC_SECRET_KEY未定义,我们使用空字符串
    public_secret_key = ""
    # 构造签名字符串
    signature_string = f"{timestamp}:{message}:{public_secret_key}"
    # 计算哈希值并返回十六进制字符串
    return digest_message(signature_string)
def digest_message(message):
    # 使用hashlib计算SHA-256哈希值
    hash_object = hashlib.sha256(message.encode('utf-8'))
    # 获取十六进制形式的哈希值
    hash_hex = hash_object.hexdigest()
    return hash_hex

while True:
    message=input('输入')
    timestamp = str(int(time.time() * 1000))  # 将时间戳转换为毫秒
    signature = generate_signature(timestamp, message)
    data={"messages": [
        {
          "role": "user",
          "content": message
        }
      ],
      "time": timestamp,
      "sign": signature
    }
    url='https:/*****/api/generate'   #base64解码就知道
    gu = requests.post(url,json=data).text
    print(gu)

一个时间戳,一个签名sign,主要是sign加密

sign

扒一下JS,一共有三段

generateSignature 函数:

javascript 复制代码
const generateSignature = async r=>{
    const {t: e, m: t} = r
      , n = {}.PUBLIC_SECRET_KEY || ""
      , a = `${e}:${t}:${n}`;
    return await digestMessage(a)
}

这是一个异步函数,接收一个参数 r,参数 r 包含 t 和 m 两个属性。就是r的t和m赋值给e和t。

它使用 PUBLIC_SECRET_KEY 常量(如果已定义)或空字符串作为签名的一部分。

使用 e(可能是时间戳或某种类型)和 t(消息内容)以及 PUBLIC_SECRET_KEY 来构造一个字符串 a。

然后调用 digestMessage 函数来生成签名。

digestMessage 函数:

javascript 复制代码
async function digestMessage(r) {
    if (typeof crypto < "u" && crypto?.subtle?.digest) {
        const e = new TextEncoder().encode(r)
          , t = await crypto.subtle.digest("SHA-256", e);
        return Array.from(new Uint8Array(t)).map(a=>a.toString(16).padStart(2, "0")).join("")
    } else
        return sha256Exports.sha256(r).toString()
}

这也是一个异步函数,接收一个参数 r。

首先检查 crypto 对象和 subtle 属性以及 digest 方法是否存在。这是Web Cryptography API的一部分,用于执行加密操作。

如果Web Cryptography API可用,它会使用 SHA-256 算法对传入的字符串 r 进行哈希处理。

使用 TextEncoder 将字符串编码为UTF-8,然后使用 crypto.subtle.digest 进行哈希计算。

将哈希结果转换为十六进制字符串,每个字节用两个十六进制数字表示,不足的前面补零。

如果Web Cryptography API不可用,它会使用 sha256Exports.sha256 函数来生成哈希值。

说白了就是计算输入字符串的 SHA-256 哈希值,然后转16进制输出

生成sign

定义了两个变量 $ 和 V。

$ 是当前时间戳,使用 Date.now() 获取。

V 是一个异步操作,使用 fetch API 发送一个POST请求到 /api/generate。

请求体是一个JSON字符串,包含 messages、time、pass 和 sign 属性。

messages 可能是一个消息数组,time 是当前时间戳,pass 可能是一个密码或令牌。

sign 是通过调用 generateSignature 函数生成的签名,签名的生成依赖于当前时间戳和 messages 数组的最后一个元素的内容(如果存在)。

用python代码实现生成sign

python 复制代码
import hashlib
import time
def generate_signature(timestamp, message):
    # 假设PUBLIC_SECRET_KEY未定义,我们使用空字符串
    public_secret_key = ""
    # 构造签名字符串
    signature_string = f"{timestamp}:{message}:{public_secret_key}"
    # 计算哈希值并返回十六进制字符串
    return digest_message(signature_string)
def digest_message(message):
    # 使用hashlib计算SHA-256哈希值
    hash_object = hashlib.sha256(message.encode('utf-8'))
    # 获取十六进制形式的哈希值
    hash_hex = hash_object.hexdigest()
    return hash_hex
timestamp = str(int(time.time() * 1000))  # 将时间戳转换为毫秒
message = "Hello World!"
signature = generate_signature(timestamp, message)
print(signature)
相关推荐
jiangliushi620 小时前
GPT-6.1 Sol 免费用:PowerShell 装 Codex 报“禁止运行脚本 npm.ps1”?一条命令解决
前端·gpt·npm
嘎嘎风1 天前
MiniMind 学习笔记之 25 Web UI 与 LLaMA-Factory:两条“不写代码”的路径
gpt·llm·源码阅读
feasibility.2 天前
具身智能的进化分水岭:GPT-6-Astra踏进能力门,却卡在实用门——商汤联合团队开源RoboRSI:Harness递归改进能否填平这道落地鸿沟?
人工智能·gpt·机器人·具身智能·vla·harness·rsi
Eloudy2 天前
全文 - Astranomy: An empirical study of GPT-6 Astra as a native robot policy
gpt
jiangliushi62 天前
GPT-6.1 Sol 免费用:pip install 太慢、超时?换清华镜像,再让 Codex 帮你写脚本
gpt·pip
jiangliushi62 天前
GPT-6.1 Sol 免费用:Windows 装完 Codex 提示“不是内部或外部命令”?三步加好 PATH
windows·gpt
TMT星球2 天前
觅蜂联合发起具身评测平台RoboColiseum,GPT-6、Opus 5.5、Gemini 4同台决战!
人工智能·gpt
一缕82年的清风3 天前
从 Claude Opus 5.5 到 GPT-6.1 Sol:自适应慢思考时代,架构师该如何重构企业智能体?
gpt·claude
vibecoding773 天前
Codex 分层用模型完整教程:让 GPT-6.1 Sol 拍板、GPT-6 Luna 跑侦察
人工智能·gpt
Maynor9963 天前
WorkBuddy 一键接通 gpt-6.1-sol:MomoAI / TryAllAPI 把最新模型接到桌面
人工智能·gpt·ai·大模型·编程工具