Let's say you need to reset a password, but you *really* don't like the person... I've come up with the perfect tool! Introducing the "Bastard Password Generator!" It's default is to spit-out passwords that combine 0, O, I, l, and 1. They all look similar but it's a mix of Zero, Capital O, capital i, and lower L. It also includes switches to use Unicode characters that *look* like western alphabet letters but aren't. Here are some examples: lI1I01I0O0I0lO00 111100I0l1l1010O IO1I0O1O10lI1010 Noise doesn't support Unicode so I can't share any of the REALLY fun ones lol. === script below == function BastWord{ [Alias('bwgen')] <# .SYNOPSIS Bastard Password Generator - A password generator that only uses similar looking characters and Unicode characters that look like latin-script letters. .DESCRIPTION Creates passwords that are nearly impossible to read when printed in the right font with a switch to make them impossible to type, too .PARAMETER PWLenght The number of characters you want in your Bastword .PARAMETER NoUni No extended characters in the Bastword .PARAMETER OnlyIs Password will only contain I-like characters .PARAMETER OnlyOs Password will only contain O-like characters .PARAMETER No1s Password will not contain a "1" (this works well with -OnlyIs) .EXAMPLE bastword Will output an 8 character password of standard characters: 01l010O1 .EXAMPLE bastword 69 -OnlyUni Will output a 69 character password using only characters that can't be typed on an English keyboard: 〇lⅠഠ߀୦|׀〇Οןⵔ│١ІƖΟꓲⅠⅠꓲlⲞΟ١߀lᛁଠߊОꓳᛁןǀΙ١|ՕଠⅠΙⲞ୦ﺎⵏ|ΟⲞⅼⲒଠ୦IООןⲒ߀୦ןⵏⅠ۱۱ᛁΙ߀l .EXAMPLE bastword -PWLength 420 -AllowUni This will generate a 420 character password of regular + unicode characters .OUTPUTS [String] .NOTES I take no responsibility for any issues caused by this script. .FUNCTIONALITY Create perfect passwords for people you don't like! #> [CmdletBinding(DefaultParameterSetName='DefParams')] param( [int]$PWLength = 8, [Switch]$NoUni = $False, [Switch]$Dbg = $False, [Switch]$OnlyIs = $False, [Switch]$OnlyOs = $False, [Switch]$No1s = $False, [Switch]$AllowUni = $False, [Alias("OnlyUni")] [Switch]$UniOnly = $False, [Alias("Clip")] [Switch]$Copy = $False ) $Passw = "" $Disclaimer = 0 $Min = 1 $Max = 6 if ($AllowUni -eq $True) { $Max = 42 } if ($No1s -eq $True) { $Min = 2 } if ($OnlyIs -eq $True) { $Min = 17 $Max = 42 $Disclaimer = 1 } if ($OnlyOs -eq $True) { $Min = 4 $Max = 17 $Disclaimer = 1 } if ($UniOnly -eq $True) { $Min = 6 $Max = 42 $Disclaimer = 1 } if ($NoUni -eq $True -AND $OnlyIs -eq $True) { $Min = 2 $Max = 4 } if ($NoUni -eq $True -AND $OnlyOs -eq $True) { $Min = 4 $Max = 6 } if ($Dbg -eq $True) { $DebugPreference = "Continue" write-Debug " debug " write-Debug "-------" write-Debug "PWLength: $($PWLength)" write-Debug "AllowUni: $($AllowUni)" write-Debug "UniOnly : $($UniOnly)" Write-Debug "NoUni : $($NoUni)" write-Debug "No1s : $($No1s)" write-Debug "OnlyOs : $($OnlyOs)" write-Debug "OnlyIs : $($OnlyIs)" write-Debug "Copy : $($Copy)" write-host write-Debug "Min: $($Min)" write-Debug "Max: $($Max)" $DebugPreference = "SilentlyContinue" } for ($i=0; $i -lt $PWLength; $i++) { $Letter = Get-Random -Minimum $Min -Maximum $Max Switch ($Letter) { 1 { $Passw = $Passw + "1" } 2 { $Passw = $Passw + "l" } 3 { $Passw = $Passw + "I" } 4 { $Passw = $Passw + "0" } 5 { $Passw = $Passw + "O" } 6 { $Passw = $Passw + "$([regex]::unescape(""\u3007""))" } #Start of Unicode Characters (O-like) 7 { $Passw = $Passw + "$([regex]::unescape(""\u0B20""))" } 8 { $Passw = $Passw + "$([regex]::unescape(""\u0B66""))" } 9 { $Passw = $Passw + "$([regex]::unescape(""\u0D20""))" } 10 { $Passw = $Passw + "$([regex]::unescape(""\u2D54""))" } 11 { $Passw = $Passw + "$([regex]::unescape(""\u039F""))" } 12 { $Passw = $Passw + "$([regex]::unescape(""\u041E""))" } 13 { $Passw = $Passw + "$([regex]::unescape(""\u0555""))" } 14 { $Passw = $Passw + "$([regex]::unescape(""\u07C0""))" } 15 { $Passw = $Passw + "$([regex]::unescape(""\u2C9E""))" } 16 { $Passw = $Passw + "$([regex]::unescape(""\uA4F3""))" } 17 { $Passw = $Passw + "$([regex]::unescape(""\u007C""))" } #I-Like 18 { $Passw = $Passw + "$([regex]::unescape(""\u0196""))" } 19 { $Passw = $Passw + "$([regex]::unescape(""\u01C0""))" } 20 { $Passw = $Passw + "$([regex]::unescape(""\u0399""))" } 21 { $Passw = $Passw + "$([regex]::unescape(""\u0406""))" } 22 { $Passw = $Passw + "$([regex]::unescape(""\u04C0""))" } 23 { $Passw = $Passw + "$([regex]::unescape(""\u05C0""))" } 24 { $Passw = $Passw + "$([regex]::unescape(""\u05D5""))" } 25 { $Passw = $Passw + "$([regex]::unescape(""\u05DF""))" } 26 { $Passw = $Passw + "$([regex]::unescape(""\u0627""))" } 27 { $Passw = $Passw + "$([regex]::unescape(""\u0661""))" } 28 { $Passw = $Passw + "$([regex]::unescape(""\u06F1""))" } 29 { $Passw = $Passw + "$([regex]::unescape(""\u07CA""))" } 30 { $Passw = $Passw + "$([regex]::unescape(""\u16C1""))" } 31 { $Passw = $Passw + "$([regex]::unescape(""\u2160""))" } 32 { $Passw = $Passw + "$([regex]::unescape(""\u217C""))" } 33 { $Passw = $Passw + "$([regex]::unescape(""\u2223""))" } 34 { $Passw = $Passw + "$([regex]::unescape(""\u2C92""))" } 35 { $Passw = $Passw + "$([regex]::unescape(""\u2D4F""))" } 36 { $Passw = $Passw + "$([regex]::unescape(""\uA4F2""))" } 37 { $Passw = $Passw + "$([regex]::unescape(""\uFE8D""))" } 38 { $Passw = $Passw + "$([regex]::unescape(""\uFE8E""))" } 39 { $Passw = $Passw + "$([regex]::unescape(""\uFF29""))" } 40 { $Passw = $Passw + "$([regex]::unescape(""\uFF4C""))" } 41 { $Passw = $Passw + "$([regex]::unescape(""\uFFE8""))" } } } if ($Disclaimer -eq 1) { write-host "The following password will probaly appear broken if it has unicode characters in it." -ForegroundColor Yellow write-host "Please copy/paste into notepad/word/email etc. to see the password in its full glory:" -ForegroundColor Yellow } if ($OnlyIs -eq 1) { write-host "Make sure to change the font on this password to Arial before sending!" } write-host $Passw -ForegroundColor "Cyan" if ($Copy -eq $True) { $Passw | Clip write-host "Password copied to clipboard" } }
Log in to join in Reading is open to everyone. Replying needs an account.
5 comments
Damn, this is really evil. If there was a renoise function here, I would renoise it. 🤟
Maybe I should post this on NC too lol
Aaaand renoised!
That's brilliant! I love it! Kind of like BrainFuck for passwords :)
This is the kinda stupid shit I do between calls at my work lmao. I always joked about the IlIIlllIlIl password, but then in the middle of coding this I was like "but what about.... UNICODE?" And that led me down the rabbithole of learning how to output unicode characters in Powershell haha