某網頁gpt的JS逆向

原網頁網址 (base64)

在線解碼

aHR0cHM6Ly9jbGF1ZGUzLmZyZWUyZ3B0Lnh5ei8=

逆向效果圖

調用代碼(復制即用)

把倒數第三行換成下面的base64解碼

aHR0cHM6Ly9jbGF1ZGUzLmZyZWUyZ3B0Lnh5ei9hcGkvZ2VuZXJhdGU=
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_hexwhile 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).textprint(gu)

一個時間戳,一個簽名sign,主要是sign加密

sign

扒一下JS,一共有三段

generateSignature 函數

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 函數

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("")} elsereturn 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

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)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38282.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38282.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38282.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言+ MSSQL技術開發的 PACS系統源碼:CT后處理技術之仿真內鏡CTVE

C語言 MSSQL技術開發的 PACS系統源碼&#xff1a;CT后處理技術之仿真內鏡CTVE 仿真內窺鏡VE VE是利用醫學影像作為原始數據&#xff0c;融合圖像處理、計算機圖形學、科學計算可視化、虛擬現實技術&#xff0c;模擬傳統光學內鏡的一種技術。 又叫做腔內重建技術&#xff0c;是…

試用筆記之-匯通來電顯示軟件

首先匯通來電顯示軟件下載 http://www.htsoft.com.cn/download/httelephone.rar

平衡樹專題Splay

寫在前面&#xff1a; 部分來自孫寶&#xff08;Steven24&#xff09;的博客&#xff0c;表示感謝。 認識 什么是Splay 就是BST的一種&#xff0c;整體效率是很高的&#xff0c;均攤的次數是O(logn)級別的。 基本操作就是把節點旋轉到BST的root&#xff0c;從而改善BST的平…

為適配kubelet:v0.4 安裝指定版本的docker

