[PC] 喜马拉雅 xm 格式支援 #41
Labels
No Label
bug
crypto
duplicate
enhancement
help wanted
invalid
platform-android
platform-mac
platform-win
question
wontfix
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: um/web#41
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
相关 issue:
参考资料:
缺少的算法内容:
awesome (go native)
(现rust/wasm
) 的解密实现。喜马拉雅 PC 端支援to [PC] 喜马拉雅 xm 格式支援讲道理wasm那部分加密我好像之前逆向出来了,一直没来的及写博客...被实习压胯了
等会看看之前的repo
follow up 一下。没有完全逆向出来。
现在是搞明白xm_encrypt了,传入的trackId是key。然后数据就是数据,用aes-192-cbc加密。返回base64的数据。这串数据的前16byte就是加密用的iv。
解密也是一样,传入一个base64的数据,前16byte是iv,后面都是数据。 但是问题在于,用aes-192-cbc解密加密的数据之后,加密前数据的前16byte消失了。但这个16byte不重要,因为是m4a的header固定值可以手动补齐。
目前最严重的问题就是作为key传入的trackId不到24byte。那缺的那些值怎么补齐的我还搞不明白。
不是固定值,不过你的博客不是已经分析出来了吗。只是变量名称是奇怪的
encoding_technology
而不是m4a_header
。固定内容填充,你可以跟踪内存。
Hint:
你可以找旧 xmly pc 版本,有原生
awesome.dll
/awesome.dylib
可以写 ffi 调用来调试。不是那个encoding_technology.。一共有三次解密,这个是第三次的了。我这边指的是第二步web assembly里的解密。
逆向好了,忘记cbc第一个block就是下一个iv了。脑子抽了。不过好歹对了。