
🔪 टोकन द्वारा Telegram बॉट्स के लिए Dumper और ripper। वेब इंटरफ़ेस के साथ फ़ॉरेंसिक CLI टूल
सभी Telegram बॉट सामग्री को आसानी से डंप करें।
इनपुट: केवल बॉट टोकन।
आउटपुट: बॉट का नाम और जानकारी, सभी चैट का टेक्स्ट इतिहास और मीडिया, बॉट के उपयोगकर्ताओं की जानकारी और फ़ोटो।
यह एक Python कार्यान्वयन है।
🚀 ScBoln द्वारा तेज़ Golang संस्करण।
डंप के लिए Telegram-Web जैसा ब्राउज़र UI: चैट सूची, इनलाइन मीडिया के साथ पूरा संदेश इतिहास, फ़ोटो कैरोसेल के साथ उपयोगकर्ता प्रोफ़ाइल, और एक साथ सभी बातचीत में वैश्विक खोज। लाइव मोड समर्थित: यह पृष्ठभूमि में डंपर चलाता है और नए संदेशों को वास्तविक समय में ब्राउज़र पर स्ट्रीम करता है।
उपयोग का मामला — लीक हुए बॉट टोकन का पेंटेस्टिंग। Telegram बॉट टोकन किसी भी एंगेजमेंट में लगातार सामने आते हैं — मोबाइल/डेस्कटॉप ऐप में हार्ड-कोडेड, किसी रेपो में कमिट किए गए, या किसी CI लॉग, कॉन्फ़िग फ़ाइल, या क्लाइंट-साइड बंडल में पड़े हुए। अपने आप में एक टोकन कम-गंभीरता वाली खोज लगता है; इसे यहाँ लोड करने पर असली प्रभाव क्षेत्र दिखता है। किसी आंतरिक बॉट (सपोर्ट डेस्क, IT/DevOps हेल्पर, AI सहायक) के लिए यह उसके साथ हुई हर कर्मचारी की बातचीत है — आंतरिक होस्टनाम, VPN प्रोफ़ाइल, क्रेडेंशियल, और इन्फ्रास्ट्रक्चर विवरण — ब्राउज़ करने और खोजने योग्य, ताकि आप प्रभाव का दायरा तय कर सकें और अपनी रिपोर्ट में खोज का प्रमाण दे सकें।

