[閒聊] vd_source

看板Marginalman作者 ( )時間1年前 (2024/09/24 03:46), 編輯推噓2(200)
留言2則, 2人參與, 1年前最新討論串1/1
最近整理書籤 發現有些B站的重複加了 看了一下發現是因為除了 AV/BV 號後面還會偷加一些東西造成網址不同 而 vd_source 這個參數如果在登入狀態下 甚至手動刪除也會幫你加回來 查了一下有人說是 uid 的加鹽 md5 但我一開始沒找到具體的作法 (等我真的自己逆完之後就在知乎搜到了= =) 所以我就試著看 vd_source 怎麼生成的 首先因為沒跳轉 url就變了 應該是 pushState 或 replaceState hook 這兩個之後打一下 trace 發現一個叫 checkLoginInfoForHeaderV3 的很可疑 跟進去之後果然就中了 之後能追到一個顯然是 md5 的 function 真的看一遍後 發現不是直接 md5 的原因是 如果輸入是 string 則會呼叫他寫的 stringToBytes 但如果不是 string 又不是 array-like 則會呼叫 toString 我看到就 ??? 你到底要 string 還是 bytes 而在 checkLoginInfoForHeaderV3 裡丟的是數所以這裡會被轉成 string 然後因為 32-bit 一組 他執行 bytesToWords 時(所以顯然他要的是 bytes) 做 left shift 操作時把字串隱式轉成 number 了 js魅力時刻 所以假如 uid = 12345 其實最後的結果是 md5("\x01\x02\x03\x04\x05") 並不是什麼加鹽 用我自己 uid 也對的上 後來在知乎查到 實際上B站的 vd_source 有兩種版本 如果是按轉發產生的連結 就是直接 md5(uid) 去查了一下發現果然因為傳進去的是 this.userInfo.mid.toString() 傳進去的是 string 所以有被正常處理 草台班子.jpg 好搞笑 明明是程式寫錯 但碰巧加大了難度 不過以B站頂多 10^9 用戶的數量級 即使在本地慢慢跑 想要從 vd_source 反推 uid 也是綽綽有餘的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.64.4 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1727120818.A.109.html

09/24 06:25, 1年前 , 1F
大師
09/24 06:25, 1F

09/24 10:53, 1年前 , 2F
大師
09/24 10:53, 2F
文章代碼(AID): #1cySMo49 (Marginalman)