Generate-NetworkTraffic.ps1

# NetTrace Module - Network Traffic Generator
# Version: 1.1.0
# Author: Naveed Khan
# Company: Hogwarts

# This script generates network traffic to test NetTrace functionality

Write-Output "NetTrace Module - Network Traffic Generator"
Write-Output "Version: 1.1.0"
Write-Output "Author: Naveed Khan"
Write-Output "Company: Hogwarts"
Write-Output ""

Write-Output "This script generates network traffic for testing NetTrace."
Write-Output "It will make HTTP requests to various websites to create"
Write-Output "network activity that can be captured by NetTrace."
Write-Output ""

# Configuration
$Websites = @(
    "https://www.google.com",
    "https://www.microsoft.com",
    "https://www.github.com",
    "https://www.stackoverflow.com",
    "https://www.wikipedia.org"
)

$RequestCount = 50
$DelayBetweenRequests = 1  # seconds

Write-Output "Configuration:"
Write-Output " Websites: $($Websites.Count) sites"
Write-Output " Requests per site: $RequestCount"
Write-Output " Delay between requests: $DelayBetweenRequests seconds"
Write-Output " Total requests: $($Websites.Count * $RequestCount)"
Write-Output ""

$confirm = Read-Host "Start generating network traffic? (y/N)"
if ($confirm -ne 'y' -and $confirm -ne 'Y') {
    Write-Output "Network traffic generation cancelled."
    exit 0
}

Write-Output "Starting network traffic generation..."
Write-Output ""

$totalRequests = 0
$successfulRequests = 0
$failedRequests = 0

# Generate traffic for each website
foreach ($website in $Websites) {
    Write-Output "Generating traffic for: $website"

    # Create background jobs for parallel requests
    $jobs = @()
    for ($i = 1; $i -le $RequestCount; $i++) {
        $job = Start-Job -ScriptBlock {
            param($url)
            try {
                $response = Invoke-WebRequest -Uri $url -UseBasicParsing -TimeoutSec 10 -ErrorAction Stop
                return @{
                    Success = $true
                    StatusCode = $response.StatusCode
                    ContentLength = $response.Content.Length
                }
            } catch {
                return @{
                    Success = $false
                    Error = $_.Exception.Message
                }
            }
        } -ArgumentList $website

        $jobs += $job
        $totalRequests++

        # Small delay between job starts
        Start-Sleep -Milliseconds 100
    }

    # Wait for all jobs to complete and collect results
    $results = $jobs | Wait-Job | Receive-Job
    $jobs | Remove-Job

    # Count successful and failed requests
    $siteSuccessful = ($results | Where-Object { $_.Success }).Count
    $siteFailed = ($results | Where-Object { -not $_.Success }).Count

    $successfulRequests += $siteSuccessful
    $failedRequests += $siteFailed

    Write-Output " Completed: $siteSuccessful successful, $siteFailed failed"

    # Delay before next website
    Start-Sleep -Seconds $DelayBetweenRequests
}

Write-Output ""
Write-Output "Network traffic generation completed!"
Write-Output ""
Write-Output "Summary:"
Write-Output " Total requests: $totalRequests"
Write-Output " Successful: $successfulRequests"
Write-Output " Failed: $failedRequests"
Write-Output " Success rate: $([math]::Round(($successfulRequests / $totalRequests) * 100, 2))%"
Write-Output ""
Write-Output "This network activity should now be visible in your NetTrace capture."
Write-Output "Check your trace files for the generated network traffic."