echidna Kullanım Kılavuzu User Guide

echidna

Discord OSINT sorgu aracı — Telegram'dan komuta, sıfır kalıcılık
Discord OSINT lookup tool — operated via Telegram, zero persistence

Topluluk yöneticileri için tasarlanmış pasif gözlem aracı. Throwaway bir Discord hesabı sunuculara katılır, Telegram'dan bir ID gönderdiğinizde sistem o kullanıcının halka açık çapraz-sunucu izini iki HTML rapor halinde teslim eder.

A passive observation tool for community admins. A throwaway Discord account sits in servers; when you send an ID via Telegram, the system returns the user's publicly visible cross-server footprint as two HTML reports.

TypeScript sıfır disk yazımı zero disk writes systemd hardened Discord ToS riski Discord ToS risk

1.Hızlı kurulumQuickstart

Önceden: Debian/Ubuntu çalışan bir VM veya Raspberry Pi, Discord throwaway hesabı (≥30 günlük, 2FA açık), Telegram bot tokeni.

Prerequisites: a Debian/Ubuntu VM or Raspberry Pi, a throwaway Discord account (≥30 days, 2FA on), and a Telegram bot token.

  1. Node.js 22 LTS kur (tek seferlik) Install Node.js 22 LTS (one-time)
    curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
    sudo apt install -y nodejs git
  2. Repo'yu klonla ve bağımlılıkları kur Clone the repo and install dependencies
    git clone https://github.com/Algolagnia/echidna-dc.git echidna
    cd echidna
    npm ci --include=dev
    npm run build
  3. .env dosyasını doldur Fill in .env
    cp .env.example .env
    nano .env
    # DISCORD_TOKEN, TELEGRAM_BOT_TOKEN, ADMIN_CHAT_IDS
    chmod 600 .env

    Token nasıl alınır — aşağıda Yapılandırma bölümünde.

    How to obtain the tokens — see Configuration below.

  4. Testleri çalıştır (opsiyonel ama önerilen) Run the tests (optional but recommended)
    npm test   # 70 test, hepsi yeşil / all green
  5. Başlat Run
    npm start

    İlk başlangıçta discord_ready log'unu bekle. Sonra Telegram'da botuna /help gönder.

    Wait for the discord_ready log on first boot, then send /help to your bot on Telegram.

Production için (opsiyonel) For production (optional)

Yukarıdaki adımlar geliştirme için yeterli. 7/24 çalışma için deploy/echidna.service systemd birimini kullan — bakım bölümüne bak.

The steps above suffice for development. For 24/7 operation, use the systemd unit at deploy/echidna.service — see the Maintenance section.

İnternet erişimi olmayan VM için Air-gapped VM (no direct internet)

Host makinende git clone ile çek, klasörü tar czf echidna.tar.gz --exclude=node_modules --exclude=dist --exclude=.git echidna/ şeklinde paketle, scp ile VM'e at, VM içinde tar xzf ile aç ve adım 1'den (Node kurulumu) devam et.

On a connected host, git clone the repo, package with tar czf echidna.tar.gz --exclude=node_modules --exclude=dist --exclude=.git echidna/, transfer with scp, extract with tar xzf inside the VM, and continue from step 1 (Node install).

2.Sistem nasıl çalışırHow it works

Throwaway Discord hesabı (echidna) çok sayıda topluluk sunucusuna katılır ve pasif gözlemci olarak durur — mesaj yazmaz, ses kanalına girmez, hiç eylem yapmaz. Gateway üzerinden aldığı mesaj ve presence olayları sürecin RAM'inde tutulur. Admin Telegram'dan /lookup <id> gönderdiğinde sistem:

