斗鱼视频sign签名逆向分析
本篇文章將帶大家逐步定位sign生成的地方,如想學習相關知識
推薦b站的志遠一二期逆向課程。
志遠一期逆向課程
關鍵詞f0dabea01b3730,? f0dabea01b3731,? f0dabea01b3732,f0dabea01b373
直接搜索就能夠定位到。
????????之前突然無意間發現斗魚舞蹈區,女主播熱舞真的灰常多,看的真的是熱血,年輕人就應該激情熱血些沒毛病吧,然后就想著把這些視頻都給用爬蟲下載下來,然后瘋狂抓包,一頓操作下來,發現需要驗證sign簽名,哎,沒辦法只能暫時放棄。最近放假的時間,閑著無聊沒事干就去斗魚找找舞蹈視頻看看,結果一發現!舞蹈區沒了!!! (后來百度才得知,幾個月前舞蹈區就應為 “擦邊” 開始整改)結果整改整改,改著改著整個視頻區就不見了,這讓我們這些年輕人該怎么燃起激情!!
?1. 使用瀏覽器抓包分析
? ? ? ? 直接f12抓包分析,通常視頻采用的都是m3u8形式,一個片段一個片段的通過組合形成一個完整的視頻,有兩個文件返回了我們的m3u8,一個getStreamUrl? 一個playlist.m3u8,其實我們只用抓getStreamUrl這個就行,以為這個接口只要提交正確就會給我返回一個對應m3u8文件的url,視頻的每個片段內容都存在其中。
? ? ? ? ?我們看到,getStreamUrl提交了五個參數,其中tt,sign,vid分別對應我們的時間戳,簽名,視頻的編號id,v不確定是什么(但是是固定不變的),did為我們的設備號。vid我們可以在視頻的首頁拿到,我們只需要找出加密sign的函數,加載出sign就可以了,通常絕大部分的網站sign簽名都是對設備號,時間戳還有一些特定的參數(如getStreamUrl中的v)進行排序拼接,然后通過md5加密計算出來的值。
直接全局搜索.md5試試能不能直接定位到加密處。
2. 跟棧找出加密位置
?????????搜出來一堆,直接搜索這個方式不行,那我們就只能跟棧打斷點一步一步跟到加密處了,換到我們的initator這,然后點下面最后一次調用的地方跟進去,點進去不要動,會發現他自動跟到一個send發送的地方,在send處下一個斷點。
?看一下他發送的 r 是啥東西
? ? ? ? ?能夠發現啊,我們的sign就在其中,我們接著往上一個調用他的棧跟,跟到了一個return new Promise的地方,發現是傳過來的e里面帶有我們的sign,而且這個方法里也沒有重新定義我們的e,接著往上跟。
? ? ? ? ?跟到了(e.adapter || defaults_1.adapter)(e).then((function(t)所在的這個方法里頭,到這我們如果再繼續跟棧會發現,前面的棧都為異步加載的了,很難確定是先調用了哪個棧,并且這個還有一個then,看到then我們第一時間就應該想到異步,then會異步調用很多個方法,如果加密是在then里面,我們只能在此處下斷點,單步跟進去了,我們現在這個方法的頭部下斷,看看是不是在then處生成的e
? ? ? ? ????????刷新網頁,重新斷到我們下斷的位置
? ? ? ? 發現沒有經過then,我們的e中就已經有sign了,在data當中,我們再向上跟棧。
????????跟到了一個?n = n.then(t.shift(), t.shift()) ,我們在頭部繼續下斷點,發現傳進來的e還是有data,說明并不是在此處進行的加密。繼續跟棧,發現我們跟到了一個大方法里,向上翻并沒有e傳入,下斷分析
? ? ? ? ?刷新網頁,斷在此處,把return括起來看一下,發現并沒有data,說明data是在這個return處和上一個斷點之間生成的,到這里已經很接近了,仔細分析分析
? ? ? ? 直接在bind$1這個方法里,四行全部下斷點,一個一個斷點跟。
? ? ? ? 第一步,e為空
第二步,e為空?
?第三步,發現e還是為空
這就奇怪了,明明跟到了這個地方,卻沒有產生data?不要慌,我們仔細看看
e.apply里面傳遞了兩個參數,其中的n就有我們想要的data
????????這時候我們只需要網上看,n是在哪產生的,注意看上一行 n[r] = arguments[r] 所以我們n中的data是從arguments中來的,看看arguments是從哪來的,繼續跟到上一個??纯?。
?????????最后是在上一個方法棧里頭的 var p = window[l](a, o, s);處,p中就包含了我們想要的sign,下面的t = "".concat(p, "&vid=").concat(r)不用管,只是在后面拼接了一個視頻的vid。不難看出p是由window[l]里面的三個參數 a,o,s加密產生的,這里大家自行去看看就好了,a是固定值,可以定死,o是設備號,s為時間戳,我們括住window[l]看看他是怎么加密的,把加密方法扣出來就行,最后是跟到了這里,大家自行格式化代碼就能拿到加密的方法啦。
?????????附上摳出來的js代碼
const CryptoJS = require('crypto-js'); var f0dabea01b373 = [0x81d4a166, 0xec61a48b, 0x4c60ceea, 0xa0f150e6, 0x23f490ca, 0x5d084831, 0xa1540ed9, 0x5a0d7591, 0xfdc00648, 0x2817436f, 0xdd46e2c, 0xdedd07d5, 0x6a9e8385, 0x1a881d1e, 0x532ff64f, 0xa34e5eda, 0x8a02502a, 0xac29abe, 0x7b2cbe7f, 0x86ae0f7e, 0x905c86a9, 0x5b5f28a9, 0xd2e11bb4, 0x4efc8c67, 0xd619be7b, 0x24561d5c, 0x66c6e7c7, 0x1eaf1294, 0x3fbdafa3, 0xd7a100ac, 0x71105a7f, 0xf2dc8c81, 0x2f18f8b4, 0x1b5c532a, 0x5087767b, 0xc011b22e, 0x66275332, 0xbd26aea0, 0xad08f852, 0x4d23ee9, 0xc198862d, 0xb241fc69, 0x98e63e9, 0x7beb2a80, 0xf3999c79, 0x33a61cfa, 0x684bf583, 0xd1634ecb, 0x7d79472e, 0x3f77dfe3, 0x72b42254, 0xbf6d8eae, 0x7ee331ea, 0xbbf6eb30, 0xb0af747b, 0x4b35caba, 0xd07ae7dc, 0xe30a2373, 0x7b09a6db, 0x17e95781, 0xfdc65836, 0xafee63c2, 0xecd0f307, 0xc57f6996, 0x61a2c77b, 0x51b383fa, 0x6bee04fc, 0x86003cb, 0xd8a6bad8, 0x75466f7c, 0x9777f68d, 0xad2b3e20, 0x1ddb138b, 0xfdf3b700, 0xcf6b592e, 0x72782d2d, 0x10390638, 0x61efb7e5, 0x4e8a9331, 0x275fc048, 0x2468e610, 0xf7775e24, 0xb344e3f0, 0x3a69762d, 0x578a98f4, 0xe8b0cda1, 0x9eb959d6, 0x9066afab, 0xae3ab29, 0xed60e14f, 0x838a20f9, 0x1c19f5a4, 0x59c589b2, 0x2a4c1206, 0x34fc1908, 0xea4453e0, 0x23f3cb99, 0xf30a6d5d, 0xbb6137c8, 0x9e8be60c, 0xfccc88ee, 0x2e638b97, 0xc90c074c, 0x16a06985, 0x5f4b5a62, 0xb16ba41e, 0x3fedfd15, 0x5499d64c, 0xdc5ba1c3, 0x3ff00259, 0x763fc2dc, 0x60304fb9, 0x1ace7bd4, 0xbd9fc6fe, 0xa0f710eb, 0x99ab7446, 0xdd51c9e, 0x815a52b2, 0x89e17f4b, 0x6ef4705b, 0x6e67ea62, 0x25161f5f, 0xc2a1ab97, 0xf4962828, 0xa76780fc, 0xc39f9c2c, 0xc6f2e301, 0xf82f84fa, 0x41fe9783, 0x7b987c55, 0x9bd39932, 0x4138ad09, 0xac62e7f8, 0xbdc833d4, 0xc102abb8, 0x32c14ec, 0x80f0a458, 0x459be174, 0x8c65d6, 0x7a2d4226, 0x8bc7b524, 0xfddae27e, 0xb86b5e42, 0x1d4509d1, 0xff78ae1c, 0x87d1cb5e, 0x4ece7ea8, 0xb8d687ae, 0x7623e0e, 0xcae1464d, 0xe1ecf679, 0x75293809, 0xdb56b159, 0xbfd87161, 0xccf0b0ed, 0x16b9f1c, 0x383c125c, 0xa3520ee8, 0xd8eee954, 0x7010b92c, 0x1eb2c24e, 0x8c081519, 0xc4c58ff, 0x5ccfac39, 0xc5bd8dd, 0x38b92ee2, 0x5b6ece23, 0x6d967c4f, 0xbad875ba, 0x98ba38a6, 0xcdbe181a, 0xdc3cf29, 0x8f308d5c, 0xe2cd14c0, 0xac5e4957, 0x9d1e4834, 0xee561bbb, 0xd0ee399a, 0x7a4611bb, 0xffa07b93, 0xc5f9de4b, 0xd9c40e71, 0xb07fd8d5, 0xdc83b10f, 0x14dd3b89, 0x13a1a77e, 0x6a2b19cb, 0x66466164, 0xf7be3c84, 0xc071afbd, 0xf6754c13, 0x47dc9f85, 0x889fa22a, 0x642a6c4, 0xd5d4452c, 0x25666bef, 0x50c15328, 0x64e7fef3, 0x6ad7320c, 0xfd508ed1, 0x5c2775f4, 0x4b516411, 0x62414ff3, 0x9459a9ec, 0xa1c8bfb1, 0xa1b38080, 0xabe4189a, 0xd8b09819, 0xe34f8560, 0x1811b416, 0x9f682b80, 0xad1aefde, 0x1234cc49, 0xc68f97d1, 0x4d7ab0de, 0x48315577, 0x43e7004, 0x1739e225, 0x542eadc0, 0x2838adff, 0x58899584, 0xa4e781bd, 0x33f459fd, 0xfaf66ec7, 0x3d72c544, 0xe4c3b147, 0xc6f5c192, 0x45bf6dc2, 0xdf9e6ac1, 0xf2f5960b, 0x69969f54, 0xd37b9abf, 0xf3db9b48, 0x712586ba, 0xfd539f36, 0x2a55b898, 0xe2bc5ed0, 0xad1b0fac, 0x3641f4e5, 0x9a1fbf50, 0xa30c5cc7, 0x673f27b5, 0xc3124e63, 0xfdeabc27, 0x34fc9f5c, 0x226bcab0, 0x388d69d2, 0xf0237fa2, 0x6f825b5d, 0x51e44029, 0xfb9afb4b, 0x5c21f39, 0x3f0f6775, 0xc0677e67, 0xa23fa183, 0x4acb3238, 0x61541d3e, 0x589e9758, 0x634bba8, 0x204fd2da, 0x52d2b6ac, 0x362e45f6, 0xfea3dfbb, 0xd586681f, 0x7c3d87af, 0x296786db, 0xb6e64881, 0x86d3c261, 0x33965be8, 0x4bb48aca, 0x39a421a0, 0x2e778d14, 0x879bbfc7, 0x7149e97b, 0xc8a78ac, 0x79eeb774, 0x65a5448, 0x69a44581, 0x3d1b141b, 0x394bb943, 0x41e92598, 0x2d1c5ba2, 0xc55214eb, 0xb072b34f, 0xa816ae5e, 0x330c05b0, 0xc99d76f8, 0xff9a67d, 0x6753bea6, 0x4f7e4a30, 0xe7f5c1f3, 0xbd8254e5, 0x759160c9, 0x5c62b8b5, 0xd840d3c7, 0xed64d081, 0xfab0a12e, 0x5739f8c7, 0x62927624, 0xe1abff9, 0x204583f7, 0x61d4a97c, 0x9410ccab, 0xced9522f, 0x8ee33ae7, 0x9e307139, 0xd3a497eb, 0xc9eb5831, 0x28b67a98, 0x6502e010, 0x1113611a, 0x4f1333d5, 0x3b8ace3f, 0xbeac7f, 0x255132dc, 0x81b44392, 0x99749faa, 0xb5022c18, 0x238054a5, 0x9921b00e, 0x3a13e523, 0x99124258, 0xf0585cca, 0x42daa518, 0xff675c47, 0x195995a0, 0xb2a6db2f, 0x11872c6, 0xe8d01a1c, 0xf9149fcc, 0xd4a2e89b, 0x619fee6f, 0x76273d31, 0x1262677b, 0x96ebcbe8, 0xf93fac85, 0x3360408b, 0x9bd62e40, 0x646d369b, 0x486ec9f6, 0x42692771, 0xff762b47, 0xa71bb70f, 0x89773ba6, 0x3ee5a4c8, 0x904aa587, 0x44bf8e6b, 0x4b446471, 0x1367bf26, 0x3a0b04d3, 0x96b389f9, 0xe8191e, 0xb3ad9c96, 0x42bc77e6, 0x5e4584d9, 0x41452627, 0xcd8c8fca, 0x9f5d556e, 0x7f9b17dc, 0x47b99a68, 0xf2b83bdf, 0x67488fbd, 0x728f8161, 0xc1ac8953, 0xbddd675d, 0x665fc923, 0x9143be86, 0x7b749da9, 0x6d10576, 0x3b3080e6, 0x901f0ac6, 0x59dfa360, 0x4ce2de24, 0xe22861b9, 0xeeadab6, 0xc06c5342, 0x3c3d13af, 0x2d83b8bc, 0x5eef0f56, 0x16f4484d, 0x650e1784, 0xefe68a71, 0x88d4cbd2, 0x9a9e5e0c, 0x57dc8a99, 0x8b446e39, 0x1a52a2a2, 0xc2917245, 0x2f65878b, 0xbe635043, 0x5c7ab3e8, 0x231658db, 0xbf07b625, 0xfcb9ab0c, 0xc1262941, 0xc4a558ab, 0x2d99c757, 0xea34f58f, 0xf22fe7cb, 0x65c50804, 0x21851dbf, 0x30cc96f4, 0xc8a6303a, 0xdddccdd, 0x7de47373, 0xe06a31ff, 0x5ea7a970, 0x87582f0d, 0xa13e5f99, 0x51465b21, 0x2227cebe, 0x5dafc59f, 0x5c62df, 0xc3d59ce1, 0x133114d1, 0xdeb3dab6, 0x21e604ec, 0x3f9a847f, 0x6c093570, 0xfee8c6fe]; function ub98484234(f0dabea01b3730, f0dabea01b3731, f0dabea01b3732) {var rk = [38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29, 32, 35, 11, 33, 20, 10, 38, 28, 29];var k2 = [0x5d632278, 0x4c47a956];var lk = [0x5d632278, 0x4c47a956];var v = f0dabea01b373.slice(0);var k = [0xbd7375f8, 0xdfcfb71b, 0x3f7fed8e, 0xf7bb9631];for (var O = 0; O < 420; O++) {v[O] ^= 0x16d08b7c;}v[1] = (v[1] >>> (lk[1] % 16)) | (v[1] << (32 - (lk[1] % 16)));v[0] = (v[0] >>> (lk[0] % 16)) | (v[0] << (32 - (lk[0] % 16)));v[3] ^= lk[1];v[2] ^= lk[0];v[5] += lk[1];v[4] = (v[4] << (lk[0] % 16)) | (v[4] >>> (32 - (lk[0] % 16)));v[7] ^= lk[1];v[6] = (v[6] << (lk[0] % 16)) | (v[6] >>> (32 - (lk[0] % 16)));v[9] -= lk[1];v[8] = (v[8] << (lk[0] % 16)) | (v[8] >>> (32 - (lk[0] % 16)));v[11] += lk[1];v[10] += lk[0];v[13] = (v[13] >>> (lk[1] % 16)) | (v[13] << (32 - (lk[1] % 16)));v[12] += lk[0];v[15] ^= lk[1];v[14] ^= lk[0];v[17] -= lk[1];v[16] -= lk[0];v[19] = (v[19] >>> (lk[1] % 16)) | (v[19] << (32 - (lk[1] % 16)));v[18] = (v[18] >>> (lk[0] % 16)) | (v[18] << (32 - (lk[0] % 16)));v[21] ^= lk[1];v[20] ^= lk[0];v[23] += lk[1];v[22] = (v[22] << (lk[0] % 16)) | (v[22] >>> (32 - (lk[0] % 16)));v[25] ^= lk[1];v[24] = (v[24] << (lk[0] % 16)) | (v[24] >>> (32 - (lk[0] % 16)));v[27] -= lk[1];v[26] = (v[26] << (lk[0] % 16)) | (v[26] >>> (32 - (lk[0] % 16)));v[29] += lk[1];v[28] += lk[0];v[31] = (v[31] >>> (lk[1] % 16)) | (v[31] << (32 - (lk[1] % 16)));v[30] += lk[0];v[33] ^= lk[1];v[32] ^= lk[0];v[35] -= lk[1];v[34] -= lk[0];v[37] = (v[37] >>> (lk[1] % 16)) | (v[37] << (32 - (lk[1] % 16)));v[36] = (v[36] >>> (lk[0] % 16)) | (v[36] << (32 - (lk[0] % 16)));v[39] ^= lk[1];v[38] ^= lk[0];v[41] += lk[1];v[40] = (v[40] << (lk[0] % 16)) | (v[40] >>> (32 - (lk[0] % 16)));v[43] ^= lk[1];v[42] = (v[42] << (lk[0] % 16)) | (v[42] >>> (32 - (lk[0] % 16)));v[45] -= lk[1];v[44] = (v[44] << (lk[0] % 16)) | (v[44] >>> (32 - (lk[0] % 16)));v[47] += lk[1];v[46] += lk[0];v[49] = (v[49] >>> (lk[1] % 16)) | (v[49] << (32 - (lk[1] % 16)));v[48] += lk[0];v[51] ^= lk[1];v[50] ^= lk[0];v[53] -= lk[1];v[52] -= lk[0];v[55] = (v[55] >>> (lk[1] % 16)) | (v[55] << (32 - (lk[1] % 16)));v[54] = (v[54] >>> (lk[0] % 16)) | (v[54] << (32 - (lk[0] % 16)));v[57] ^= lk[1];v[56] ^= lk[0];v[59] += lk[1];v[58] = (v[58] << (lk[0] % 16)) | (v[58] >>> (32 - (lk[0] % 16)));v[61] ^= lk[1];v[60] = (v[60] << (lk[0] % 16)) | (v[60] >>> (32 - (lk[0] % 16)));v[63] -= lk[1];v[62] = (v[62] << (lk[0] % 16)) | (v[62] >>> (32 - (lk[0] % 16)));v[65] += lk[1];v[64] += lk[0];v[67] = (v[67] >>> (lk[1] % 16)) | (v[67] << (32 - (lk[1] % 16)));v[66] += lk[0];v[69] ^= lk[1];v[68] ^= lk[0];v[71] -= lk[1];v[70] -= lk[0];v[73] = (v[73] >>> (lk[1] % 16)) | (v[73] << (32 - (lk[1] % 16)));v[72] = (v[72] >>> (lk[0] % 16)) | (v[72] << (32 - (lk[0] % 16)));v[75] ^= lk[1];v[74] ^= lk[0];v[77] += lk[1];v[76] = (v[76] << (lk[0] % 16)) | (v[76] >>> (32 - (lk[0] % 16)));v[79] ^= lk[1];v[78] = (v[78] << (lk[0] % 16)) | (v[78] >>> (32 - (lk[0] % 16)));v[81] -= lk[1];v[80] = (v[80] << (lk[0] % 16)) | (v[80] >>> (32 - (lk[0] % 16)));v[83] += lk[1];v[82] += lk[0];v[85] = (v[85] >>> (lk[1] % 16)) | (v[85] << (32 - (lk[1] % 16)));v[84] += lk[0];v[87] ^= lk[1];v[86] ^= lk[0];v[89] -= lk[1];v[88] -= lk[0];v[91] = (v[91] >>> (lk[1] % 16)) | (v[91] << (32 - (lk[1] % 16)));v[90] = (v[90] >>> (lk[0] % 16)) | (v[90] << (32 - (lk[0] % 16)));v[93] ^= lk[1];v[92] ^= lk[0];v[95] += lk[1];v[94] = (v[94] << (lk[0] % 16)) | (v[94] >>> (32 - (lk[0] % 16)));v[97] ^= lk[1];v[96] = (v[96] << (lk[0] % 16)) | (v[96] >>> (32 - (lk[0] % 16)));v[99] -= lk[1];v[98] = (v[98] << (lk[0] % 16)) | (v[98] >>> (32 - (lk[0] % 16)));v[101] += lk[1];v[100] += lk[0];v[103] = (v[103] >>> (lk[1] % 16)) | (v[103] << (32 - (lk[1] % 16)));v[102] += lk[0];v[105] ^= lk[1];v[104] ^= lk[0];v[107] -= lk[1];v[106] -= lk[0];v[109] = (v[109] >>> (lk[1] % 16)) | (v[109] << (32 - (lk[1] % 16)));v[108] = (v[108] >>> (lk[0] % 16)) | (v[108] << (32 - (lk[0] % 16)));v[111] ^= lk[1];v[110] ^= lk[0];v[113] += lk[1];v[112] = (v[112] << (lk[0] % 16)) | (v[112] >>> (32 - (lk[0] % 16)));v[115] ^= lk[1];v[114] = (v[114] << (lk[0] % 16)) | (v[114] >>> (32 - (lk[0] % 16)));v[117] -= lk[1];v[116] = (v[116] << (lk[0] % 16)) | (v[116] >>> (32 - (lk[0] % 16)));v[119] += lk[1];v[118] += lk[0];v[121] = (v[121] >>> (lk[1] % 16)) | (v[121] << (32 - (lk[1] % 16)));v[120] += lk[0];v[123] ^= lk[1];v[122] ^= lk[0];v[125] -= lk[1];v[124] -= lk[0];v[127] = (v[127] >>> (lk[1] % 16)) | (v[127] << (32 - (lk[1] % 16)));v[126] = (v[126] >>> (lk[0] % 16)) | (v[126] << (32 - (lk[0] % 16)));v[129] ^= lk[1];v[128] ^= lk[0];v[131] += lk[1];v[130] = (v[130] << (lk[0] % 16)) | (v[130] >>> (32 - (lk[0] % 16)));v[133] ^= lk[1];v[132] = (v[132] << (lk[0] % 16)) | (v[132] >>> (32 - (lk[0] % 16)));v[135] -= lk[1];v[134] = (v[134] << (lk[0] % 16)) | (v[134] >>> (32 - (lk[0] % 16)));v[137] += lk[1];v[136] += lk[0];v[139] = (v[139] >>> (lk[1] % 16)) | (v[139] << (32 - (lk[1] % 16)));v[138] += lk[0];v[141] ^= lk[1];v[140] ^= lk[0];v[143] -= lk[1];v[142] -= lk[0];v[145] = (v[145] >>> (lk[1] % 16)) | (v[145] << (32 - (lk[1] % 16)));v[144] = (v[144] >>> (lk[0] % 16)) | (v[144] << (32 - (lk[0] % 16)));v[147] ^= lk[1];v[146] ^= lk[0];v[149] += lk[1];v[148] = (v[148] << (lk[0] % 16)) | (v[148] >>> (32 - (lk[0] % 16)));v[151] ^= lk[1];v[150] = (v[150] << (lk[0] % 16)) | (v[150] >>> (32 - (lk[0] % 16)));v[153] -= lk[1];v[152] = (v[152] << (lk[0] % 16)) | (v[152] >>> (32 - (lk[0] % 16)));v[155] += lk[1];v[154] += lk[0];v[157] = (v[157] >>> (lk[1] % 16)) | (v[157] << (32 - (lk[1] % 16)));v[156] += lk[0];v[159] ^= lk[1];v[158] ^= lk[0];v[161] -= lk[1];v[160] -= lk[0];v[163] = (v[163] >>> (lk[1] % 16)) | (v[163] << (32 - (lk[1] % 16)));v[162] = (v[162] >>> (lk[0] % 16)) | (v[162] << (32 - (lk[0] % 16)));v[165] ^= lk[1];v[164] ^= lk[0];v[167] += lk[1];v[166] = (v[166] << (lk[0] % 16)) | (v[166] >>> (32 - (lk[0] % 16)));v[169] ^= lk[1];v[168] = (v[168] << (lk[0] % 16)) | (v[168] >>> (32 - (lk[0] % 16)));v[171] -= lk[1];v[170] = (v[170] << (lk[0] % 16)) | (v[170] >>> (32 - (lk[0] % 16)));v[173] += lk[1];v[172] += lk[0];v[175] = (v[175] >>> (lk[1] % 16)) | (v[175] << (32 - (lk[1] % 16)));v[174] += lk[0];v[177] ^= lk[1];v[176] ^= lk[0];v[179] -= lk[1];v[178] -= lk[0];v[181] = (v[181] >>> (lk[1] % 16)) | (v[181] << (32 - (lk[1] % 16)));v[180] = (v[180] >>> (lk[0] % 16)) | (v[180] << (32 - (lk[0] % 16)));v[183] ^= lk[1];v[182] ^= lk[0];v[185] += lk[1];v[184] = (v[184] << (lk[0] % 16)) | (v[184] >>> (32 - (lk[0] % 16)));v[187] ^= lk[1];v[186] = (v[186] << (lk[0] % 16)) | (v[186] >>> (32 - (lk[0] % 16)));v[189] -= lk[1];v[188] = (v[188] << (lk[0] % 16)) | (v[188] >>> (32 - (lk[0] % 16)));v[191] += lk[1];v[190] += lk[0];v[193] = (v[193] >>> (lk[1] % 16)) | (v[193] << (32 - (lk[1] % 16)));v[192] += lk[0];v[195] ^= lk[1];v[194] ^= lk[0];v[197] -= lk[1];v[196] -= lk[0];v[199] = (v[199] >>> (lk[1] % 16)) | (v[199] << (32 - (lk[1] % 16)));v[198] = (v[198] >>> (lk[0] % 16)) | (v[198] << (32 - (lk[0] % 16)));v[201] ^= lk[1];v[200] ^= lk[0];v[203] += lk[1];v[202] = (v[202] << (lk[0] % 16)) | (v[202] >>> (32 - (lk[0] % 16)));v[205] ^= lk[1];v[204] = (v[204] << (lk[0] % 16)) | (v[204] >>> (32 - (lk[0] % 16)));v[207] -= lk[1];v[206] = (v[206] << (lk[0] % 16)) | (v[206] >>> (32 - (lk[0] % 16)));v[209] += lk[1];v[208] += lk[0];v[211] = (v[211] >>> (lk[1] % 16)) | (v[211] << (32 - (lk[1] % 16)));v[210] += lk[0];v[213] ^= lk[1];v[212] ^= lk[0];v[215] -= lk[1];v[214] -= lk[0];v[217] = (v[217] >>> (lk[1] % 16)) | (v[217] << (32 - (lk[1] % 16)));v[216] = (v[216] >>> (lk[0] % 16)) | (v[216] << (32 - (lk[0] % 16)));v[219] ^= lk[1];v[218] ^= lk[0];v[221] += lk[1];v[220] = (v[220] << (lk[0] % 16)) | (v[220] >>> (32 - (lk[0] % 16)));v[223] ^= lk[1];v[222] = (v[222] << (lk[0] % 16)) | (v[222] >>> (32 - (lk[0] % 16)));v[225] -= lk[1];v[224] = (v[224] << (lk[0] % 16)) | (v[224] >>> (32 - (lk[0] % 16)));v[227] += lk[1];v[226] += lk[0];v[229] = (v[229] >>> (lk[1] % 16)) | (v[229] << (32 - (lk[1] % 16)));v[228] += lk[0];v[231] ^= lk[1];v[230] ^= lk[0];v[233] -= lk[1];v[232] -= lk[0];v[235] = (v[235] >>> (lk[1] % 16)) | (v[235] << (32 - (lk[1] % 16)));v[234] = (v[234] >>> (lk[0] % 16)) | (v[234] << (32 - (lk[0] % 16)));v[237] ^= lk[1];v[236] ^= lk[0];v[239] += lk[1];v[238] = (v[238] << (lk[0] % 16)) | (v[238] >>> (32 - (lk[0] % 16)));v[241] ^= lk[1];v[240] = (v[240] << (lk[0] % 16)) | (v[240] >>> (32 - (lk[0] % 16)));v[243] -= lk[1];v[242] = (v[242] << (lk[0] % 16)) | (v[242] >>> (32 - (lk[0] % 16)));v[245] += lk[1];v[244] += lk[0];v[247] = (v[247] >>> (lk[1] % 16)) | (v[247] << (32 - (lk[1] % 16)));v[246] += lk[0];v[249] ^= lk[1];v[248] ^= lk[0];v[251] -= lk[1];v[250] -= lk[0];v[253] = (v[253] >>> (lk[1] % 16)) | (v[253] << (32 - (lk[1] % 16)));v[252] = (v[252] >>> (lk[0] % 16)) | (v[252] << (32 - (lk[0] % 16)));v[255] ^= lk[1];v[254] ^= lk[0];v[257] += lk[1];v[256] = (v[256] << (lk[0] % 16)) | (v[256] >>> (32 - (lk[0] % 16)));v[259] ^= lk[1];v[258] = (v[258] << (lk[0] % 16)) | (v[258] >>> (32 - (lk[0] % 16)));v[261] -= lk[1];v[260] = (v[260] << (lk[0] % 16)) | (v[260] >>> (32 - (lk[0] % 16)));v[263] += lk[1];v[262] += lk[0];v[265] = (v[265] >>> (lk[1] % 16)) | (v[265] << (32 - (lk[1] % 16)));v[264] += lk[0];v[267] ^= lk[1];v[266] ^= lk[0];v[269] -= lk[1];v[268] -= lk[0];v[271] = (v[271] >>> (lk[1] % 16)) | (v[271] << (32 - (lk[1] % 16)));v[270] = (v[270] >>> (lk[0] % 16)) | (v[270] << (32 - (lk[0] % 16)));v[273] ^= lk[1];v[272] ^= lk[0];v[275] += lk[1];v[274] = (v[274] << (lk[0] % 16)) | (v[274] >>> (32 - (lk[0] % 16)));v[277] ^= lk[1];v[276] = (v[276] << (lk[0] % 16)) | (v[276] >>> (32 - (lk[0] % 16)));v[279] -= lk[1];v[278] = (v[278] << (lk[0] % 16)) | (v[278] >>> (32 - (lk[0] % 16)));v[281] += lk[1];v[280] += lk[0];v[283] = (v[283] >>> (lk[1] % 16)) | (v[283] << (32 - (lk[1] % 16)));v[282] += lk[0];v[285] ^= lk[1];v[284] ^= lk[0];v[287] -= lk[1];v[286] -= lk[0];v[289] = (v[289] >>> (lk[1] % 16)) | (v[289] << (32 - (lk[1] % 16)));v[288] = (v[288] >>> (lk[0] % 16)) | (v[288] << (32 - (lk[0] % 16)));v[291] ^= lk[1];v[290] ^= lk[0];v[293] += lk[1];v[292] = (v[292] << (lk[0] % 16)) | (v[292] >>> (32 - (lk[0] % 16)));v[295] ^= lk[1];v[294] = (v[294] << (lk[0] % 16)) | (v[294] >>> (32 - (lk[0] % 16)));v[297] -= lk[1];v[296] = (v[296] << (lk[0] % 16)) | (v[296] >>> (32 - (lk[0] % 16)));v[299] += lk[1];v[298] += lk[0];v[301] = (v[301] >>> (lk[1] % 16)) | (v[301] << (32 - (lk[1] % 16)));v[300] += lk[0];v[303] ^= lk[1];v[302] ^= lk[0];v[305] -= lk[1];v[304] -= lk[0];v[307] = (v[307] >>> (lk[1] % 16)) | (v[307] << (32 - (lk[1] % 16)));v[306] = (v[306] >>> (lk[0] % 16)) | (v[306] << (32 - (lk[0] % 16)));v[309] ^= lk[1];v[308] ^= lk[0];v[311] += lk[1];v[310] = (v[310] << (lk[0] % 16)) | (v[310] >>> (32 - (lk[0] % 16)));v[313] ^= lk[1];v[312] = (v[312] << (lk[0] % 16)) | (v[312] >>> (32 - (lk[0] % 16)));v[315] -= lk[1];v[314] = (v[314] << (lk[0] % 16)) | (v[314] >>> (32 - (lk[0] % 16)));v[317] += lk[1];v[316] += lk[0];v[319] = (v[319] >>> (lk[1] % 16)) | (v[319] << (32 - (lk[1] % 16)));v[318] += lk[0];v[321] ^= lk[1];v[320] ^= lk[0];v[323] -= lk[1];v[322] -= lk[0];v[325] = (v[325] >>> (lk[1] % 16)) | (v[325] << (32 - (lk[1] % 16)));v[324] = (v[324] >>> (lk[0] % 16)) | (v[324] << (32 - (lk[0] % 16)));v[327] ^= lk[1];v[326] ^= lk[0];v[329] += lk[1];v[328] = (v[328] << (lk[0] % 16)) | (v[328] >>> (32 - (lk[0] % 16)));v[331] ^= lk[1];v[330] = (v[330] << (lk[0] % 16)) | (v[330] >>> (32 - (lk[0] % 16)));v[333] -= lk[1];v[332] = (v[332] << (lk[0] % 16)) | (v[332] >>> (32 - (lk[0] % 16)));v[335] += lk[1];v[334] += lk[0];v[337] = (v[337] >>> (lk[1] % 16)) | (v[337] << (32 - (lk[1] % 16)));v[336] += lk[0];v[339] ^= lk[1];v[338] ^= lk[0];v[341] -= lk[1];v[340] -= lk[0];v[343] = (v[343] >>> (lk[1] % 16)) | (v[343] << (32 - (lk[1] % 16)));v[342] = (v[342] >>> (lk[0] % 16)) | (v[342] << (32 - (lk[0] % 16)));v[345] ^= lk[1];v[344] ^= lk[0];v[347] += lk[1];v[346] = (v[346] << (lk[0] % 16)) | (v[346] >>> (32 - (lk[0] % 16)));v[349] ^= lk[1];v[348] = (v[348] << (lk[0] % 16)) | (v[348] >>> (32 - (lk[0] % 16)));v[351] -= lk[1];v[350] = (v[350] << (lk[0] % 16)) | (v[350] >>> (32 - (lk[0] % 16)));v[353] += lk[1];v[352] += lk[0];v[355] = (v[355] >>> (lk[1] % 16)) | (v[355] << (32 - (lk[1] % 16)));v[354] += lk[0];v[357] ^= lk[1];v[356] ^= lk[0];v[359] -= lk[1];v[358] -= lk[0];v[361] = (v[361] >>> (lk[1] % 16)) | (v[361] << (32 - (lk[1] % 16)));v[360] = (v[360] >>> (lk[0] % 16)) | (v[360] << (32 - (lk[0] % 16)));v[363] ^= lk[1];v[362] ^= lk[0];v[365] += lk[1];v[364] = (v[364] << (lk[0] % 16)) | (v[364] >>> (32 - (lk[0] % 16)));v[367] ^= lk[1];v[366] = (v[366] << (lk[0] % 16)) | (v[366] >>> (32 - (lk[0] % 16)));v[369] -= lk[1];v[368] = (v[368] << (lk[0] % 16)) | (v[368] >>> (32 - (lk[0] % 16)));v[371] += lk[1];v[370] += lk[0];v[373] = (v[373] >>> (lk[1] % 16)) | (v[373] << (32 - (lk[1] % 16)));v[372] += lk[0];v[375] ^= lk[1];v[374] ^= lk[0];v[377] -= lk[1];v[376] -= lk[0];v[379] = (v[379] >>> (lk[1] % 16)) | (v[379] << (32 - (lk[1] % 16)));v[378] = (v[378] >>> (lk[0] % 16)) | (v[378] << (32 - (lk[0] % 16)));v[381] ^= lk[1];v[380] ^= lk[0];v[383] += lk[1];v[382] = (v[382] << (lk[0] % 16)) | (v[382] >>> (32 - (lk[0] % 16)));v[385] ^= lk[1];v[384] = (v[384] << (lk[0] % 16)) | (v[384] >>> (32 - (lk[0] % 16)));v[387] -= lk[1];v[386] = (v[386] << (lk[0] % 16)) | (v[386] >>> (32 - (lk[0] % 16)));v[389] += lk[1];v[388] += lk[0];v[391] = (v[391] >>> (lk[1] % 16)) | (v[391] << (32 - (lk[1] % 16)));v[390] += lk[0];v[393] ^= lk[1];v[392] ^= lk[0];v[395] -= lk[1];v[394] -= lk[0];v[397] = (v[397] >>> (lk[1] % 16)) | (v[397] << (32 - (lk[1] % 16)));v[396] = (v[396] >>> (lk[0] % 16)) | (v[396] << (32 - (lk[0] % 16)));v[399] ^= lk[1];v[398] ^= lk[0];v[401] += lk[1];v[400] = (v[400] << (lk[0] % 16)) | (v[400] >>> (32 - (lk[0] % 16)));v[403] ^= lk[1];v[402] = (v[402] << (lk[0] % 16)) | (v[402] >>> (32 - (lk[0] % 16)));v[405] -= lk[1];v[404] = (v[404] << (lk[0] % 16)) | (v[404] >>> (32 - (lk[0] % 16)));v[407] += lk[1];v[406] += lk[0];v[409] = (v[409] >>> (lk[1] % 16)) | (v[409] << (32 - (lk[1] % 16)));v[408] += lk[0];v[411] ^= lk[1];v[410] ^= lk[0];v[413] -= lk[1];v[412] -= lk[0];v[415] = (v[415] >>> (lk[1] % 16)) | (v[415] << (32 - (lk[1] % 16)));v[414] = (v[414] >>> (lk[0] % 16)) | (v[414] << (32 - (lk[0] % 16)));v[417] ^= lk[1];v[416] ^= lk[0];v[419] += lk[1];v[418] = (v[418] << (lk[0] % 16)) | (v[418] >>> (32 - (lk[0] % 16)));for (var I = 0; I < 420; I += 2) {var i, v0 = v[I] ^ k2[0],v1 = v[I + 1] ^ k2[1],d = 0x9E3779B9,sum = d * rk[I / 2];for (i = 0; i < rk[I / 2]; i++) {v1 -= (((v0 << 4) ^ (v0 >>> 5)) + v0) ^ (sum + k[(sum >>> 11) & 3]);sum -= d;v0 -= (((v1 << 4) ^ (v1 >>> 5)) + v1) ^ (sum + k[sum & 3]);}v[I] = v0 ^ k2[1];v[I + 1] = v1 ^ k2[0];}for (var O = 419; O > 0; O--) {v[O] ^= v[O - 1];}v[0] ^= 0x16d08b7c;var strc = "";for (var i = 0; i < v.length; i++) {strc += String.fromCharCode(v[i] & 0xff, v[i] >>> 8 & 0xff, v[i] >>> 16 & 0xff, v[i] >>> 24 & 0xff);}return eval(strc)(f0dabea01b3730, f0dabea01b3731, f0dabea01b3732); }; function get_sign(timestamp){return ub98484234('32147635', '10000000000000000000000000001501', timestamp); } console.log(get_sign('1660574286'))大家扣完放到node里運行可能會報出CryptoJS不存在的錯,兩種解決方法,一是去補jQuery,二是直接用nodejs里的CryptoJS
nodejs CryptoJS 安裝方法 === >? ? npm install?crypto-js
?
然后在js代碼頭部寫入const CryptoJS = require('crypto-js');
?完成。
?
?
總結
以上是生活随笔為你收集整理的斗鱼视频sign签名逆向分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全国计算机等级考试题库二级C操作题100
- 下一篇: ACM water