Repository: github.com/code-root/TikTokDeviceGenerator · Releases: all versions · Latest: v1.0.0
Desktop GUI (Tkinter) that generates device-registration payloads via Java / unidbg, POSTs them to TikTok’s device register endpoint, and saves results as JSON with batch mode, threading, and optional proxy support.
Documentation: English (this file) · Arabic — README.ar.md
Notice: Use this tool only in compliance with applicable laws and service terms. This document describes technical behavior only.
Search / topics: TikTok account creation (device binding), device_register, device_id / install_id (IID), signed registration payload (Java + native / unidbg), batch device registration, automation, optional proxy. Repository topics on GitHub include account-creation, device-registration, request-signing, tiktok-api, and related labels.
- Builds random inputs (e.g.
openudid, timestamps, MAC-like pattern) and passes them to Java throughLibs/unidbg.jar, loading natives fromLibs/prebuilt/<platform>/. - Parses the binary payload from unidbg stdout (
hex=…block). - Sends POST to
https://log-va.tiktokv.com/service/2/device_register/with fixed headers andcontent-type: application/octet-stream;tt-data=a. - On successful JSON, stores
device_id,install_id(and string variants when present) plus metadata. - In batch mode, runs many devices in parallel with
ThreadPoolExecutor; Stop cancels remaining work (in-flight tasks may still finish).
| Component | Notes |
|---|---|
| Python | Modern syntax (e.g. str | None). Python 3.10+ recommended. |
| Packages | See requirements.txt — notably requests[socks] for SOCKS proxies. |
| Java | JVM able to run Libs/unidbg.jar. On 64-bit Windows, use 64-bit Java to match Libs/prebuilt/win64/. |
| Repo files | Libs/unidbg.jar and Libs/prebuilt/<platform>/ (e.g. win64, linux64, osx64). |
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS / Linux:
source .venv/bin/activate
pip install -r requirements.txtInstall a JDK/JRE and verify java -version. If only 32-bit Java is installed on 64-bit Windows while the app uses win64 natives, unidbg will fail — see Java & native libraries.
python DeviceGenerator.pyThere is no separate CLI; all options are in the GUI.
Versioned downloads, changelogs, and tagged snapshots: github.com/code-root/TikTokDeviceGenerator/releases
- Latest tag: v1.0.0
- A prebuilt
.exe(when published) will appear under Assets on a release; you still needLibs/and a suitable Java runtime unless the release notes say otherwise.
TikTokDeviceGenerator-main/
├── DeviceGenerator.py # GUI + batch worker + HTTP
├── requirements.txt
├── README.md # This file (English)
├── README.ar.md # Arabic documentation
├── assets/ # Support / deposit QR images
├── Libs/
│ ├── unidbg.jar
│ └── prebuilt/ # win64, linux64, osx64, ...
├── Device/ # devices_001.json, ...
└── generated_devices/ # _batch_summary_*.json
Code constants:
DEVICES_PER_JSON_FILE = 50— records per file underDevice/.DEVICE_REGISTER_URL— register endpoint URL.
Header — app title and short subtitle.
Action bar
- Start — validates
unidbg.jar,Libs/prebuilt/<platform>, counts, threads, and proxy URL (if any). - Stop — signals cancel; pending futures are cancelled; progress reflects completed work.
- Open output folder — opens the folder path currently shown in Output folder (e.g.
os.startfileon Windows).
Batch options
- Number of devices — 1–9999.
- Threads — 1–64, capped by device count.
- Output folder — path shown in the field and used only for Open output folder.
Important:DeviceGenerator.pyalways writes device chunks to<project>/Device/and batch summaries to<project>/generated_devices/, regardless of this field. Change it to open another folder for convenience (e.g. after you point it atgenerated_devices). - Proxy URL (optional) — applied to all
device_registerrequests in the batch.
Last device (preview) — read-only OpenUDID, Device ID, IID with Copy buttons; updates on each successful registration in the current batch.
Progress — indeterminate while preparing, then determinate by completed/total; status line combines count/percent and a short message.
Log — per device: URL, headers, hex preview of body, response or errors. request_log is stripped before writing each record to Device/devices_*.json to keep files smaller; the UI still shows full logs during the run.
Device/
- Files
devices_001.json, …; part numbers continue from the highest existingdevices_*.json. - Each file:
saved_at,part,devices_per_file,count, anddevices:[{ "batch_index": n, "record": { ... } }, …]. recordincludes fields likestatus,input,network, ids,register_response, etc., usually withoutrequest_log.
generated_devices/
- Each batch run creates
_batch_summary_YYYYMMDD_HHMMSS.jsonwithrequested_devices,threads,success,failed,completed_tasks,cancelled, paths, chunk size, andnetwork(includingproxy_url_maskedwhen a proxy is used).
Default “Output folder” field
- Initialized to
<project>/generated_devicesviadefault_output_dir()so it matches where summaries are written; you may edit the field for which folder Open output folder opens.
Supported schemes: http, https, socks5, socks5h.
http://127.0.0.1:8080
http://user:password@host:port
socks5h://127.0.0.1:1080
Install requests[socks] for SOCKS. Exported JSON uses proxy_url_masked under network when credentials are present.
Approximate invocation from Libs/:
java -jar -Djna.library.path="<prebuilt>" -Djava.library.path="<prebuilt>" unidbg.jar "<message>"
<prebuilt> is Libs/prebuilt/<getsystem()> (e.g. win64 on 64-bit Windows).
get_java_exe() tries JAVA_HOME, a common Windows path, then java on PATH. On 64-bit Windows it prefers a JVM that reports 64-Bit in java -version output.
| Symptom | Likely cause |
|---|---|
Missing unidbg.jar |
File missing at Libs/unidbg.jar. |
Missing native libraries |
Wrong or missing Libs/prebuilt/<platform>. |
unidbg fails / no hex=… |
Wrong Java arch, bad cwd, or unexpected JVM output (check Log / stderr in failure payload). |
| HTTP / JSON errors | Network, block, bad proxy, or non-JSON response. |
| SOCKS fails | Missing requests[socks] or unsupported URL. |
| Tk / button errors | Use official Python with Tk; for PyInstaller builds, bundle Tcl/Tk correctly. |
- Original work attributed to xSaleh — thank you.
- Branding / contact in the app footer is defined in
DeviceGenerator.py(e.g. Storage TE).
| Developer | Mostafa Al-Bagouri |
| Company | Storage TE |
| +20 100 199 5914 |
If this tool is useful to you, optional support helps maintain and improve it. Pick whatever works best for you.
| Channel | How to support |
|---|---|
| PayPal | paypal.me/sofaapi |
| Binance Pay / UID | 1138751298 — send from the Binance app (Pay / internal transfer when available). |
| Binance — deposit (web) | Deposit crypto (Binance) — sign in, pick the asset, then select BSC (BEP20). |
| BSC address (copy) | 0x94c5005229784d9b7df4e7a7a0c3b25a08fd57bc |
Network: Use BSC (BEP-20) only. This address is for USDT (BEP-20) and BTC on BSC (Binance-Peg / in-app “BTC” on BSC), matching the Binance deposit screens below. Do not send native Bitcoin (on-chain BTC), ERC-20, or NFTs to this address.
| USDT · BSC | BTC · BSC |
|---|---|
![]() |
![]() |