A throwaway Discord account (echidna) joins many community servers as a passive observer — it does not send messages, join voice, or take any action. Messages and presence events delivered via the gateway live in process RAM. When the admin sends /lookup <id> from Telegram, the system:

  1. Mutual sunucularda hedef kullanıcıyı tarar (rol, takma ad, voice state)
  2. scans mutual servers for the target (roles, nickname, voice state),
  3. Discord'un kendi search API'sinden son mesajlarını çeker (sunucu başına 100, configurable)
  4. pulls recent messages via Discord's search API (100/server by default, configurable),
  5. Profile endpoint'ten bio, badges, GitHub/Steam/Twitch gibi bağlantıları alır
  6. fetches bio, badges, and connections (GitHub/Steam/Twitch) from the profile endpoint,
  7. Üç analiz katmanını çalıştırır: risk taraması, davranışsal NLP, güven puanı
  8. runs three analysis layers: risk scan, behavioral NLP, confidence score,
  9. İki HTML raporu (kimlik + aktivite) Telegram'a iletir
  10. sends two HTML reports (identity + activity) to Telegram,
  11. Bellekteki veri scope dışına çıkar ve garbage collector tarafından silinir
  12. and lets the in-memory data fall out of scope for garbage collection.

Disk'e hiçbir şey yazılmaz. Production'da iki katmanlı koruma vardır: Node.js düzeyinde fs.writeFile türü API'ler runtime'da monkey-patch ile bloke edilir; systemd ReadOnlyPaths=/opt/echidna ile kernel düzeyinde aynı kural uygulanır.

Nothing is written to disk. Production has two layers of protection: at the Node.js level, fs.writeFile-family APIs are monkey-patched at startup; systemd enforces the same with ReadOnlyPaths=/opt/echidna at kernel level.

3.YeteneklerCapabilities

Kimlik & alias clustering

Identity & alias clustering

Username, global_name ve tüm sunucu takma adları case-insensitive dedupe

Username, global_name and every server nickname, deduplicated

Sunucu sınıflandırma

Server classification

Anime, sohbet, eğitim, dev, oyun, 18+, topluluk

Anime, chat, education, dev, gaming, 18+, community

Risk taraması

Risk scan

Phishing, scam, mass-mention, link shortener pattern'leri

Phishing, scam, mass-mention, URL shortener patterns

Davranışsal NLP

Behavioral NLP

Dil, yaş, cinsiyet ipuçları + ton/küfür/CAPS oranı

Language, age, gender hints + tone/profanity/CAPS rates

Güven puanı

Confidence score

0–100 puan, 6 faktör breakdown

0–100 score with 6-factor breakdown

Mesaj geçmişi

Message history

Discord search API ile sunucu başına 100-500 mesaj

100-500 messages per server via Discord search API

Anlık ses durumu

Live voice state

Şu anda hangi sunucu, kanal, süre, flag

Current guild, channel, duration, flags

Profile bağlantıları

Profile connections

GitHub, Steam, Twitch, Spotify, YouTube, vb.

GitHub, Steam, Twitch, Spotify, YouTube, etc.

4.Riskler ve uyarılarRisks & warnings

Discord ToS riski Discord ToS risk

Self-bot kullanımı Discord'un Hizmet Şartları'na aykırıdır. Hesap er ya da geç banlanır. Yalnızca throwaway hesap kullanın, ana hesabınızı asla.

Self-bot usage violates Discord's Terms of Service. The account will eventually be banned. Use only a throwaway, never your main account.

Ban'i hızlandıran davranışlar Behaviors that accelerate a ban
  • Datacenter IP'sinden login (AWS, GCP, DigitalOcean, vb.) — residential IP kullan
  • Logging in from datacenter IPs (AWS, GCP, DigitalOcean…) — use a residential IP
  • 100+ sunuca kısa sürede katılım — günde 2-4 sunucudan fazla katılma
  • Joining many servers quickly — limit to 2-4 servers per day
  • 30 günden yeni hesap — daha yaşlı throwaway tercih et
  • Account younger than 30 days — use an older throwaway
  • SEARCH_PAGES_PER_GUILD'i çok yüksek ayarlama (default 4 yeterli)
  • Raising SEARCH_PAGES_PER_GUILD too high (default 4 is enough)
