catchat/decode_image.rb
2025-07-16 01:48:49 +00:00

51 lines
No EOL
997 B
Ruby

class DecodeImage
@@password = ""
@@utils
def initialize(pass, image)
@@password = pass
# initializing utils...
@@utils = ImageUtils.new(@@password, image)
@@table = @@utils.generateLookupTable
end
def decode
s = @@utils.getImage.getSize
msg_bits = 0
@@table.reverse.each do |loc|
pixel = @@utils.getImage.getPixel(loc[:x], loc[:y])
msg_bits = (msg_bits << 6) | pixel.decodeBits
end
#this trash needs to move somewhere...
puts "Try to convert the message..."
len = msg_bits & 0xffff
msg_bits = msg_bits >> 16
# check the padding bits....
if (msg_bits & 255) != 0 then
puts "Padding failed scrutiny! "
puts msg_bits.to_s(2)
return false
end
msg_bits = msg_bits >> 8
puts "Padding passed scrutiny..."
msg_chars = []
while msg_bits > 0 do
byte = msg_bits & 0xff
msg_chars.push(byte.chr)
msg_bits = msg_bits >> 8
end
msg = msg_chars.reverse.join
return msg
end
end