日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【JS 逆向百例】某易支付密码 MD5+AES 加密分析

發(fā)布時間:2023/12/10 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JS 逆向百例】某易支付密码 MD5+AES 加密分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)注微信公眾號:K哥爬蟲,持續(xù)分享爬蟲進(jìn)階、JS/安卓逆向等技術(shù)干貨!

聲明

本文章中所有內(nèi)容僅供學(xué)習(xí)交流,抓包內(nèi)容、敏感網(wǎng)址、數(shù)據(jù)接口均已做脫敏處理,嚴(yán)禁用于商業(yè)用途和非法用途,否則由此產(chǎn)生的一切后果均與作者無關(guān),若有侵權(quán),請聯(lián)系我立即刪除!

逆向目標(biāo)

  • 目標(biāo):某易支付密碼加密
  • 主頁:aHR0cHM6Ly9lcGF5LjE2My5jb20vaDVDYXNoaWVyL2JlZm9yZS12YWxpZGF0aW9u
  • 接口:aHR0cHM6Ly9lcGF5LjE2My5jb20vY2FzaGllci9tL3NlY3VyaXR5L3ZlcmlmeVBheUl0ZW1z
  • 逆向參數(shù):Form Data:"shortPayPassword":"ZY4iJQkXwvhMwlw2hvpZQ9T%2Fc1S7wRfcfQrpe6bmnlA3hy5PJTJqeYY%2Bj372D70i"

逆向過程

本期逆向素材來源于K哥爬蟲交流群里某位群友的求助:

抓包分析

粉絲發(fā)來的鏈接是某寶閣平臺,一個游戲角色的購買鏈接,購買方式是某易支付,逆向的對象是購買時加密后的支付密碼,需要注意的是要將界面調(diào)成手機(jī)模式,點擊支付,來到輸入密碼頁面,隨便輸入一個 6 位密碼,點擊確定,抓包到支付密碼是加密后的,如下圖所示:

參數(shù)逆向

直接搜索關(guān)鍵字 shortPayPassword,可以在 common.e94aeed9.js 里找到加密函數(shù),如下圖所示:

重點就是這句 Object(n.b)(Object(c.MD5)(this.input).toString(), e),依次在 console 打印一下各個部分,觀察其含義。

  • (this.input).toString():明文密碼;
  • e:一串字符串,前后找不到其生成的地方,可以直接搜索一下這個字符串,發(fā)現(xiàn)是通過一個接口返回的 peEnSeed 值;
  • Object(c.MD5):一個方法,看名字就知道是 MD5,將密碼傳進(jìn)去得到的結(jié)果確實是 MD5;
  • Object(n.b):是一個 s 方法,需要進(jìn)一步跟進(jìn)分析。

總的來說就是密碼的 MD5 值和 e 的值,一起傳入到 s 方法里,繼續(xù)往后跟,看看 s 函數(shù),如下圖所示:

很明顯的 AES 加密了,密碼的 MD5 值是待加密對象,peEnSeed 是 key,iv 偏移量是 0123456789012345,最后的加密結(jié)果還經(jīng)過了一次 URL 編碼,可以直接引入 crypto-js 加密包,傳入對應(yīng)的值即可,代碼如下所示:

// 引用 crypto-js 加密模塊 var CryptoJS = require('crypto-js')function getEncryptedPassword(password, peEnSeed) {var pwd = CryptoJS.enc.Utf8.parse(CryptoJS.MD5(password));var key = CryptoJS.enc.Utf8.parse(peEnSeed);var iv = CryptoJS.enc.Utf8.parse("0123456789012345");var encrypted = CryptoJS.AES.encrypt(pwd, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return pwd ? key ? encodeURIComponent(encrypted.toString()) : pwd : "" }// 測試樣例 var password = "123456" var peEnSeed = "2F63CCD861E4397F1C2181006904BAB2" console.log(getEncryptedPassword(password, peEnSeed))// ZY4iJQkXwvhMwlw2hvpZQ9T%2Fc1S7wRfcfQrpe6bmnlA3hy5PJTJqeYY%2Bj372D70i

總結(jié)

以上是生活随笔為你收集整理的【JS 逆向百例】某易支付密码 MD5+AES 加密分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。