Etik ve hukuki sorumluluk Ethical & legal responsibility
  • Yalnızca kendi yönettiğin topluluğun moderasyonu için kullan
  • Use only for moderating communities you yourself operate
  • Raporları üçüncü taraflarla paylaşma; taciz/dox amaçlı kullanma — suç teşkil edebilir
  • Don't share reports with third parties; never use for harassment or doxxing — may be a criminal offense
  • KVKK / GDPR yükümlülükleri sana aittir; analist sıfatınla veri işleyen sensin
  • GDPR/CCPA-like obligations are yours; you are the data processor
  • Yaş ve cinsiyet tahminleri kesinlik değil — confidence düşükse karar verme
  • Age and gender hints are estimates, not facts — don't decide on low-confidence signals
Hesap kaybedilirse If the account is lost

Yeni throwaway al, sunuculara yavaşça yeniden katıl, .env'de DISCORD_TOKEN'i güncelle, npm start ile yeniden başlat. Veri kaybı olmaz çünkü zaten persistence yoktur.

Get a new throwaway, re-join the servers slowly, update DISCORD_TOKEN in .env, restart with npm start. No data loss — nothing was persisted.

5.KomutlarCommands

KomutCommand AçıklamaDescription
/lookup <id> Tam analiz — kimlik, alias, mesajlar, voice, profil, risk, davranışsal NLP, güven puanı. İki HTML rapor ek olarak gelir. Full analysis — identity, aliases, messages, voice, profile, risk, behavioral NLP, confidence score. Two HTML reports attached.
/status Servis sağlığı, RAM cache boyutu, uptime Service health, RAM cache size, uptime
/help Komut listesi Command list

Rate limit: 6 lookup/dakika (default). Aşımda Telegram'a "rate limited" yanıtı döner; API çağrısı gönderilmez. Rate limit: 6 lookups/min (default). When exceeded, Telegram receives a "rate limited" reply; no API call is dispatched.

6.YapılandırmaConfiguration

6.1 Discord kullanıcı tokeni

6.1 Discord user token

Token = hesap erişimi. Token = full account access. Paylaşma, screenshot alma, repository'ye commitleme. Sızarsa Discord şifresini değiştir (mevcut tokenleri geçersiz kılar). Don't share, screenshot, or commit it. If leaked, change the Discord password to invalidate existing tokens.
  1. Tarayıcıda (incognito) throwaway hesabıyla https://discord.com/app'i aç
  2. In an incognito browser, open https://discord.com/app with the throwaway account
  3. F12Network sekmesiNetwork tab/api filter → Fetch/XHR
  4. Bir kanala tıkla; listeden bir messages isteğine tıkla
  5. Click a channel; then click a messages request in the list
  6. Sağ panelde HeadersRequest HeadersAuthorization: alanı tokendir
  7. In the right panel: HeadersRequest Headers → the Authorization: value is the token

6.2 Telegram bot tokeni

6.2 Telegram bot token

  1. @BotFather/newbot
  2. Görüntü adı ve kullanıcı adı belirle (kullanıcı adı _bot ile bitmeli)
  3. Set a display name and username (username must end in _bot)
  4. Verilen tokeni .env'de TELEGRAM_BOT_TOKEN alanına yapıştır
  5. Paste the token into .env under TELEGRAM_BOT_TOKEN
  6. /setprivacyDisable

6.3 Admin chat ID

6.3 Admin chat ID

  1. @userinfobot ile sohbet aç, otomatik yanıt verirstarts a chat, replies automatically
  2. Id: alanındaki sayıyı .env'e ADMIN_CHAT_IDS=… şeklinde ekle (virgülle çoklu)
  3. Add the Id: value to .env as ADMIN_CHAT_IDS=… (comma-separated for multiple)

