как скрыть строку в изображении BMP (стеганография)? - PullRequest
0 голосов
/ 01 апреля 2019

Мне нужно сделать стеганографическую программу, используя симулятор MIPS mars. но у меня проблема с тем, как я кодирую изображение и как я помещаю свое сообщение (строку) в изображение. Также изображение должно быть в формате BMP и закодировано в 24 битах (8 битов для красного, 8 биты для синего и 8 бит для зеленого). Так что если кто-нибудь может мне помочь, показывая мне код или рассказывая, как это сделать. Я буду благодарен.

обновление: это то, что мне удалось сделать. Теперь проблема в том, как преобразовать строку в двоичную и закодировать ее в образ

.data
fin:    .asciiz "1.BMP"
fout:   .asciiz "1_out.BMP"
addr: .space 250000
input: .space 20   
str1:  .asciiz "entrez une chaine de caracteres  :"
    .text

main:
str:
    #lire la chaine
    la $a0, str1    
    li $v0, 4
    syscall
    #enregistrer la chaine
    li $v0, 8       
    la $a0, input  
    li $a1, 20      

    move $t0, $a0   
    syscall

img:
# ouverture du fichier
li   $v0, 13       
la   $a0, fin     
li   $a1, 0        
li   $a2, 0
syscall           
move $s6, $v0      

# lire le fichier
li   $v0, 14       
move $a0, $s6       
la   $a1, addr   
li   $a2, 230454     
syscall            

# fermeture du fichier 
li   $v0, 16       
move $a0, $s6      
syscall            

#print le fichier
li   $v0, 13       
la   $a0, fout      
li   $a1, 1        
li   $a2, 0
syscall            
move $s6, $v0       

# lire le fichier
li   $v0, 15       
move $a0, $s6      
la   $a1, addr   
li   $a2, 230454     
syscall            

 # fermeture du fichier
li   $v0, 16       
move $a0, $s6      
syscall            

#fin de programme
li $v0, 10
syscall

1 Ответ

0 голосов
/ 01 апреля 2019

.BMP формат файла не является невероятно сложным (к счастью).

Учитывая, что вы работаете на таком низком уровне, я бы порекомендовал (если безопасность неогромная проблема) в том, что вы маскируете последний бит каждого пикселя ваших данных.Просто перепрыгните через заголовки данных непосредственно в данные изображения и начните заменять младший значащий бит каждого цвета RGB на следующий бит вашего встроенного сообщения.Имейте в виду, что в BMP-формате есть некоторые отступы, поэтому лучше сохранить счетчик количества байтов, которые вы уже маскировали в текущей строке, чтобы вы не влияли на отступы 0.Этот метод требует соотношения размеров данных 8/1.

Кроме того, вы можете использовать цикл Shift Logical Right в MIPS, чтобы определить целевой бит для встраивания в ваше изображение.Маскируйте каждую итерацию цикла с номером 1 and $bitToEmbed, $yourMessageByte, 1, чтобы определить бит для встраивания и перейти к следующему байту после 8 итераций (8 бит на байт).

Одна операция маскирования может выглядеть так (Фактические имена регистровдолжен быть заменен, конечно):

and $bitToEmbed, $yourMessageByte, 1  #Get Target Bit to embed
and $RGBByte, $RGBByte, 254           #Mask the RGB Byte with 11111110
or $RGBByte, $bitToEmbed, $RGBByte    #Embed your target bit.

Добавьте некоторую итерацию для прохождения одного целого байта сообщения:

#Jump Past Header...
#Create all temporary versions of your image and message...
#Begin data processing:
ITERBYTE:
    and $bitToEmbed, $yourMessageByte, 1  #Get Target Bit to embed
    and $RGBByte, $RGBByte, 254           #Mask the RGB Byte with 11111110
    or $RGBByte, $bitToEmbed, $RGBByte    #Embed your target bit.
    srl $yourMessageByte, $yourMessageByte, 1 #Bitshift right by one...
    addi $counter, $counter, 1            #Increment counter
    bne $counter, $BitsInByte, ITERBYTE   #continue loop if we have not read the whole byte

Безопасность этого метода зависит от того факта, что большинство людейне могу отличить слегка разные оттенки одного цвета.(Не могли бы вы сказать мне, является ли этот текст #000000 или #000001)?

Обратите внимание, однако, что существуют методы для определения этого уровня стенографии, так как он не очень сложный.Как правило, это включает в себя сканирование компьютеров на наличие среднего шума изображений или сравнение существующих изображений с их модифицированными аналогами.Однако, если вам просто нужно что-то, что не распознается человеком (или не читается), тогда это отличное решение.

...