1.2.8 • Published 8 months ago
re-unplayplay v1.2.8
re-unplayplay
A rewritten version of unplayplay, which is a slightly edited version of pbdecrypt.cc. \ This library is implementing various cryptography algorithms used by the spotify's DRM called playplay, you can refer to votify to see how it should be used.
Usage
C++
#include <unplayplay.hpp>
int main(const int argc, const char* argv[]) {
if (argc < 2) {
std::cerr << "usage: "
<< argv[0]
<< " {file_id} {obfuscated_key}"
<< std::endl;
return 1;
}
const auto file_id = unplayplay::util::FileId(
argv[1]
);
const auto obfuscated_key = unplayplay::util::Key(
argv[2]
);
const auto decrypted_key = unplayplay::decrypt_key(
obfuscated_key
);
const auto result = unplayplay::bind_key(
decrypted_key, file_id
);
for (std::size_t i = 0; i < result.size(); ++i) {
std::cout << std::setw(2)
<< std::setfill('0')
<< std::hex
<< static_cast<int>(result[i]);
}
std::cout << std::endl;
return 0;
}
Python
from re_unplayplay import decrypt_key, bind_key, decrypt_and_bind_key, get_token
# Get the associated token
get_token() # returns bytes
# Decrypt the encrypted key
decrypted = decrypt_key(bytes.fromhex('01')) # returns bytes
# Bind decrypted key
bind_result = bind_key(decrypted, '01') # returns bytes
# Decrypt and bind in one call
result = decrypt_and_bind_key(bytes.fromhex('01'), '01') # returns bytes
TypeScript
import { decryptKey, bindKey, decryptAndBindKey, getToken } from 're-unplayplay';
// Get the associated token
getToken(); // returns Buffer
// Decrypt the encrypted key
const decrypted = decryptKey(Buffer.from('01', 'hex')); // returns Buffer
// Bind decrypted key
const bind_result = bindKey(decrypted, '01'); // returns Buffer
// Decrypt and bind in one call
const result = decryptAndBindKey(Buffer.from('01', 'hex'), '01'); // returns Buffer
JavaScript
const re_unplayplay = require('re-unplayplay');
// same as typescript
Installing/building
C++ (cli)
cmake -B build -DRE_UNPP_BUILD_TESTS=0
cmake --build build --config Release
Python
python3 -m pip install -U re-unplayplay
(Java|Type)Script
npm install re-unplayplay
Contributing
Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
License
MIT