6.4 Ayarlanabilen önemli env değerleri

6.4 Notable env values

Variable DefaultDefault AçıklamaDescription
RATE_LIMIT_LOOKUP_PER_MIN6Telegram /lookup limitiTelegram /lookup limit
SEARCH_PAGES_PER_GUILD4Sayfa başı 25 mesaj (default 100/server)25 messages/page (default 100/server)
SEARCH_MAX_GUILDS50Lookup başına search yapılacak sunucu sayısıServers searched per lookup
SEARCH_DELAY_BETWEEN_GUILDS_MS1500Sunucu arası gecikme (ban riski azaltır)Inter-guild delay (lowers ban risk)
MSG_CACHE_TOTAL50000RAM'de tutulacak toplam mesaj sayısı (LRU)Total messages held in RAM (LRU)

7.Analiz katmanlarıAnalysis layers

Risk taraması

Risk scan

Mesaj sample'larında lokal regex pattern'leri çalışır. Hiç dış API çağrısı yapmaz. Bulunan flag'ler kimlik raporunun başında pill'lerle gösterilir.

Local regex patterns over message samples; no external API. Flags appear as pills at the top of the identity report.

KategoriCategorySeviyeSeverityÖrnekExample
nitro-scamhigh"free nitro", "discord.gift/..."
phishing-urlhigh"steamcommunity.ru", "disc0rd.gg"
token-grabberhigh"token grabber", webhook URL pattern
crypto-scammedium"metamask verify", "free btc airdrop"
mass-mentionmedium5+ mention veya @everyone tekrarı5+ mentions or repeated @everyone
suspicious-linklowbit.ly, tinyurl, cutt.ly
invite-spamlowTek mesajda 2+ Discord davet2+ Discord invites in one message

Davranışsal NLP

Behavioral NLP

Kullanıcının kendi yazdığı mesajları ve rol etiketlerini analiz eder. 4 çıkarım: dil (TR/EN/AR/RU/DE/ES/FR), yaş (self-mention + nickname numerics), cinsiyet (rol + self-mention), ton (pozitif/nötr/negatif/karışık + küfür/CAPS/emoji oranı). Her çıkarım için low/medium/high confidence band'i gösterilir.

Analyzes the user's own messages and role labels. Four outputs: language (TR/EN/AR/RU/DE/ES/FR), age (self-mention + nickname numerics), gender (roles + self-mention), tone (positive/neutral/negative/mixed + profanity/CAPS/emoji rates). Each shown with a low/medium/high confidence band.

Güven puanı

Confidence score

0–100 puan. Raporun ne kadar zengin sinyale dayandığını ölçer — kullanıcı suçluluğunu değil. Faktörler: mutual guild sayısı (25), mesaj hacmi (25), profil sinyalleri (15), hesap yaşı (15), recency (10), search coverage (10). Bantlar: 0-34 düşük · 35-59 orta · 60-79 yüksek · 80+ çok yüksek.

A 0–100 score. Measures how rich the underlying signals are, not the user's guilt. Factors: mutual guild count (25), message volume (25), profile signals (15), account age (15), recency (10), search coverage (10). Bands: 0-34 low · 35-59 medium · 60-79 high · 80+ very-high.

8.BakımMaintenance

systemd ile 7/24 çalıştırma

Run 24/7 with systemd

sudo adduser --system --no-create-home --group --shell /usr/sbin/nologin echidna
sudo mkdir -p /opt/echidna
sudo cp -r dist node_modules package.json deploy /opt/echidna/
sudo cp .env /opt/echidna/.env
sudo chown -R echidna:echidna /opt/echidna
sudo chmod 600 /opt/echidna/.env
sudo cp deploy/echidna.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now echidna
sudo journalctl -u echidna -f

echidna.service hardening (ReadOnlyPaths, NoNewPrivileges, MemoryDenyWriteExecute, syscall filter) içerir. sudo systemd-analyze security echidna exposure ≤ 2.0 hedefler.

