Ilk Commit

This commit is contained in:
2026-05-06 10:43:38 +03:00
commit 2275c078eb
8 changed files with 7731 additions and 0 deletions

245
README.md Normal file
View File

@@ -0,0 +1,245 @@
# 🔍 Network Switch Discovery Tool
PowerShell tabanlı, SSH + SNMP destekli, çoklu marka ağ switch keşif aracı.
Cisco, HP/Aruba, Ubiquiti/UniFi, Huawei, TP-Link ve diğer markaları otomatik olarak tespit eder.
---
## 📁 Dosya Yapısı
```
NetworkSwitchDiscovery\
├── Start-SwitchDiscovery.ps1 ← İnteraktif menü (buradan başla)
├── Invoke-SwitchDiscovery.ps1 ← Ana keşif motoru
├── discovery_config.json ← Otomatik kaydedilen ayarlar (ilk çalıştırmada oluşur)
├── lib\
│ └── SharpSnmpLib.dll ← (İsteğe bağlı) Gelişmiş SNMP desteği
└── README.md
```
---
## ⚙️ Gereksinimler
| Gereksinim | Açıklama |
|---|---|
| PowerShell 5.1+ | Windows 10/11 ile birlikte gelir |
| [Posh-SSH](https://github.com/darkoperator/Posh-SSH) | SSH bağlantısı için (otomatik kurulum menüde mevcut) |
| .NET Framework 4.7+ | SNMP UDP soketi için |
| SharpSnmpLib.dll | İsteğe bağlı, gelişmiş SNMP v3 desteği için |
---
## 🚀 Hızlı Başlangıç
### 1. PowerShell'i Yönetici Olarak Aç
```powershell
# Execution Policy (bir kez gerekli)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
### 2. Menüyü Başlat
```powershell
cd C:\Tools\NetworkSwitchDiscovery
.\Start-SwitchDiscovery.ps1
```
### 3. Veya Doğrudan Parametreli Çalıştır
```powershell
# CIDR aralığı, SSH + SNMP birlikte
.\Invoke-SwitchDiscovery.ps1 -IPRange "192.168.1.0/24" -Username admin -Method Both
# Sadece SNMP, farklı community
.\Invoke-SwitchDiscovery.ps1 -IPRange "10.0.0.1-10.0.0.50" -Method SNMP -SNMPCommunity private
# Tek IP, sadece SSH
.\Invoke-SwitchDiscovery.ps1 -IPRange "172.16.0.1" -Username admin -Password "sifre123" -Method SSH
```
---
## 📋 Parametreler
| Parametre | Varsayılan | Açıklama |
|---|---|---|
| `-IPRange` | *(zorunlu)* | CIDR, tire veya tekil IP |
| `-Username` | — | SSH kullanıcı adı |
| `-Password` | — | SSH şifre (girilmezse güvenli prompt açılır) |
| `-SNMPCommunity` | `public` | SNMP community string |
| `-SNMPVersion` | `v2c` | v1, v2c veya v3 |
| `-Method` | `Both` | SSH, SNMP veya Both |
| `-OutputPath` | Script dizini | CSV/HTML çıktı klasörü |
| `-MaxThreads` | `20` | Paralel tarama thread sayısı |
| `-SSHPort` | `22` | SSH port numarası |
| `-Timeout` | `5` | Bağlantı zaman aşımı (saniye) |
---
## 🏷️ Desteklenen Markalar ve SSH Komutları
### Cisco IOS / IOS-XE
```
terminal length 0
show version
show running-config | include hostname
```
Tespit: Banner'da `Cisco` ifadesi veya SNMP sysDescr
### HP / Aruba ProCurve
```
no page
show system information
show version
```
Tespit: `HP`, `ProCurve`, `Aruba` ifadeleri
### Ubiquiti EdgeSwitch / UniFi
```
show version
show system
```
Tespit: `Ubiquiti`, `EdgeOS`, `UniFi` ifadeleri
### MikroTik RouterOS
```
/system identity print
/system resource print
/system routerboard print
```
Tespit: `MikroTik` ifadesi
### Huawei VRP
```
screen-length 0 temporary
display version
display sysname
```
Tespit: `Huawei` ifadesi
### TP-Link / Diğer
```
show version
show system
```
Tespit: `TL-`, model kodu deseni
---
## 📡 SNMP OID Referansı
| OID | Açıklama |
|---|---|
| `1.3.6.1.2.1.1.1.0` | sysDescr — Cihaz tam açıklaması |
| `1.3.6.1.2.1.1.5.0` | sysName — Hostname |
| `1.3.6.1.2.1.1.4.0` | sysContact — İletişim bilgisi |
| `1.3.6.1.2.1.1.6.0` | sysLocation — Fiziksel konum |
| `1.3.6.1.2.1.1.3.0` | sysUpTime — Çalışma süresi |
SNMP community string varsayılan olarak `public` kullanılır.
Cihazda SNMP devre dışıysa veya community yanlışsa SNMP sütunu `Başarısız` gösterir.
---
## 📤 Çıktı Dosyaları
Her tarama sonunda iki dosya oluşturulur:
### CSV (`SwitchDiscovery_YYYYMMDD_HHmmss.csv`)
Excel veya başka araçlarda açılabilir, UTF-8 kodlamalı.
| Alan | Açıklama |
|---|---|
| IP | Cihaz IP adresi |
| Hostname | Switch hostname (SNMP/SSH'dan) |
| DNSName | DNS çözümlemesi |
| Vendor | Tespit edilen marka |
| Model | Cihaz modeli |
| FirmwareVer | IOS/Firmware versiyonu |
| SysLocation | SNMP konum bilgisi |
| SysContact | SNMP iletişim bilgisi |
| Uptime | Cihaz çalışma süresi |
| SSHStatus | Başarılı / Başarısız / Atlandı |
| SNMPStatus | Başarılı / Başarısız / Atlandı |
| SysDescr | Ham sysDescr verisi |
### HTML (`SwitchDiscovery_YYYYMMDD_HHmmss.html`)
Tarayıcıda açılan interaktif rapor:
- Anlık arama/filtreleme
- Marka renkli rozet gösterimi
- SSH/SNMP durum badgeleri
- Özet istatistik kartları
---
## 💡 Pratik Kullanım Örnekleri
```powershell
# Tüm /24 ağı tara, sonucu masaüstüne kaydet
.\Invoke-SwitchDiscovery.ps1 `
-IPRange "192.168.10.0/24" `
-Username netadmin `
-SNMPCommunity mycompany `
-Method Both `
-OutputPath "$env:USERPROFILE\Desktop" `
-MaxThreads 30
# Birden fazla switch IP'si — tire formatıyla
.\Invoke-SwitchDiscovery.ps1 `
-IPRange "10.1.1.1-10.1.1.20" `
-Username cisco `
-Method SSH `
-SSHPort 2222
# Sadece SNMP, hızlı envanter
.\Invoke-SwitchDiscovery.ps1 `
-IPRange "172.20.0.0/22" `
-Method SNMP `
-SNMPCommunity readonly `
-MaxThreads 50 `
-Timeout 3
```
---
## 🔧 Sorun Giderme
| Sorun | Çözüm |
|---|---|
| `Posh-SSH bulunamadı` | Menüden [8] seçerek otomatik kurulum yap |
| SSH bağlantı hatası | Firewall port 22'yi açık, cihazda SSH aktif mi kontrol et |
| SNMP yanıt vermiyor | Community string'i doğrula, cihazda SNMP v2c aktif mi kontrol et |
| `execution policy` hatası | `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser` çalıştır |
| Thread hatası | `-MaxThreads` değerini düşür (örn. 5) |
| Şifre prompt açılmıyor | `-Password` parametresini doğrudan ver |
---
## 🔒 Güvenlik Notları
- Şifreler `discovery_config.json` dosyasına **kaydedilmez**, her oturumda sorulur.
- SSH host anahtarları `Posh-SSH` tarafından otomatik kabul edilir (`-AcceptKey`).
Üretim ortamında host key doğrulama etkinleştirilmesi önerilir.
- SNMP v1/v2c community string düz metin iletilir. Mümkünse SNMP v3 kullan.
- Tarama yalnızca yetkili ağlarda yapılmalıdır.
---
## 📦 İsteğe Bağlı: SharpSnmpLib Kurulumu (Gelişmiş SNMP)
```powershell
# NuGet ile indir
Install-Package SharpSnmpLib -Destination .\lib
# Veya dotnet CLI
dotnet add package SharpSnmpLib
# Ardından bin\Debug\net*\SharpSnmpLib.dll dosyasını .\lib\ klasörüne kopyala
```
SharpSnmpLib olmadan araç yerleşik UDP SNMP implementasyonu kullanır (v1/v2c destekli).
---
*Mustafa Özkaya — NetworkSwitchDiscovery v1.0*