icyray / encox-downgrade-server

OPPO Enco X / W51 降级代理服务器
GNU General Public License v3.0
3 stars 0 forks source link

Need help to downgrade oneplus buds pro 2 #2

Open stepik opened 1 month ago

stepik commented 1 month ago

Hi, can you help to modify downgrade script? The links was changed, and it is not working for new version heymelody.

icyray commented 1 month ago

Hi stepik, are you using the heymelody from Google Play store? Heymelody has different channels/CDNs for mainland China and international, which has different update url.

To begin with, you should decompile and edit the classes.dex file in heymelody, modify the update url from https to http, to avoid certificate check.

For the China version of heymelody, the update url is https://iot-earbuds-cn.heytapmobi.com/v1/earphone/firmwareInfo. The international one is https://iot-earbuds-XX.allawnos.com/v1/earphone/firmwareInfo. (Please note the XX varies depending on CDNs)

I had updated the codes to adapt to the latest version of heymelody, please test if it works.

stepik commented 1 month ago

Thank you for your support! Already see your new files and I use Chinese version, but in new version of heymelody I can't find https://iot-earbuds-cn.heytapmobi.com in classes.dex with mt manager app. Can you adapt app for me?23 июл. 2024 г. 00:07 пользователь icyray @.***> написал: Hi stepik, are you using the heymelody from Google Play store? Heymelody has different channels/CDNs for mainland China and international, which has different update url. To begin with, you should decompile and edit the classes.dex file in heymelody, modify the update url from https to http, to avoid certificate check. For the China version of heymelody, the update url is https://iot-earbuds-cn.heytapmobi.com/v1/earphone/firmwareInfo. The international one is https://iot-earbuds-XX.allawnos.com/v1/earphone/firmwareInfo. (Please note the XX varies depending on CDNs) I had updated the codes to adapt to the latest version of heymelody, please test if it works.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

icyray commented 1 month ago

The latest heymelody seems to block plain http request, and I am still trying to reverse it.

There are some things you can have a try.

stepik commented 1 month ago

Hi, I found old version of heymelody 1.0.80 and add to whitelist.xml config for my earbuds, then I modify the link to http, but it won't work, I found that the program just translate http to https automatically from dns, then I decided to change the address simply changing 'earbuds' to 'earbud' in the address link and it works. But the old version must include all new earbuds in the whitelist.By the way in new version of heymelody they add sh-256 information for firmware request, and in downgrade_server.py in string 119 PID=0X is wrong, must be PID=0x. PS: can we download old firmware, like 165 version for 1+ buds pro 2? I found that all firmware files are on oppo servers, but you can download them if you request the correct link with the file name. Can we scan the server for files or get a list with links to the firmware files?

icyray commented 1 month ago

I am glad to hear that you have found a solution to downgrade your buds. The latest heymelody now read its config from cloud, get the rule and compare to build-in update URL, those illegal domain will be discard, so it become more difficult to mod the app.

in downgrade_server.py in string 119 PID=0X is wrong, must be PID=0x.

This is because it was literally in firmware of OPPO Enco X. Now I add 0x support to script.

in new version of heymelody they add sh-256 information for firmware request

This is also a feature for new devices. Codes were updated, but I don't have a device to test it, so please test if it works.

can we download old firmware, like 165 version for 1+ buds pro 2?

Fortunately, the form of download URL for Oneplus buds pro 2 is regular. However version 165 was not deployed on the server.

stepik commented 1 month ago

Thank you for your answer and help. I found that on the different servers (en, cn,in, sg) there are different firmwares, I can download 169, 173 version also. Maybe they changed naming of firmwares and I can't load it, very need 165 firmware. Can we send request for checking all firmwares on the server by product id?

stepik commented 1 month ago

Hi i Found these blog https://blog.csdn.net/qq_34922743/article/details/124686612 There is another program to downgrade, and it can scan server for all firmwares, can we make same functionality? I can't download it.

icyray commented 1 month ago

No, there are not any known API that we can get all available firmwares on the server. The API for firmware update check only point to the lastest one (It was implemented in update_checker folder). The only possible two way, are: a) analyse the form of download URL, then try to get it; b) run a script daily, and collect each firmware once it get a update.

The blog you mentioned might use the second way. I can't download it either, maybe you can have a direct talk with the author.

stepik commented 1 month ago

I don't have csdn account, because I live outside China. Can you Ask him?

icyray commented 1 month ago

Sorry, but I can only solve the problem with this repo.