The echidna.service unit includes hardening (ReadOnlyPaths, NoNewPrivileges, MemoryDenyWriteExecute, syscall filter). Target: sudo systemd-analyze security echidna exposure ≤ 2.0.

Token yenileme

Token rotation

# Discord veya Telegram tokeni değişince
# When the Discord or Telegram token changes
sudo nano /opt/echidna/.env
sudo systemctl restart echidna

Güncelleme deploy

Deploy an update

# geliştirme makinesinde yeni tar.gz hazırla, sonra:
# build a new tar.gz on the dev machine, then:
sudo systemctl stop echidna
sudo rm -rf /opt/echidna/dist /opt/echidna/node_modules
sudo tar xzf /tmp/echidna.tar.gz -C /opt/echidna/
sudo -u echidna bash -c 'cd /opt/echidna && npm ci --include=dev && npm run build'
sudo systemctl start echidna

9.Sık sorulan sorularFrequently asked questions

Discord ID nasıl alınır?

How do I get a user's Discord ID?

Discord → Settings → Advanced → Developer Mode → kullanıcıya sağ tık → Copy User ID.

Discord → Settings → Advanced → Developer Mode → right-click the user → Copy User ID.

Drag-drop ile dosya transferi VM'de çalışmıyor

Drag-drop file transfer to the VM doesn't work

VMware/VirtualBox'ın drag-drop modülü kararsızdır. scp ile aktar (yukarıdaki hızlı kurulum adım 2).

VMware/VirtualBox's drag-drop is unreliable. Use scp instead (see Quickstart step 2).

npm ci sırasında "tsc: not found" hatası

"tsc: not found" during npm ci

Shell'de NODE_ENV=production set edilmişse devDependencies kurulmaz. unset NODE_ENV sonra npm ci --include=dev çalıştır.

If your shell has NODE_ENV=production set, devDependencies are skipped. Run unset NODE_ENV then npm ci --include=dev.

Tüm mesajlar görünmüyor

Not all messages are visible

Discord search API sayfa başına 25 mesaj döner. Default SEARCH_PAGES_PER_GUILD=4 = sunucu başına 100 mesaj. Raporda "showing N of M" dipnotu kaçırılan miktarı söyler. Daha yüksek değer (8 veya 20) ban riskini artırır.

Discord's search API returns 25 messages per page. Default SEARCH_PAGES_PER_GUILD=4 = 100/server. The "showing N of M" footnote in the report tells you what was missed. Higher values (8 or 20) raise ban risk.

Risk flag false positive — ne yapmalıyım?

A false-positive risk flag — what now?

Risk paneli bir öneri sistemidir. Evidence kısmında orijinal mesaj görünür; bağlamla beraber değerlendir. Örneğin "bit.ly" her zaman scam değildir.

The risk panel is advisory. Evidence shows the original message; judge in context. "bit.ly" isn't always a scam.

Yaş/cinsiyet tahmini güvenilir mi?

Are age/gender estimates reliable?

Hayır, tahmindir. "high" confidence = açık self-mention veya rol etiketi. "low" = nickname numerics veya zayıf ipucu. Hiçbiri kesinlik değildir; düşük confidence'a göre karar verme.

No — they are estimates. "high" = explicit self-mention or role label. "low" = nickname numerics or weak hint. Never facts; don't decide on low-confidence signals.

Cloud VM kullanabilir miyim?

Can I use a cloud VM?

Önerilmez. Datacenter IP'leri Discord tarafından bilinir; hesap saatler içinde banlanır. Lokal VM veya Raspberry Pi tercih et. Mecbursan WireGuard ile ev IP'sine tünel.

Not recommended. Datacenter IPs are well known to Discord; the account is typically banned within hours. Prefer a local VM or a Raspberry Pi. If you must, tunnel egress via WireGuard to a home IP.