Shellsec

Fuld version: xor dekrypteringseksempel i ruby
Du ser lige nu en skrabet udgave af vores indhold. Se den fulde version med ordentlig formatering.
Dette er de to stykker kode jeg brugte til Maj 2016 - Cracking XOR Kryptering

Det første script brugte jeg til at kryptere med. Man kunne gøre en del mere, end der er gjort, men det skulle også være til at løse. Det sværeste var at finde en key der tillod resultatet at være valid tekst. Altså tegn der kunne skrives på skærmen. Den krypterede tekst skulle jo stå i udfordringen. :) Jeg kunne selvfølgelig have lavet noget encoding, men dovenskab længe leve. :) Teksten og scriptets 8 bit key er ændret.
#!/usr/bin/env ruby

text = 'En eller anden tekst'
key = 0b00000111

puts "String: #{text}"
puts "Size: #{text.size}"

text.each_char do |char|
        temp = char.unpack('C*')
        xored = temp[0] ^ key
        print xored.chr
end
Her er så mit løsningsforslag til udfordringen, hvor jeg forsøger at dekryptere teksten med alle keys i tilhørende keyspace: Jeg ved jeg har fundet koden, hvis den streng jeg søger efter, findes i den dekrypterede string.
#!/usr/bin/env ruby

code = 'Noget krypteret tekst fra ovenstående script'

0.upto(255) do |key| # Prøv alle keys - fra 0 til 255
        decrypted = ""
        puts "Trying key: #{key}"
        code.each_char do |char| # xor hele den krypterede string
                temp = char.unpack('C*')
                xored = temp[0] ^ key
                decrypted += xored.chr
        end
        if decrypted.include? 'figure' # Se efter om søgeordet findes når den krypterede string er xored med aktuelle key
                puts "Keys is: #{key}" # Udskriv key på skærmen
                puts "Code is: #{decrypted}" # Udskriv dekrypterede tekst på skærmen
        end
        break if decrypted.include? 'figure' # Søgeordet er fundet, så vi behøver ikke teste flere keys
end
Teksten er selvfølgelig ændret. Koden kunne også gøres mindre, men man kan bruge det eller lade være. :)

Det kan godt være jeg poster det her et par dage for tidligt, men tror ikke der kommer flere løsningsforslag til denne udfordring.