88 lines
No EOL
1.7 KiB
Ruby
88 lines
No EOL
1.7 KiB
Ruby
class EncodeImage
|
|
@@password = ""
|
|
@@message = ""
|
|
|
|
@@img = nil
|
|
|
|
@@utils = nil
|
|
|
|
|
|
def initialize(p, m, i)
|
|
@@password = p
|
|
@@message = m
|
|
|
|
@@utils = ImageUtils.new(@@password, @@message, i)
|
|
|
|
@@table = @@utils.generateLookupTable
|
|
end
|
|
|
|
def encode
|
|
msg_bits = @@utils.getImage.getBits(@@message)
|
|
msg_bits = msg_bits << 8 | 0
|
|
msg_bits = msg_bits << 16 | @@message.length
|
|
|
|
s = @@utils.getImage.getSize
|
|
|
|
original_img = @@utils.getImage.fuzzImage
|
|
|
|
@@table.each do |loc|
|
|
pixel = @@utils.getImage.getPixel(loc[:x], loc[:y])
|
|
msg_bits = pixel.encodeBits(msg_bits)
|
|
end
|
|
|
|
# for x in 0..s[:width]-1
|
|
# for y in 0..s[:height]-1
|
|
|
|
# loc = {"x": x, "y": y}
|
|
# if @@table.include? loc then
|
|
# pixel = @@utils.getImage.getPixel(x, y)
|
|
# msg_bits = pixel.encodeBits(msg_bits)
|
|
# end
|
|
# end
|
|
# end
|
|
|
|
@@utils.getImage.saveImage
|
|
end
|
|
|
|
|
|
# Need to properly sever this at some point...
|
|
|
|
def decode
|
|
puts "Hacked in 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 |