系統版本信息 cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 0.4 版本的kubelet 報錯信息記錄 E0603 19:00:38.273720 44142 kubelet.go:734] Error syncing pod: API error (400): {"message": "starting container with non-empty reque…

免交互簡單操作

免交互 交互&#xff1a;我們發出指令控制程序的運行&#xff0c;程序在接收到指令后按照指令的效果作出對應的反應 免交互&#xff1a;間接的&#xff0c;通過第三方的方式把指令傳給程序&#xff0c;不用直接下達指令 Here Document免交互 這是命令行格式&#xff0c;也可…

不用找了!這個軟件自帶各行業話術,客服效率飛躍

有一款客服工具軟件&#xff0c;不但能吸附聊天窗口&#xff0c;實現圖文視頻話術的一鍵發送&#xff0c;還內置了多行業的優質客服話術模板&#xff0c;允許用戶直接下載使用&#xff0c;快速構建起適合自身企業的專業客服知識庫。 前言 在今天的快節奏商業環境中&#xff0c…

Linux shell腳本編程

一、sehll簡介&#xff1a; 用戶通過shell向計算機發送指令的 計算機通過shell給用戶返回指令的執行結果 1.1、通過shell編程可以達到的效果 提高工作的效率 可以實現自動化 1.2、sehll腳本編寫的流程 1、用vi/vim創建一個.sh的文件 2、在文件中進行開發 3、個文件賦予可執行權…

CesiumJS【Basic】- #047 繪制閃爍線(Entity方式)- 需要自定義著色器

文章目錄 繪制閃爍線(Entity方式)- 需要自定義著色器1 目標2 代碼2.1 main.ts繪制閃爍線(Entity方式)- 需要自定義著色器 1 目標 使用Entity方式繪制閃爍線 2 代碼 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium<

【如何使用RSA簽名驗簽】python語言

文章目錄 簽名方法異步同步通知數據驗簽生活號響應數據驗簽同步響應數據驗簽 &#x1f308;你好呀&#xff01;我是 山頂風景獨好 &#x1f388;歡迎踏入我的博客世界&#xff0c;能與您在此邂逅&#xff0c;真是緣分使然&#xff01;&#x1f60a; &#x1f338;愿您在此停留的…

作業7.2

用結構體數組以及函數完成: 錄入你要增加的幾個學生&#xff0c;之后輸出所有的學生信息 刪除你要刪除的第幾個學生&#xff0c;并打印所有的學生信息 修改你要修改的第幾個學生&#xff0c;并打印所有的學生信息 查找你要查找的第幾個學生&#xff0c;并打印該的學生信息 1 /*…

idea常用問題記錄

文章目錄 1.ant構建報錯編譯錯誤1.1 解決辦法 1.ant構建報錯編譯錯誤 Compile failed;xxx 1.1 解決辦法

Python系統教程02

鞏固 input()輸出函數 回顧 1 、 input()函數&#xff1a; 在 input()函數輸入時&#xff0c;輸入的內容一定為字符串類型。 2 、條件分支語句&#xff1a; 每一個 if 語句可以看成一個個體&#xff0c;elif 和 else 都是一個 if 個體的一部分&#xff0c;每一個 if 個體 運…

51單片機外部中斷(按鍵識別)

歡迎入群共同學習交流 時間記錄&#xff1a;2024/7/2 一、電路原理圖 51單片機包含INT0、INT1兩個外部中斷接口 二、知識點介紹 1.中斷寄存器位介紹 &#xff08;1&#xff09;TCON定時控制寄存器&#xff0c;位0&#xff08;IT0&#xff09;中斷INT0請求信號選擇位&#x…

WordPress主題開發進群付費主題v1.1.2 多種引流方式

全新前端UI界面&#xff0c;多種前端交互特效讓頁面不再單調&#xff0c;進群頁面群成員數&#xff0c;群成員頭像名稱&#xff0c;每次刷新頁面隨機更新不重復&#xff0c;最下面評論和點贊也是如此隨機刷新不重復 進群頁面簡介&#xff0c;群聊名稱&#xff0c;群內展示&…

注意!年齡越大,社交圈子越窄?其實這是老人的理性選擇!數學家告訴你:何時該跳槽,何時該堅守!你必須知道的三個智慧:讓你的人生更加精彩!

我們到底應該在什么情況下探索新事物&#xff0c;什么情況下專注于已有的東西呢&#xff1f;本質上來說&#xff0c;這個問題就是在詢問&#xff0c;你究竟應該耗費精力去探索新的信息&#xff0c;還是專注從既有的信息中獲取收獲&#xff1f; 有人采訪了臨終的老人&#xff0c…

中國三大平原矢量示意圖分享

我們在《中國地勢三級階梯示意圖分享》、《中國四大高原矢量示意圖分享》和《中國主要山脈矢量示意圖分享》等文中&#xff0c;為你分享過中國地勢相關的矢量示意圖。 現在再為你分享一下我國東北平原、華北平原和長江中下游平原的矢量示意圖&#xff0c;這三大平原均位于我國…

隨想錄總結 Day 77

隨想錄總結 Day 77 回憶75天的做題時間&#xff0c;差點沒堅持下來的有兩個時間點&#xff0c;一個是在前20天&#xff0c;很多時候二叉樹這種基礎題&#xff0c;前中后序列遍歷之類的。基礎&#xff0c;但真正寫一遍&#xff0c;每道題又有多種寫法。花了很長時間但是也就是一…

go sync包(七)Sync.Map

Sync.Map 原理 通過 read 和 dirty 兩個字段實現數據的讀寫分離&#xff0c;讀的數據存在只讀字段 read 上&#xff0c;將最新寫入的數據存在 dirty 字段上。讀取時會先查詢 read&#xff0c;不存在再查詢 dirty&#xff0c;寫入時則只寫入 dirty。讀取 read 并不需要加鎖&am…

每天一個數據分析題(三百九十九)- 邏輯回歸

邏輯回歸中&#xff0c;若選0.5作為閾值區分正負樣本&#xff0c;其決策平面是&#xff08; &#xff09; A. wxb&#xff1d; 0 B. wxb&#xff1d; 1 C. wxb&#xff1d; -1 D. wxb&#xff1d; 2 數據分析認證考試介紹&#xff1a;點擊進入 題目來源于CDA模擬題庫 點…

Python實現萬花筒效果:創造炫目的動態圖案

文章目錄 引言準備工作前置條件 代碼實現與解析導入必要的庫初始化Pygame定義繪制萬花筒圖案的函數主循環 完整代碼 引言 萬花筒效果通過反射和旋轉圖案創造出美麗的對稱圖案。在這篇博客中&#xff0c;我們將使用Python來實現一個動態的萬花筒效果。通過利用Pygame庫&#xf…