Skip to content
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

Internal settings are not correctly decoded, and are corrupted if they are written back #7

Closed
DarkStarSword opened this issue Jul 13, 2016 · 2 comments

Comments

@DarkStarSword
Copy link
Contributor

The internal settings are encrypted, so the values shown in the tool for these are garbage and inconsistent with the equivalent settings on a user profile. Further, if these are written back they will lose the internal setting flag, causing them to be treated as though they were not encrypted, effectively corrupting them.

A 2048 bit key is used, and the Setting ID is used to derive an offset into that key ((ID * 2) % 256) that is then XORed against the value. In the case of strings this is a byte by byte XOR, and in the case of DWORDs the key is read as a 32bit little-endian value from the correct offset and XORed against the value. If the end of the key is reached it wraps back to the start.

This script may be of interest to show how to decrypt these values:
https://raw.githubusercontent.com/DarkStarSword/3d-fixes/master/__profiles__/sanitise_nv_profiles.py

@Orbmu2k
Copy link
Owner

Orbmu2k commented Jul 14, 2016

Thanks for this! I made a first test build you can check out:
https://ci.appveyor.com/project/Orbmu2k/nvidiaprofileinspector/build/artifacts

@Orbmu2k Orbmu2k closed this as completed Jul 14, 2016
@DarkStarSword
Copy link
Contributor Author

Excellent - just gave it a try and it looks perfect :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants