-
-
Notifications
You must be signed in to change notification settings - Fork 94
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changing platform value causing errors during key exchange #662
Comments
In some cases (as described by you above) the server expects the correct set of device info during the key-exchange, so changing the As far as I remember, when targeting mobile devices, at least Therefore, I consider this not a bug, but a feature of the server when working with the client. |
You are correct. That is indeed a feaure. I must say it is my fault for not being clear enough in my original message. Even with this in check, it still does not work:
Maybe there are less obvious values that need to be changes for this to work correctly that I am missing? I cannot get it to work even if I set all of the above values correctly with each other. |
I don’t know how it is now, but before, with these fields filled in, everything worked fine ClientHelloMsg"ClientHello": {
"buildInfo": {
"product": "PRODUCT_MOBILE",
"productFlags": [
"PRODUCT_FLAG_NONE"
],
"platfrom": "PLATFORM_ANDROID_ARM",
"version": "....."
},
"fingerprintsSupported": [
"FINGERPRINT_GRAIN"
],
"cryptosuitesSupported": [
"CRYPTO_SUITE_SHANNON"
],
"powschemesSupported": [
"POW_HASH_CASH"
],
"loginCryptoHello": {
"diffieHellman": {
"gc": "......................",
"serverKeysKnown": 1
}
},
"clientNonce": "...............",
"padding": "...........",
"featureSet": {
"autoupdate2": true,
"unknown_3": {},
"unknown_5": {
"unknown_1": 0
}
}
}
ClientResponseEncryptedMsg"ClientResponseEncrypted" {
"login_credentials" {
"username": "................."
"type": "AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS"
"auth_data": "...................."
}
"account_creation": "ACCOUNT_CREATION_ALWAYS_PROMPT"
"fingerprint_response" {
"grain" {
"encrypted_key": "................"
}
}
"system_info" {
"cpu_family": "CPU_ARM"
"cpu_subtype": 0
"cpu_ext": 0
"brand": "BRAND_UNBRANDED"
"brand_flags": 0
"os": "OS_ANDROID"
"os_version": 0
"os_ext": 0
"system_information_string": "................."
"device_id": ".............."
}
"platform_model": "..............."
"version_string": "......"
"client_info" {
"limited": false
"language": "....."
},
|
Do you know what these values would need to be set to:
Also, I notice the APWelcome also contains a fingerprint challenge? How do I solve this so I can send the I have tried with all of these values set, including the ones mentioned above, however the encrypted_key for example is currently still an empty string bytes. I have managed to make the APWelcome work, however the the response after the ClientResponsePlainText is always bad credentials. |
First of all, sorry for the late reply I can’t provide exact data at the moment, but what I remember is this:
As for the |
Thank you for the reply, you have been most helpful. I will try without the valid fingerprint challenge shortly, and double check if the key exchange still does not work. Let me know when you would be able to further explain the fingerprint challenge and how to solve it. There is absolutely no rush, so take your time. |
Sorry for taking so long, I created an example with code (Rust), it should explain how it works (well, I hope )) For an example it will use ready-made data, as it's allow to show the very essence and how it works, since if something is wrong - the server will not throw any error, so it makes sense to show everything with pre-generated data. (data actually received from the application runtime, therefore correct) If you have any questions feel free to ask, there is also a Gitter chat that can be helpful too |
Describe the bug
The bug may not necessarily be a bug; it could be considered a feature request and/or bug report combined. I have conducted tests using my own premium account.
When using the following platform values during the client hello of the key exchange, an error of 'try another AP' occurs:
PLATFORM_ANDROID_ARM
PLATFORM_IPHONE_ARM
Similarly, when using the following platform values during the client hello of the key exchange, an error of 'premium required' occurs:
PLATFORM_BLACKBERRY_ARM
PLATFORM_WINDOWS_CE_ARM
PLATFORM_S60_ARM
To Reproduce
Modify the
platform()
function inVersion.java
as follows:Expected behavior
I expected the program to continue functioning correctly, as the appropriate platform variables should work. It is important to accurately identify the device from Spotify's side, so I want to ensure that this identification remains as accurate as possible.
The text was updated successfully, but these errors were encountered: