Mevcut kali-mcp'yi Go ile yeniden uygulamayı denedim.
(github.com/found-cake)Merhaba. Bilgi güvenliği bölümünde okuyan bir üniversite öğrencisiyim.
Sızma testi / trafik testi / CTF otomasyon çalışmalarında kali-mcp'yi sıkça kullanıyordum; ancak birden fazla ajanı aynı anda bağladığım ortamlarda darboğaz yaşamaya başlayınca bunu Go ile kendim yeniden uygulamayı denedim.
GitHub: https://github.com/found-cake/kali-mcp-go
Mevcut kali-mcp yapısı ve sınırları
Orijinal sürüm Flask + Python ile uygulanmış ve CommandExecutor sınıfı, her istek için subprocess.Popen oluşturduktan sonra stdout/stderr'i ayrı ayrı okumak için ek olarak 2 daemon thread başlatan bir yapıya sahip.
Tek bir ajan için yeterli olsa da, multi-agent ortamında eşzamanlı istekler yığıldığında şu sorunlar ortaya çıkıyor.
- Flask'ın varsayılan tek worker yapısı — ajanlar birbirini blokluyor
- Her istekte process + thread oluşturma ek yükü
- Ajanların yanıt gecikmesini timeout sanıp aynı işi yeniden denemesi
Başlıca değişiklikler
Sunucu
- Önceki: Flask (varsayılan tek worker)
- Değişiklik: Fiber v3 / fasthttp — tam eşzamanlılık
Çıktı toplama
- Önceki: 2 daemon thread ile readline döngüsü
- Değişiklik: 2 goroutine + WaitGroup ile senkronizasyon; stdout/stderr toplama zamanlaması net biçimde eşlenerek çıktı kaybı olmadan işleniyor
timeout/cancel
- Önceki:
process.wait(timeout=...)+ zorla kill - Değişiklik: context tabanlı — pipe'lar da doğru şekilde kapanıyor
Metasploit geçici dosyası
- Önceki:
/tmp/mks_msf_resource.rcsabit kodlu — eşzamanlı isteklerde race condition riski - Değişiklik:
os.CreateTemp— her istek için benzersiz dosya adıyla güvenli işlem
tshark desteği
- Önceki: yok
- Değişiklik: özel endpoint eklendi
Mimari
İç yapıyı değiştirirken mevcutla aynı 2 katmanlı yapıyı korudum.
[AI Client] →(MCP stdio)→ [mcp-client] →(HTTP + Bearer token)→ [kali-server] →(exec)→ [nmap, tshark, ...]
Henüz yorum yok.