Skip to content

GJP

GJP is a parameter commonly sent as gjp in requests. It is used for account authentication, and commonly sent with the accountID parameter. It was changed to gjp2 in 2.2.

Generating GJP2

The GJP is your password, salted with "mI29fmAnxgTs" and hashed with SHA-1.

Python

py
import base64
import hashlib  # sha1() lives there


def generate_gjp2(password: str = "", salt: str = "mI29fmAnxgTs") -> str:
	password += salt
	hash = hashlib.sha1(password.encode()).hexdigest()

	return hash

Old GJP Encoding/Decoding

The GJP is your account password XOR-encoded with key "37526", and then encoded with base64.

To decode, take the GJP and decode it from base64, then XOR-encode it again (XOR encoding and decoding is identical).

The following code demonstrates this process programmatically:

Python

py
import base64

def encode_gjp(password: str) -> str:
	# put it through the xor cipher with the key "37526")
	encoded = xor_cipher(password, "37526")
	# encode the password to base64
	encoded_base64 = base64.b64encode(encoded.encode()).decode()
	encoded_base64 = encoded_base64.replace("+", "-")
	encoded_base64 = encoded_base64.replace("/", "_")

	return encoded_base64

def decode_gjp(gjp: str) -> str:
	# decode the password from base64
	decoded_base64 = base64.b64decode(gjp.encode()).decode()
	# put it through the xor cipher with the key "37526")
	decoded = xor_cipher(decoded_base64, "37526")

	return decoded