Metadata-Version: 2.4
Name: tiktok-forge
Version: 0.0.1
Summary: TikTok signature forge — Android & Web authentication signature generator (Argus, Gorgon, Ladon, TTEncrypt, X-Bogus, msToken)
Project-URL: Homepage, https://github.com/MERO-QP4RM/tiktok-forge
Project-URL: Repository, https://github.com/MERO-QP4RM/tiktok-forge
Project-URL: Issues, https://github.com/MERO-QP4RM/tiktok-forge/issues
Author: MERO
License: MIT
License-File: LICENSE
Keywords: android,api,authentication,mstoken,signature,tiktok,ttencrypt,verifyfp,x-argus,x-bogus,x-gorgon,x-ladon
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Requires-Dist: pycryptodome>=3.20.0
Provides-Extra: dev
Requires-Dist: build>=1.2.0; extra == 'dev'
Requires-Dist: mypy>=1.10.0; extra == 'dev'
Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.4.0; extra == 'dev'
Requires-Dist: twine>=5.0.0; extra == 'dev'
Description-Content-Type: text/markdown

# tiktok-forge

**TikTok signature forge** — Android & Web authentication signature generator.

**Developer:** MERO · Telegram: [@QP4RM](https://t.me/QP4RM)  
**Version:** 0.0.1  
**Python:** 3.10+

---

## Installation

```bash
pip install tiktok-forge
```

Or from source:

```bash
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

```python
from tiktokforge import TikTokSigner

params = "aid=1233&app_name=musical_ly&device_platform=android"

headers = TikTokSigner.generate_headers(params=params)
print(headers)
```

### Shortcut Functions

```python
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

```python
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

```python
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

```python
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

```python
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

```python
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

```python
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()`

```python
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.
