Скачать 1.43 Mb.
|
A.3. Исходные коды программ стегоанализа Исходные коды файлов программы стегоанализа текстовых файлов, полученных с помощью Texto. StegFind.cpp #include float Global[2*13]; float x1,x2; float Diff[11]; int getfilesize(char * path[]) {int i=-1; FILE * f; f=fopen(path,"rb"); if (f==NULL){printf("Path not found\n");return -1;} fseek(f,0,SEEK_END); i=ftell(f); fclose(f); return i; } void concat(char *dest, char *src) {int i=0,j=strlen(dest); while(src[i]!='\0') { dest[j]=src[i]; i++;j++; } dest[j]='\0'; } void inttostr(char * str,int x ) {int i=0; char s[80]; while(x!=0) { s[i]=(x%10)+'0'; x=(x/10); i++; }s[i]='\0'; for(i=0;i { str[i]=s[strlen(s)-i-1]; } str[i]='\0'; } void prepare1() { int i,filesize; FILE * f; char cmd[80],cmd1[80]; char filename[20],tmp[13][50]; float x; strcpy(tmp[1],"temp/n.txt"); strcpy(tmp[2],"temp/n.tar"); strcpy(tmp[3],"temp/nx.txt"); strcpy(tmp[4],"temp/nx.tar"); strcpy(tmp[5],"temp/t.txt"); strcpy(tmp[6],"temp/t.tar"); strcpy(tmp[7],"temp/tx.txt"); strcpy(tmp[8],"temp/tx.tar"); strcpy(tmp[9],"temp/p.txt"); strcpy(tmp[10],"temp/p.tar"); strcpy(tmp[11],"temp/px.txt"); strcpy(tmp[12],"temp/px.tar"); Global[1]=getfilesize(tmp[1]); Global[2]=getfilesize(tmp[2]); Global[3]=getfilesize(tmp[3]); Global[4]=getfilesize(tmp[4]); Global[5]=getfilesize(tmp[5]); Global[6]=getfilesize(tmp[6]); Global[7]=getfilesize(tmp[7]); Global[8]=getfilesize(tmp[8]); Global[9]=getfilesize(tmp[9]); Global[10]=getfilesize(tmp[10]); Global[11]=getfilesize(tmp[11]); Global[12]=getfilesize(tmp[12]); x1=(100.0*Global[2]/Global[1]-100.0*Global[4]/Global[3]); x2=(100.0*Global[6]/Global[5]-100.0*Global[8]/Global[7]); x3=(100.0*Global[10]/Global[9]-100.0*Global[12]/Global[11]); if ((x1>0.9)||(x2<1)){printf("Simple\n");}else{printf("Texto\n");} } int main(int argc,char * argv[]) { prepare1(); return 0; } Исходные коды программы стегоанализа исполняемого файла. Analyse.exe (анализирует последние 80 байт файла, содержащего только секцию кода) const Granitza=56;analyze_size=80; type { TMyApplication } TMyApplication = class(TCustomApplication) protected procedure DoRun; override; public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; procedure WriteHelp; virtual; end; Fbyte= file of byte; Pvertex=^Tvertex; Tvertex =record l,r:Pvertex; data:byte; friq:integer; tip:integer; end; var path:string; path1:string; friq:array [0..255] of longint; fsize:integertree:array [0..255] of integer; elem:array [0..255] of pvertex; tree_n:integeradds:widestring; s:array[0..255] of widestring { TMyApplication } procedure sort;forward; procedure prepare; var i:integer; begin for i:=0 to 255 do begin friq[i]:=0; tree[i]:=0; new(elem[i]); elem[i]^.l:=nil; elem[i]^.r:=nil; elem[i]^.data:=i; elem[i]^.friq:=0; elem[i]^.tip:=1; s[i]:=''; end;tree_n:=0; adds:=''; end; procedure readdata; var f:file of byte; b:byte; begin assignfile(f,path); reset(f); while not eof(f) do begin read(f,b); inc(elem[b]^.friq); end; closefile(f); end; function strtobin(x:string):byte; var b:byte;i:integer; begin b:=0; for i:=1 to 8 do begin b:=(b shl 1 )+ord(x[i])-ord('0'); end; strtobin:=b; end; procedure addinfile(b:byte;var f1:Fbyte;ends:boolean); var tmp:widestring; i:integer; begin if ends then begin for i:=length(adds) to 8 do adds:=adds+'0'; write(f1,strtobin(adds)); exit; end; adds:=adds+s[b]; while length(adds)>=8 do begin tmp:=adds; delete(tmp,9,length(tmp)); write(f1,strtobin(tmp)); delete(adds,1,8); end; end; procedure writedata; var f,f1:file of byte; b:byte; begin assignfile(f1,path1);rewrite(f1); assignfile(f,path); reset(f); while not eof(f) do begin read(f,b); addinfile(b,f1,false); end; addinfile(0,f1,true); closefile(f);closefile(f1); end; procedure sort; var i:integer; tmp:pvertex; p,q:Tvertex; f:boolean; begin f:=true; while f do begin f:=false; for i:=0 to tree_n-2 do begin if elem[i]^.friq begin tmp:=elem[i]; elem[i]:=elem[i+1]; elem[i+1]:=tmp; f:=true; end; end; end; end; procedure getcode(V:pvertex;ss:widestring); var p:tvertex; begin p:=v^; if V^.tip=0 then begin getcode(v^.l,ss+'0'); getcode(v^.r,ss+'1'); end else s[v^.data]:=ss; end; procedure buildtree; var i:integer; tmp:Pvertex; begin tree_n:=255; sort; i:=tree_n-1; while i>0 do begin sort; new(tmp);tmp^.tip:=0;//tmp^.data:=-1; tmp^.friq:=elem[i-1]^.friq+elem[i]^.friq; tmp^.l:=elem[i-1]; tmp^.r:=elem[i]; elem[i-1]:=tmp; dec(i); end; getcode(elem[i],''); end; procedure TMyApplication.DoRun; var f,f1:file of byte; b:byte; size:integer; Si: TStartupInfo; begin if paramcount<>1 then halt; path:= paramstr(1); assignfile(f,path); //будем копировать последние 80 байт в специальную папку для анализа assignfile(f1,'out\0.cut'); reset(f); seek(f,filesize(f)-analyze_size); rewrite(f1); while not eof(f) do begin read(f,b); write(f1,b); end; closefile(f1); closefile(f); // отрезали 80 байт , теперь будем сжимать path:='out\0.cut'; path1:='out\0.cut.bz2'; prepare; readdata; buildtree; writedata; // внедрено ? assignfile(f,path1); reset(f);size:=filesize(f);closefile(f); if size>granitza then writeln('1') else writeln('0'); Terminate; {внедрено} {пусто} end; Peanalyse.exe (извлекает секцию кода из файла формата PE) Tpefile=class f:file of byte; o_pe:integer; DD:dword; start_offs,size:integer; name:string; procedure Open(s:string); procedure close; procedure readB; procedure readW; procedure readD; procedure readO; procedure gotooff; procedure Crop; end; var Form1: TForm1; count:integer; implementation { TForm1 } procedure Tpefile.open(s:string); begin //form1.caption:=s; //application.ProcessMessages; assignfile(self.f,s); reset(self.f); end; procedure Tpefile.close; begin closefile(self.f); end; procedure Tpefile.readB; var b:byte; begin read(f,b); DD:=b; end; procedure Tpefile.readw; var a,b:byte; begin dd:=0; if eof(f) then exit; read(f,a); read(f,b); DD:=a+b*$100; end; procedure Tpefile.readd; var a,b,c,d:byte; begin read(f,a); read(f,b);read(f,c); read(f,d); self.DD:=a+b*$100+c*$10000+d*$1000000; end; procedure Tpefile.reado; var a:byte; i:integer; s:string; begin s:=''; for i:=1 to 8 do begin read(f,a); s:=s+chr(a); end; self.name:=s; end; procedure Tpefile.gotooff; begin seek(self.f,self.dd); end; procedure Tpefile.crop; var f1:file of byte; pos,i:integer; b:byte; begin assignfile(f1,'g:\b\'+inttostr(count));rewrite(f1); self.DD:=self.start_offs; self.gotooff; for i:=1 to self.size do begin self.readb; b:=byte(self.DD and 255); if b<>0 then pos:=i; write(f1,b); end; seek(f1,pos);truncate(f1); closefile(f1); end; procedure analyse(s:string); var p:Tpefile; pe_offs,header_offs,total_offs:integer; begin p:=Tpefile.Create; p.Open(s); p.dd:=$3c; p.gotooff; p.readw; pe_offs:=p.dd; p.gotooff; p.readw; if p.dd<>$4550 then begin form1.ListBox1.Items.Add(s+' Error: PE header not found'); p.close; p.Free; exit; end; p.dd:=pe_offs+$54; p.gotooff; p.readd; total_offs:=p.dd; header_offs:=pe_offs+$f8; repeat p.dd:=header_offs; p.gotooff; p.reado; form1.ListBox1.Items.Add(p.name); p.dd:=header_offs+$24; p.gotooff; p.readD; //form1.ListBox1.Items.Add(inttohex(p.DD,8)); if (p.dd = $60000020) then begin p.dd:=header_offs+$10; p.gotooff; p.readD; p.size:=p.dd; //form1.ListBox1.Items.Add('size '+inttohex(p.DD,8)); // size of code p.readD; p.start_offs:=p.dd; //form1.ListBox1.Items.Add('offset '+inttohex(p.DD,8));// offset to code form1.ListBox1.Items.Add(s+' Ok '+inttostr(count)); p.Crop; break; end; header_offs:=header_offs+$28; until header_offs p.close; p.Free; end; procedure TForm1.Button2Click(Sender: TObject); var f:textfile; s:string; begin assignfile(f,'g:\a\1.lst'); reset(f); count:=0; while not eof(f) do begin readln(f,s); if fileexists(s) then analyse(s); form1.ListBox1.ItemIndex:=form1.ListBox1.Items.Count-1; application.ProcessMessages; inc(count); end; closefile(f); form1.Caption:='Ok'; end; 1 исходные коды на языке ассемблера. 2 Здесь символ пробела обозначается как “_”. 3 Для краткости, будем обозначать любые естественные тексты Simple. 4 Содержимое специальных контейнеров будет приведено в приложении A.1 5 Как правило, сообщение в открытом виде не передается. 6 Появление различных серии бит равновероятно и между их появлениями отсутствуют закономерности. 7 Вероятность того, что найденное значение статистики превзойдет квантиль распределения. 8 Под случайностью понимается степень близости к равномерному распределению. 9 Здесь используется линейный конгруэнтный генератор случайных чисел. 10 Случай, когда в качестве внедренного сообщения выступает естественный текст, не рассматривается по причине неактуальности. 11 Portable Executable – формат исполняемых файлов (программ) используется в операционных системах семейства Windows. 12 О выборе величины подробнее будет написано в разделе 3.2.3. 13 В разделах 3.2.2 и 3.2.3 была использована другая выборка 14 В дальнейшем будет установлено, что следует анализировать только часть секции кода программы. 15 Распределение будет представлено в приложении A.2. 16 Любое изменение в программе должно разрушать водяной знак. 17 Процессоры ARM доминируют на рынке мобильной и повседневной электроники, и составляют аппаратную платформу для мобильных устройств Nokia, Sony Ericsson и др. 18 Размер файлов без учета комментариев в исходном коде программы |
Российской федерации Курс призван дать понимание принципов построения и функционирования сети Интернет, а также базирующихся на ней информационных технологий.... | Аналитический доклад Совету глав правительств СНГ о текущем состоянии,... В настоящее время эффективное информационное взаимодействие невозможно представить без использования информационных технологий, телекоммуникационных... | ||
Information technology. Security techniques. Methodology for it security evaluation Информационная технология. Методы и средства обеспечения безопасности. Методология оценки безопасности информационных технологий | Выпускная работа по «Основам информационных технологий» На современном этапе ни одни исследования в науке невозможно представить без использования информационных технологий. Данный реферат... | ||
Основные направления внедрения средств информационных и коммуникационных... Зация образования – это процесс обеспечения сферы образования методологией и практикой разработки и оптимального использования современных... | Доклад по теме: «Внедрение технологий глонасс в интересах обеспечения... «Внедрение технологий глонасс в интересах обеспечения безопасности граждан и социально-экономического развития Костромской области.... | ||
Применение информационных технологий на уроках английского языка... Возможности использования информационно-коммуникативных технологий в обучении английскому языку 17 | Методические рекомендации по организации месячникамедиабезопасности... Мешиона от 24. 10. 13 №397-у «О проведении Интрнет-уроков «Имею право знать!», в целях обеспечения информационной безопасности обучающихся,... | ||
Исследование и разработка методов и средств обеспечения информационной... Работа выполнена на кафедре прикладной информатики Московского государственного университета геодезии и картографии (миигаиК) | Применение информационных технологий на уроках истории и обществоведения... Возможности использования информационно-коммуникативных технологий в обучении истории 17 | ||
Программа по формированию навыков безопасного поведения на дорогах... Изучение и разработка новых методов подготовки к егэ в 11 классе с учетом использования современных технологий | Программа по формированию навыков безопасного поведения на дорогах... Изучение и разработка новых методов подготовки к егэ в 11 классе с учетом использования современных технологий | ||
Эффективность использования информационных технологий в исследованиях... Специальность 23. 00. 01 – теория и философия политики, история и методология политической науки | Рабочая программа учебной дисциплины «Информационные системы в экономике» Сформировать у студентов знаний и навыков в области использования информационных технологий и информационных систем для решения экономических... | ||
Методические рекомендации по государственной регистрации и учету... «Центр информационных технологий и систем органов исполнительной власти» (далее – фгну цитиС) в целях формирования национального... | Приходько Юлия Алексеевна Приложение №2 Белгородский региональный... Необходимость внедрения новых информационных технологий в процесс обучения математики |