Search code examples
powershellobfuscation

How to use powershell to reorder a string to obfuscate a hidden message?


Just for fun a friend and I are trying to find a creative way to send coded messages to eachother using steganography.I stumbled upon doing something like whats shown below and I have been struggling trying to write a function to automate the process.

this is a secret message

can be turned into:

("{2}{1}{0}{3}"-f'ecret m','is a s','this ','essage')

splitting the string and using reordering seems to be the way to go.

  • So the string needs to be split in random splits between 5-10 characters .

  • The index of the original positions need to be saved

  • the splits need to be swapped around

  • and the new indexes sorted as to reorder the message properly

i've just really been struggling help is appreciated


Solution

  • Just for fun .... 😉🤡

    $InputMessage = 'this is a secret message'
    
    $SplittedString = $InputMessage -split '' | Select-Object -Skip 1 | Select-Object -SkipLast 1
    
    [array]::Reverse($SplittedString)
    
    foreach ($Character in $SplittedString) {
        if ($Character -notin $CharacterList) {
            [array]$CharacterList += $Character
        }
    }
    
    foreach ($Character in ($InputMessage -split '' | Select-Object -Skip 1 | Select-Object -SkipLast 1)) {
        $Index = [array]::indexof($CharacterList, $Character)
        $Output += "{$Index}"
    }
    $Result = "'$Output' -f $(($CharacterList | ForEach-Object {"'$_'"}) -join ',')"
    
    $Result 
    

    And the output of this would be:

    '{6}{10}{9}{3}{5}{9}{3}{5}{2}{5}{3}{0}{8}{7}{0}{6}{5}{4}{0}{3}{3}{2}{1}{0}' -f 'e','g','a','s','m',' ','t','r','c','i','h'
    

    And the output of this would be:

    this is a secret message
    

    And now if you want to go fancy with it you remove the curly braces and the quotes and the commas and the -f and add only the numbers and characters to the data. ;-)