docker run --rm -p 8010:8010 -v "$PWD:/data" soxoj/telegram-bot-dumper-web
docker compose up --build # builds and serves on http://127.0.0.1:8010
pip install -r requirements.txt
python webapp/server.py # serves the current directory's dumps on :8010
http://127.0.0.1:8010 खोलें और डंप फ़ोल्डर चुनने के लिए बॉट टोकन पेस्ट करें। रीड-ओनली व्यूइंग ऑथ-फ्री, स्थानीय है, और इसके लिए किसी API क्रेडेंशियल की आवश्यकता नहीं है। लाइव मोड को इसके अतिरिक्त my.telegram.org से API_ID/API_HASH चाहिए, जो एनवायरनमेंट के माध्यम से पास किए जाते हैं — कभी भी इमेज में बेक नहीं किए जाते:
# one-off container
docker run --rm -p 8010:8010 -v "$PWD:/data" \
-e API_ID=123456 -e API_HASH=abc... soxoj/telegram-bot-dumper-web
# or with docker compose: put them in a local .env (see .env.example)
cp .env.example .env && $EDITOR .env && docker compose up
PORT और HOST एनवायरनमेंट वेरिएबल डिफ़ॉल्ट (8010, 127.0.0.1) को ओवरराइड करते हैं।
--down / --start-from-id) चलाकर मीडिया सामग्री के साथ बॉट के संदेशों को डंप करें।--listen-only): वास्तविक समय में नए संदेश प्राप्त करें और पहले देखे गए आईडी से नीचे की ओर इतिहास डंप करने की पेशकश करें।[from:USER][group:CHAT] के साथ टैग किया जाता है। जाने वाले बॉट DM को [to:USER] के साथ टैग किया जाता है।--listen-only उन्हें वास्तविक समय में डंप करेगा। प्राइवेसी मोड सक्षम (डिफ़ॉल्ट) होने पर बॉट केवल कमांड, मेंशन, और उत्तर देखता है।requirements.txt देखें)API_ID और API_HASH प्राप्त करने के लिए एक Telegram एप्लिकेशन रजिस्टर करेंpip install -r requirements.txt
# Telegram API credentials from https://my.telegram.org (read from the environment)
export API_ID=123456
export API_HASH=abc...
आईडी 1..∞ को 200 के बैच में ऊपर की ओर चलाता है, हर संदेश, सभी मीडिया, और सभी उपयोगकर्ता प्रोफ़ाइल फ़ोटो डाउनलोड करता है। डिफ़ॉल्ट रूप से, डंपर डंप पूरा होने के बाद नए आने वाले संदेशों को सुनना जारी रखता है। इतिहास डंपिंग के तुरंत बाद बाहर निकलने के लिए (स्क्रिप्ट और cron जॉब के लिए आदर्श), --no-listen पास करें।
./dumper.py --token 12345678:ABCe2rPVteUWZ7wLeCqCb3CH3ilUY_fLabc
एक सक्रिय बॉट के लिए ऊपर की ओर चलना पुरानी हटाई गई (डिलीट/एक्सपायर्ड) आईडी के लंबे हिस्से से टकराता है और हार मान लेता है। सबसे हाल की आईडी से नीचे की ओर चलना बहुत अधिक उत्पादक है। --down ऊपरी सीमा को स्वतः जाँचता है (10 की घातें 10⁹ तक) और जो सबसे ऊँची गैर-खाली आईडी मिलती है उससे शुरू करता है:
./dumper.py --token TOKEN --down
नोट। Telegram बॉट संदेश इतिहास को हमेशा के लिए नहीं रखता। अनुभवजन्य रूप से, केवल अंतिम कुछ सौ हज़ार संदेश ही सुलभ रहते हैं — हमारे परीक्षणों में एक व्यस्त बॉट ने लगभग अंतिम 500K संदेशों तक पहुँच दी, इससे पहले कि
messages.getMessagesपुरानी आईडी के लिए केवलMessageEmptyलौटाने लगा। यदि आपके बॉट ने ऐतिहासिक रूप से इससे अधिक ट्रैफ़िक संसाधित किया है, तो पुराना इतिहास सर्वर-साइड से चला गया है और कोई भी फ़्लैग उसे पुनर्प्राप्त नहीं करेगा।
यदि आप पहले से ही एक हाल की संदेश आईडी जानते हैं (जैसे वह जो आपने वास्तविक समय में देखी), तो आप जाँच छोड़ सकते हैं और ठीक उसी से शुरू कर सकते हैं:
./dumper.py --token TOKEN --start-from-id 11922524
कुछ भी डंप न करें; बस देखें कि क्या आता है। पहले आने वाले संदेश पर स्क्रिप्ट उस आईडी से नीचे की ओर डंप शुरू करने की पेशकश करेगी:
./dumper.py --token TOKEN --listen-only
तब उपयोगी जब आपको केवल यह सूची चाहिए कि किसने बॉट से बात की है — कोई ज़िप नहीं, कोई jpeg नहीं, कोई प्रति-चैट *_history.txt नहीं।
./dumper.py --token TOKEN --down --users-csv --no-photos --no-media --no-history
आउटपुट: <bot_id>/users.csv जिसमें कॉलम id, username, first_name, last_name, phone, lang_code, bot, premium, verified, scam, fake हैं।
नीचे की ओर चलना हर बैच के लिए Requesting message ids X..Y ... प्रिंट करता है। यदि रन बाधित हो जाए, तो अंतिम प्रिंट किए गए निचले बाउंड से पुनः आरंभ करें:
./dumper.py --token TOKEN --start-from-id <Y>
छोटे बैच → लॉग में तेज़ फ़ीडबैक और FloodWait के बाद छोटी रिकवरी विंडो। बड़े बैच → विरल / हटाए गए आईडी रेंज को स्कैन करते समय कम राउंड-ट्रिप। 1000 तक के मान व्यवहार में ठीक काम करते हैं।
./dumper.py --token TOKEN --down --batch-size 50
./dumper.py --token TOKEN --down --batch-size 500
./dumper.py --token TOKEN --down --batch-size 1000
| फ़्लैग | प्रभाव |
|---|---|
--lookahead N | पूरी तरह खाली बैच के बाद, हार मानने से पहले N और बैच स्कैन करना जारी रखें। तब उपयोगी जब आईडी विरल हों। |
--no-photos | उपयोगकर्ता प्रोफ़ाइल फ़ोटो (अवतार) डाउनलोड करना छोड़ें। |
--no-media | संदेशों के अंदर फ़ोटो और दस्तावेज़ डाउनलोड करना छोड़ें; मेटाडेटा अभी भी टेक्स्ट इतिहास में लिखा जाता है। |
--no-history | प्रति-चैट <chat_id>_history.txt न लिखें। सबसे हल्के संभव रन के लिए --users-csv के साथ संयोजित करें। |
--users-csv | उपयोगकर्ताओं को <user_id>/<user_id>.json डायरेक्टरी के बजाय एक ही <bot_id>/users.csv में लिखें। |
--tor | 127.0.0.1:9050 पर स्थानीय Tor SOCKS5 प्रॉक्सी के माध्यम से रूट करें (Telegram ब्लॉकिंग बायपास)। |
पूरी सूची के लिए ./dumper.py --help चलाएँ।