def test_hideBit5(self): b = byte_tools.hide_data(42, 2, 4) self.assertEqual(34, b)
def hide(self, bin_data, order_num=0, bad_bits_num=1): bin_data = pack(">L", len(bin_data)) + bin_data if len(bin_data) > self.container_space(bad_bits_num): raise ContainerException("Too much data to hide. {}: but max={}".format( len(bin_data), self.container_space()) ) order_inspector = ORDER_INSPECTORS[order_num](self.container_space()) sample_id = 0 pos = 0 hidden_data_byte = 0 bits_data = byte_tools.to_bits(bin_data) for i in range(len(bits_data)): hidden_data_byte = hidden_data_byte * 2 + bits_data[i] pos += 1 if (pos == bad_bits_num) or (i + 1 == len(bits_data)): if i + 1 == len(bits_data) and not (pos == bad_bits_num): while pos != bad_bits_num: hidden_data_byte *= 2 pos += 1 self[sample_id] = byte_tools.hide_data(self[sample_id], hidden_data_byte, bad_bits_num) pos = 0 hidden_data_byte = 0 sample_id = order_inspector.next()
def test_hideBit2(self): b = byte_tools.hide_data(0, 0) self.assertEqual(0, b)
def test_reveal(self): byte = 234213 hidden_data = 9 number_of_bad_bits = 15 bad_byte = byte_tools.hide_data(byte, hidden_data, number_of_bad_bits) released_data = byte_tools.reveal_data(bad_byte, number_of_bad_bits) self.assertEqual(hidden_data, released_data)
def test_hideBit4(self): b = byte_tools.hide_data(567, 5) self.assertEqual(565, b)
def test_hideBit3(self): b = byte_tools.hide_data(250, 1) self.assertEqual(251, b)
def test_hideBit1(self): b = byte_tools.hide_data(0, 1) self.assertEqual(1, b)