![]() |
|
![]() ![]() ![]() |
|
Urod |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 376 Регистрация: 10.4.2004 Где: Москва Репутация: 1 Всего: -1 |
[color=crimson][/color][size=8][/size]
![]() |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: нет Всего: 164 |
Ещё посмотри на www.mycomp.com.ua
там статья Невидимые чернила в 51 номере за преидущий год, сам не могу посмотреть инет больно тормозит и глючит ![]() после того как запрячешь в BMP суй её к EXEшнику как ресурс и будет тебе счастья ![]() --------------------
|
|||
|
||||
Urod |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 376 Регистрация: 10.4.2004 Где: Москва Репутация: 1 Всего: -1 |
Спасиб, но мне нужна информация принципиально об исполняемых файлах! Такова моя тема диплома, ничего другого преподы слушать не будут. Если есть что по теме - скиньте.
![]() ![]() ![]() |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
ну а стеганография тогда здесь причем? -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Urod |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 376 Регистрация: 10.4.2004 Где: Москва Репутация: 1 Всего: -1 |
Ну при том, что информацию можно запрятывать не только в графику и тексты, но и программки (и при том, так, чтобы программа нормально функционаровала, ее вес не изменился принципиально и т.п., т.е. чтобы противник ничего не заподозрил). Вот, что мне надо. Это могут быть самостоятельные наработки или уже какие-то имеющиеся, типа: Метод незначащих бит Данный класс алгоритмов весьма интересен и широко используется на практике. Он основан на том факте, что в некоторых форматах файлов (в большинстве случаев - мультимедиа данные) младшие биты значений хотя и присутствуют в файле, но не влияют на восприятие звука или изображения человеком. Кстати, на этом же принципе основано и сжатие с потерями (JPEG, MP3, MP4 и т.п.). Именно в таких "неиспользуемых" местах в файлах можно хранить стегосообщения. Наиболее часто контейнерами служат графические форматы с прямым цветокодированием в 24 и более бит на пиксел (BMP, TIFF). Реже - звуковые файлы с абсолютным кодированием амплитуды аудиосигнала (WAV). При разумном наполнении контейнера исходный файл не отличит от заполненного без специального анализа даже опытный специалист. Кстати, в цветных графических изображениях заменять младшие биты можно у каждой из составляющих (R, G, B или C, M, Y, K). И еще одно соображение: если вы предполагаете, что кто-то заподозрит в вашем файле стегосообщение - в качестве контейнера нужно выбирать не искусственно созданные картинки (стего в них обманет только неискушенного пользователя), а отсканированные фотоизображения. Только в них присутствуют шумы квантования - случайное заполнение младших бит, под которые и маскируются кусочки стегосообщения. Необходимо избегать фотографий с большими областями очень ярких и черного цветов. На таких картинках большие области в исходном файле имеют цветовые составляющие 255 и 0, соответственно и стегобайты будут характерно выделяться при просмотре файла в кодах своими 254 и 1. Ниже приведена основная часть алгоритма, записывающего и считывающего стегосообщение. Контейнером служит 24-битный BMP-файл (полный текст программы и рабочий проект с примером стегосообщения можно найти на сайте журнала). В примере в каждом байте используется только 1 младший бит. Длина сообщения записывается не прямым 16-битным кодом, а в два этапа - это позволяет избежать подозрительной последовательности нулей в начале сообщения, если его длина мала. Сначала в 4 битах записывается N - "длина длины" сообщения, затем в N последующих битах собственно длина стего-сообщения в битах (старший (N+1)-ый бит считается установленным). Максимальная длина стегосообщения - 8 килобайт. procedure AddLSBStego(const ContainerFileName:string; const Stego; BitCnt:integer); var Header:TBMPHeader; F:TFileStream; Buffer:array[0..$103FF] of byte; Ps,i,x,CntLen,BytesInLine,BytesRead:integer; procedure AddLeastBit(Bit:integer); begin if Header.Width*3 <= Ps mod BytesInLine then // перепрыгиваем выравнивание BMP-строк по границе dword inc(Ps,BytesInLine-Header.Width*3); Buffer[Ps]:=((Buffer[Ps]) and $FE) or (Bit and $01); inc(Ps) end; begin if (BitCnt<=$FFFF) and FileExists(ContainerFileName) then begin F:=TFileStream.Create(ContainerFileName,fmOpenReadWrite or fmShareExclusive); F.Read(Header,sizeof(TBMPHeader)); if (Header.Signature=$4D42) and (Header.BMOffset=sizeof(TBMPHeader)) and (Header.ColorDepth=24) and (Header.Width*Header.Height*3>BitCnt) then begin BytesInLine:=(((Header.Width*3)+3) div 4)*4; BytesRead:=F.Read(Buffer,sizeof(Buffer)); Ps:=0; x:=BitCnt; CntLen:=0; while x>0 do // определяем "длину длины" begin x:=x shr 1; inc(CntLen) end; for i:=0 to 3 do // записываем "длину длины" AddLeastBit(CntLen shr (3-i)); for i:=0 to CntLen-2 do // записываем длину AddLeastBit(BitCnt shr (CntLen-2-i)); for i:=0 to BitCnt-1 do // записываем саму стеганограмму AddLeastBit(TByteArray(Stego)[i div 8] shr (7-(i mod 8))); // возвращаемся и записываем измененный буфер на место F.Seek(sizeof(TBMPHeader),soFromBeginning); F.Write(Buffer,BytesRead); end; F.Free; end; end; procedure ReadLSBStego(const ContainerFileName:string; var Stego; var BitCnt:integer); var Header:TBMPHeader; F:TFileStream; Buffer:array[0..$103FF] of byte; Ps,i,x,CntLen,BytesInLine:integer; function ReadLeastBit:integer; begin if Header.Width*3 <= Ps mod BytesInLine then // перепрыгиваем выравнивание BMP-строк по границе dword inc(Ps,BytesInLine-Header.Width*3); Result:=Buffer[Ps] and $01; inc(Ps) end; begin if FileExists(ContainerFileName) then begin F:=TFileStream.Create(ContainerFileName,fmOpenRead or fmShareExclusive); F.Read(Header,sizeof(TBMPHeader)); if (Header.Signature=$4D42) and (Header.BMOffset=sizeof(TBMPHeader)) and (Header.ColorDepth=24) then begin BytesInLine:=(((Header.Width*3)+3) div 4)*4; F.Read(Buffer,sizeof(Buffer)); Ps:=0; CntLen:=0; // определяем "длину длины" for i:=0 to 3 do CntLen:=(CntLen shl 1) or ReadLeastBit; if CntLen=0 then CntLen:=16; BitCnt:=1; // определяем длину for i:=0 to CntLen-2 do BitCnt:=(BitCnt shl 1) or ReadLeastBit; x:=0; // считываем стеганограмму for i:=0 to BitCnt-1 do begin x:=(x shl 1) or ReadLeastBit; if i mod 8 = 7 then begin TByteArray(Stego)[i div 8]:=x; x:=0 end; end; // "досмещение" и запись последнего неполного байта (если он был) if BitCnt mod 8 <> 0 then begin x:=x shl (8-(BitCnt mod 8)); TByteArray(Stego)[BitCnt div 8]:=x; end end; F.Free; end; end; Только про исполянемые файлы. Есть что-нибудь? |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Извиняюсь... Думал стеганография - это только в картинки, а это оказывается обобщенное название... Вот тут немного про exe: http://www.cio-world.ru/bsolutions/e-safety/28763/ -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: нет Всего: 164 |
Всем понятно что в BMP можно прятать инфу без критических последствий!
Это очень легко на практике осуществить потому как безразлично будет если цвет будет немного(этого зрение не заметит) чуть более краснее! А вот если в проге какой нибудь jmp замениться на mov ... то будет неприятно, а ведь для полного выведения программы из строя достаточно где нить один битик заменить и все! Вот только я подумал, если находить граф. изображения в EXEшнике и там в этих изображениях менять всё, а также если кто знает как в тексте без ущерба сохранять, то в EXEшниках текста полным полно...вот только надо как то найти где можно безопасно изменить инфу... без выведения из строя проги --------------------
|
|||
|
||||
Guest |
|
|||
Unregistered |
Да, смотрела уже. Тут, конечно, неплохая информация, но МАЛО. ![]() |
|||
|
||||
Urod |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 376 Регистрация: 10.4.2004 Где: Москва Репутация: 1 Всего: -1 |
Не поняла, т.е. предлагается следующее: брать код проги, которую мы хотим незаметно для противника передать, представлять его в виде граф. изображения, уже граф. изображение прятать в стегоконтейнер. Так? Если так, то изначально идея не та, т.к. суть заключается именно в передаче какого-либо сообщения в проге, именно прога выступает в роли стегоконтейнера. Надеюсь, я тебя неправильно поняла, и ты мне подскажешь идею... |
|||
|
||||
Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
Просто клеить в конец ехешника. Попробуй, у меня раньше получалось. Только вот нада научится потом вытаскивать!!!
|
|||
|
||||
Urod |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 376 Регистрация: 10.4.2004 Где: Москва Репутация: 1 Всего: -1 |
Ну объясните толком. Что клеить в конец exeшника? И как это графика в exeшнике? Я что-то не понимаю. Можно весь метод описать полностью?
![]() |
|||
|
||||
Monty |
|
|||
![]() Advanced Lamer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3511 Регистрация: 3.4.2003 Где: Гваделупа Репутация: нет Всего: 27 |
lol
![]() Old.exe + Top.Secret = New.exe ![]() -------------------- ... О, вещая моя печаль, О, тихая моя свобода И неживого небосвода Всегда смеющийся хрусталь! |
|||
|
||||
Urod |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 376 Регистрация: 10.4.2004 Где: Москва Репутация: 1 Всего: -1 |
Не, очевидно я не точно высказалась. Мне нужно следующее: встраивание информации (секретной) в код программы и при том, чтоб программа не портилась, т.е. нормально функционировала. Чтобы все выглядело мирно: я передаю кому-то программу (в которую запрятала информацию), а злоумышленник ничего не заподозрил, т.к. программа нормально функционирует.
|
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Терзают меня смутные сомнения, что злоумышленник это как раз ты. ![]() ![]() Конечно можно писать в строчку "This programm can not run under DOS mode" (или как там?), но различные компилеры могут создавать разные файлы и универсально внести изменения в прогу без последствий ИМХО не является возможным. 2Monty Обьясни пожалуйста, почему встраивание информации на конец ехе (kak предлагает Mephisto) плохая идея. По идее никаких джампов туда быть не должно. А ехе, который работает в зависимости от своего размера если и существует, то создать его будет довольно мерзопакостно.. ![]()
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |