# Author: Scott Sutherland, NetSPI (@_nullbind / nullbind) function Get-HtpasswdContent { param ( [string]$FilePath ) # Check if the file exists if (-Not (Test-Path $FilePath)) { Write-Error "File not found at path: $FilePath" return } # Read the file contents $lines = Get-Content $FilePath # Initialize an array to store user objects $users = @() # Process each line foreach ($line in $lines) { # Split each line into username and hashed password $parts = $line -split ':', 2 if ($parts.Length -eq 2) { # Create a custom object for each user $userObj = [pscustomobject]@{ Username = $parts[0] PasswordHash = $parts[1] } # Add the user object to the array $users += $userObj } } # Output the results return $users } # Example usage $result = Get-HtpasswdContent -FilePath "c:\temp\configs\.htpasswd" $result <# .htpasswd user1:$apr1$5lRQ1y3v$pmOQf9/fNVE5dTtQDBl9D1 user2:$apr1$Jd9UE91p$J/H8G9HSvj5l8LKQ2qfd3. admin:$apr1$GZJoqjNF$wl8IjDhZC84z5Bb4wHOv50 #>