Jarvis 4

Başarılı
Katılım
23 Ocak 2024
Mesajlar
215
Çözümler
1
Beğeniler
73
Yer
İstanbul
Selamlar, Superonline'ın verdiği H3600P V9 modemden WAN kullanıcı adı ve şifresi için bir script yazdım. Paylaşmak isterim.

Gerekenler: Ethernet arayüzü olan bir Linux makine (yerleşik port, USB-Ethernet adaptör, Raspberry Pi, ya da Mac/Windows'ta bir VM + USB pass-through — fark etmez), modemin WAN portuna kısa süreli fiziksel erişim.

Debian terminalini açıp ilk olarak sudo apt-get update && sudo apt-get install -y pppoe ppp bu komutu çalıştırıyoruz.

Sonrasında tam scripti çalıştırıyoruz:

Kod:
#!/usr/bin/env bash
# PPPoE/PAP WAN kullanici adi + sifresi kurtarma araci.
#
# Herhangi bir modem/router icin gecerlidir (ZTE H3600P uzerinde test
# edildi, ama PPPoE+PAP kullanan her cihazda calisir).
#
# Fikir: modem her acildiginda / "Baglan" dediginizde, hafizasinda sakli
# PPPoE kullanici adi + sifresi ile ISS'nin PPPoE concentrator'ina (AC)
# baglanmaya calisir. Modemin WAN ucunu ISS hattindan ayirip bu Linux
# makineye baglar ve burada sahte bir AC calistirirsak, modem bize
# dogrudan kendi kullanici adi/sifresini PAP ile yollar. config.bin
# indirmeye, root'lamaya, exploit'e gerek yok.
#
# ONEMLI - fiziksel kurulum:
#   1) Bu scripti modemin degil, GERCEK bir Ethernet arayuzu olan bir Linux
#      makinede calistirin - yerlesik port, USB-Ethernet adaptor, Raspberry
#      Pi, ya da bir VM + pass-through, hangisi elinizde varsa. Arayuz adini
#      script kendisi sorup listeleyecek, hardcoded bir varsayim yok.
#   2) Modemin fiber/ISS hattini (ONT'den gelen WAN kablosunu) SOKUN.
#   3) Modemin WAN portunu, bu Linux makinenin bos bir Ethernet portuna
#      baglayin.
#   4) Bu scripti calistirin (arayuz adini vermezseniz sizden secmenizi
#      ister), sonra modemi fisten cekip 30+ saniye bekleyip tekrar takin
#      (ya da admin panelinden WAN'i yeniden baslatin).
#   5) Modem PADI gonderecek, bu script cevap verip PPP/PAP asamasinda
#      kullanici adi ve sifreyi ekrana yazacak.
#   6) Islem bitince ISS hattini eski haline geri takin.
#
# NOT (Mac/UTM kullananlar icin): UTM'nin "Bridged (Advanced)" ag modu
# (Apple'in vmnet framework'u) modemden gelen ham PPPoE paketlerini
# GECIRMEYEBILIR - sadece kendi trafiginizi gorursunuz, disaridan hicbir
# sey gelmez. Bunu, VM Ayarlari -> Input -> USB -> "Share USB devices
# from host" ile USB-Ethernet adaptorunu VM'e DOGRUDAN pass-through
# yaparak cozduk (yeni bir "enxXXXXXXXXXXXX" arayuzu belirir, o
# arayuzu kullanin). Bridged modda calismiyorsa once bunu deneyin.
#
# Gereksinim (Debian/Ubuntu/Raspberry Pi OS):
#   sudo apt-get install -y pppoe ppp

set -euo pipefail

if [[ "$EUID" -ne 0 ]]; then
  echo "Bu script root gerektirir: sudo $0 [arayuz]"
  exit 1
fi

IFACE="${1:-}"

# Arayuz verilmediyse aday listesi cikar ve sectir - herkes USB-Ethernet
# kullanmiyor (yerlesik port, VM pass-through, Raspberry Pi vs. hepsi olabilir).
if [[ -z "$IFACE" ]]; then
  mapfile -t CANDIDATES < <(ip -o link show up | awk -F': ' '{print $2}' | sed 's/@.*//' | grep -vx 'lo')

  if [[ ${#CANDIDATES[@]} -eq 0 ]]; then
    echo "UP durumda hicbir arayuz bulunamadi. Kabloyu/adaptoru takip 'ip link' ile kontrol edin."
    exit 1
  fi

  echo "Arayuz belirtilmedi. Modemin bagli oldugu arayuzu secin:"
  echo
  for i in "${!CANDIDATES[@]}"; do
    dev="${CANDIDATES[$i]}"
    ipaddr=$(ip -4 -o addr show dev "$dev" 2>/dev/null | awk '{print $4}' | head -n1)
    [[ -z "$ipaddr" ]] && ipaddr="(IP yok - modeme bagli olma ihtimali yuksek)"
    printf "  %2d) %-20s %s\n" "$((i + 1))" "$dev" "$ipaddr"
  done
  echo
  read -rp "Numara secin: " choice

  if ! [[ "$choice" =~ ^[0-9]+$ ]] || (( choice < 1 || choice > ${#CANDIDATES[@]} )); then
    echo "Gecersiz secim."
    exit 1
  fi
  IFACE="${CANDIDATES[$((choice - 1))]}"
  echo "Secilen arayuz: $IFACE"
  echo
fi

WORKDIR="/tmp/pppoe-pap-sniff"
LOGFILE="$WORKDIR/pppoe-server.log"
OPTFILE="$WORKDIR/pppoe-server-options"
mkdir -p "$WORKDIR"
: > "$LOGFILE"

command -v pppoe-server >/dev/null || { echo "pppoe-server bulunamadi. 'sudo apt-get install -y pppoe ppp' calistirin."; exit 1; }

# pppd, PAP'i zorunlu kilarken (require-pap) kontrol edecek bir
# pap-secrets kaydi olmasini sart koyuyor, yoksa "I couldn't find any
# suitable secret" diyip aninda kapaniyor. Biz sifreyi DOGRULAMAK
# degil sadece GORMEK istedigimiz icin joker (wildcard) bir kayit
# yeterli - gercek sifreyle eslesmeyecek ama zaten AuthReq paketi
# bize ulastigi anda (dogrulama sonucundan once) loglanmis oluyor.
SECRETS_FILE="/etc/ppp/pap-secrets"
if ! grep -qs '^\* \* "" \*$' "$SECRETS_FILE" 2>/dev/null; then
  echo '* * "" *' >> "$SECRETS_FILE"
fi

cat > "$OPTFILE" <<EOF
debug
show-password
auth
require-pap
refuse-chap
refuse-mschap
refuse-mschap-v2
lcp-echo-interval 0
lcp-echo-failure 0
logfile $LOGFILE
EOF

echo "[*] pppoe-server $IFACE uzerinde baslatiliyor, loglar: $LOGFILE"
echo "[*] Simdi modemi fisten cekip 30+ saniye bekleyip tekrar takin"
echo "[*] (ya da admin panelinden WAN baglantisini yeniden baslatin)."
echo "[*] Yakalanana kadar bekleniyor... (Ctrl+C ile durdurun)"

pppoe-server -I "$IFACE" -L 10.115.0.1 -R 10.115.0.2 -N 4 -O "$OPTFILE" &
SERVER_PID=$!
trap 'kill "$SERVER_PID" 2>/dev/null || true' EXIT

# PAP Authenticate-Request loglarini bekle ve kullanici adi/sifreyi cikar.
# pppd "show-password" ile birlikte satiri soyle loglar:
#   rcvd [PAP AuthReq id=0x1 user="KULLANICIADI" password="SIFRE"]
tail -F -n0 "$LOGFILE" | while IFS= read -r line; do
  echo "$line"
  if [[ "$line" == *"PAP AuthReq"* ]]; then
    user=$(echo "$line" | sed -n 's/.*user="\([^"]*\)".*/\1/p')
    pass=$(echo "$line" | sed -n 's/.*password="\([^"]*\)".*/\1/p')
    if [[ -n "$user" ]]; then
      echo
      echo "========================================"
      echo " WAN kullanici adi : $user"
      echo " WAN sifre          : $pass"
      echo "========================================"
      kill "$SERVER_PID" 2>/dev/null || true
      exit 0
    fi
  fi
done

Kullanım:
chmod +x pppoe_pap_sniff.sh
sudo ./pppoe_pap_sniff.sh

Modemin WAN'ından PC'ye ethernet girin, script çalışırken modemi fişten çekip 30+ saniye bekleyip tekrar takın. PAP AuthReq ... user="..." password="..." satırı görününce yakalanmıştır.

Mac/Windows'ta VM kullananlar için: UTM/QEMU'nun "Bridged" ağ modu (vmnet) modemden gelen ham paketleri geçirmeyebilir, arayüz "UP" görünse de dışarıdan hiçbir şey gelmez.
Çözüm: VM ayarlarında USB-Ethernet adaptörünü bridge yerine VM'e doğrudan pass-through yapın (Input → USB Sharing → "Share USB devices from host").
 
Son düzenleyen: Moderatör: