Skip to main content

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 milliseconds
  • x-tt-trace-id — trace identifier
  • x-ss-stub — MD5 hash of body (if data provided)
  • x-ladon — Ladon token
  • x-gorgon — Gorgon signature
  • x-khronos — unix timestamp
  • x-argus — Argus token
  • cookie — (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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tiktok_forge-0.0.1.tar.gz (38.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tiktok_forge-0.0.1-py3-none-any.whl (41.1 kB view details)

Uploaded Python 3

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

Hashes for tiktok_forge-0.0.1.tar.gz
Algorithm Hash digest
SHA256 0293803ba7015d7692d0c97731bfb3305217fad43edb07b4699615db37f07065
MD5 e228d275c3a332af53f30487a5f01345
BLAKE2b-256 d6e2849fa03caa0f43bca87049d5f4959216432fd25c678bd2f77f80a5c3938c

See more details on using hashes here.

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

Hashes for tiktok_forge-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 08350822393d0f1a70967c82089d2d162448fcd974c65ebe0fe35c5a5e88a301
MD5 91cf856ef09e980a7d639d9fc1f05726
BLAKE2b-256 215e876ce229f8ffea4110f72bfc9f92966114c175324a2acbb3a97c2dad7128

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page