TikTok signature forge — Android & Web authentication signature generator (Argus, Gorgon, Ladon, TTEncrypt, X-Bogus, msToken)
Project description
tiktok-forge
TikTok signature forge — Android & Web authentication signature generator.
Developer: MERO · Telegram: @QP4RM
Version: 0.0.1
Python: 3.10+
Installation
pip install tiktok-forge
Or from source:
git clone https://github.com/MERO-QP4RM/tiktok-forge
cd tiktok-forge
pip install .
Algorithms Implemented
| Algorithm | Header | Purpose |
|---|---|---|
| Argus | x-argus |
Primary Android signature (Simon cipher + SM3 hash) |
| Gorgon | x-gorgon, x-khronos |
Request integrity + timestamp |
| Ladon | x-ladon |
License-based authentication token |
| TTEncrypt | — | Payload encryption for device registration |
| X-Bogus | X-Bogus |
Web request signature |
| X-Gnarly | X-Gnarly |
Web secondary signature |
| msToken | msToken |
Web session token |
| verifyFp | verifyFp |
Browser fingerprint |
Quick Start
Android API Signatures
from tiktokforge import TikTokSigner
params = "aid=1233&app_name=musical_ly&device_platform=android"
headers = TikTokSigner.generate_headers(params=params)
print(headers)
Shortcut Functions
from tiktokforge import generate_headers, encrypt, decrypt, encode, decode
headers = generate_headers(params="aid=1233&app_name=musical_ly")
encrypted = encrypt({"device_id": "123456", "os": "android"})
decrypted = decrypt(encrypted)
protobuf_bytes = encode({1: "value", 2: 123})
data_dict = decode(protobuf_bytes)
Web Signatures
from tiktokforge import (
generate_ms_token,
generate_verify_fp,
generate_x_bogus,
generate_x_gnarly,
generate_web_headers,
generate_web_id,
)
ms_token = generate_ms_token()
verify_fp = generate_verify_fp()
web_id = generate_web_id()
url_params = "aid=1988&app_name=tiktok_web&device_platform=web"
x_bogus = generate_x_bogus(url_params)
x_gnarly = generate_x_gnarly(url_params)
web_headers = generate_web_headers(url_params=url_params)
print(web_headers)
Individual Algorithm Usage
from tiktokforge.algorithms import Argus, Gorgon, Ladon
argus = Argus.encrypt(params="aid=1233&app_name=musical_ly")
print(argus)
gorgon = Gorgon.encrypt(params="aid=1233&app_name=musical_ly")
print(gorgon)
ladon = Ladon.encrypt(aid=1233, lc_id=2142840551)
print(ladon)
Full Android GET Request
import requests
from tiktokforge import TikTokSigner
params = {
"aid": 1233,
"app_name": "musical_ly",
"device_platform": "android",
"os_version": "9",
"device_type": "2203121C",
"device_brand": "Xiaomi",
"language": "en",
"region": "US",
}
query_string = "&".join(f"{k}={v}" for k, v in params.items())
auth_headers = TikTokSigner.generate_headers(params=query_string)
headers = {
"User-Agent": "com.zhiliaoapp.musically/2023700040 (Linux; U; Android 9; en_US; 2203121C; Build/PQ3A.190705.09121607;tt-ok/3.12.13.4-tiktok)",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip",
}
headers.update(auth_headers)
url = f"https://api.tiktokv.com/aweme/v1/feed/?{query_string}"
response = requests.get(url, headers=headers)
print(response.json())
Full Android POST Request
import requests
from tiktokforge import TikTokSigner
params = "aid=1233&app_name=musical_ly"
data = {
"username": "example",
"password": "encrypted_password",
"mix_mode": 1,
}
auth_headers = TikTokSigner.generate_headers(
params=params,
data=data,
cookie="sessionid=abc123; tt_csrf_token=xyz789",
)
headers = {
"User-Agent": "com.zhiliaoapp.musically/2023700040 (Linux; U; Android 9; en_US; 2203121C)",
"Content-Type": "application/x-www-form-urlencoded",
}
headers.update(auth_headers)
url = f"https://api.tiktokv.com/passport/user/login/?{params}"
response = requests.post(url, headers=headers, data=data)
print(response.json())
TTEncrypt Device Registration
import requests
from tiktokforge import TikTokSigner
device_info = {
"magic_tag": "ss_app_log",
"header": {
"display_name": "TikTok",
"update_version_code": 2023700040,
"manifest_version_code": 2023700040,
"aid": 1233,
"channel": "googleplay",
"package": "com.zhiliaoapp.musically",
"version_name": "37.0.4",
"version_code": 2023700040,
"os": "Android",
"os_version": "9",
"os_api": 28,
"device_model": "2203121C",
"device_brand": "Xiaomi",
"cpu_abi": "arm64-v8a",
"language": "en",
"timezone": -5,
},
"_gen_time": 1706789012345,
}
encrypted_payload = TikTokSigner.encrypt(device_info)
auth_headers = TikTokSigner.generate_headers(
params="aid=1233&app_name=musical_ly",
data=encrypted_payload,
)
headers = {
"User-Agent": "com.zhiliaoapp.musically/2023700040 (Linux; U; Android 9; en_US; 2203121C)",
"Content-Type": "application/octet-stream",
}
headers.update(auth_headers)
url = "https://log.tiktokv.com/service/2/device_register/?aid=1233&app_name=musical_ly"
response = requests.post(url, headers=headers, data=encrypted_payload)
Protobuf Encode/Decode
from tiktokforge import encode, decode
data = {1: "hello", 2: 42, 3: b"raw_bytes"}
encoded = encode(data)
print(f"Encoded: {encoded.hex()}")
decoded = decode(encoded)
print(f"Decoded: {decoded}")
API Reference
TikTokSigner.generate_headers()
TikTokSigner.generate_headers(
params, # str | dict — URL query parameters (required)
data=None, # str | bytes | dict — POST body
device_id=None, # str — device identifier
aid=1233, # int | str — application ID
lc_id=2142840551,
sdk_ver="v05.01.02-alpha.7-ov-android",
sdk_ver_code=83952160,
version_name="37.0.4",
version_code=2023700040,
cookie=None, # str — cookie string
unix=None, # int — unix timestamp (auto if None)
)
Returns: dict with keys:
x-ss-req-ticket— request timestamp in millisecondsx-tt-trace-id— trace identifierx-ss-stub— MD5 hash of body (if data provided)x-ladon— Ladon tokenx-gorgon— Gorgon signaturex-khronos— unix timestampx-argus— Argus tokencookie— (if provided)
TikTokSigner.encrypt(data) / TikTokSigner.decrypt(data)
Encrypt/decrypt payloads using TTEncrypt algorithm.
generate_web_headers(url_params, user_agent, referer, ts)
Returns a dict with web-specific headers including msToken, verifyFp, X-Bogus, X-Gnarly, webId.
Default Values (TikTok Android 37.0.4)
| Parameter | Default |
|---|---|
aid |
1233 |
lc_id |
2142840551 |
sdk_ver |
v05.01.02-alpha.7-ov-android |
sdk_ver_code |
83952160 |
version_name |
37.0.4 |
version_code |
2023700040 |
Disclaimer
This library is for educational and research purposes only. Use must comply with TikTok's Terms of Service and applicable laws. The author is not responsible for any misuse.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tiktok_forge-0.0.1.tar.gz.
File metadata
- Download URL: tiktok_forge-0.0.1.tar.gz
- Upload date:
- Size: 38.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0293803ba7015d7692d0c97731bfb3305217fad43edb07b4699615db37f07065
|
|
| MD5 |
e228d275c3a332af53f30487a5f01345
|
|
| BLAKE2b-256 |
d6e2849fa03caa0f43bca87049d5f4959216432fd25c678bd2f77f80a5c3938c
|
File details
Details for the file tiktok_forge-0.0.1-py3-none-any.whl.
File metadata
- Download URL: tiktok_forge-0.0.1-py3-none-any.whl
- Upload date:
- Size: 41.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08350822393d0f1a70967c82089d2d162448fcd974c65ebe0fe35c5a5e88a301
|
|
| MD5 |
91cf856ef09e980a7d639d9fc1f05726
|
|
| BLAKE2b-256 |
215e876ce229f8ffea4110f72bfc9f92966114c175324a2acbb3a97c2dad7128
|