Introduction
Statistics
Contact
Development
Disclaimer
Help
brause.cc home page
require 'base64'
def str(bytes)
bytes.pack('C*')
end
def xor_buffer_with_bytes(buffer, bytes)
result = Array.new(buffer.size)
result.each_index do |i|
byte = bytes[i % bytes.length]
result[i] = buffer[i] ^ byte
end
result
end
ciphertext = Base64.decode64('ptITlnk7EGRodZ/dRp9dF1VqaEOPjC2SMQdUYGgmn81GhzEqVHsEX6brBqRwMBEySgo=').bytes
crib = ARGV[0].bytes
key_size = 10
max_offset = ciphertext.length - crib.length
(0..max_offset).each do |i|
key = Array.new(key_size, 0)
crib.length.times { |j| key[(i+j)%key_size] = ciphertext[i+j] ^ crib[j] }
p str(xor_buffer_with_bytes(ciphertext, key))
end