Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2009, 18:39   #1
Juri
 
Регистрация: 06.11.2008
Сообщений: 5
По умолчанию Поиск сигнатур

Вот пытаюсь на писать программу которая бы сравнивала 2 файла по первым 64 байтам и выделяла сигнатуры для определения его принадлкжности например у рар rar! и т.д. написал часть программы.
надеюсь на понимание и помощь в продолжении ведь только начинаю
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Buttons;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    BitBtn1: TBitBtn;
    OpenDialog1: TOpenDialog;
    BitBtn2: TBitBtn;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    OpenDialog2: TOpenDialog;
    BitBtn4: TBitBtn;
    RadioButton1: TRadioButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public

    { Public declarations }
  end;

var
  Form1: TForm1;
  file1: file of byte;
  file2: file of byte;
  fil1: string;
  fil2: string;
  sign1: array[0..128] of byte;
  sign2: array[0..128] of byte;
  sign3: array[0..128] of string;
  exstring: integer;
  HexString,HexString2, lab1, lab2, lab3, lab4: string;

  a, c, d: integer;
  b, e, f: byte;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
opendialog1.Execute;
fil1:=opendialog1.FileName;
groupbox1.Caption:=opendialog1.FileName;
 lab1:='';
 lab2:='';
 a:=0;
 AssignFile(file1, fil1);
 reset (file1);
  for a:=0 to 128 do
    begin;
      seek(file1,a);
      read (file1 ,b);
      sign1[a]:=b;
      //c:= sign1[a];
      //e:= sign2[a];
      //HexString := Format('%8x',[b])+'\';
      HexString := IntToHex( b,2 )+' ';
      lab1:=lab1+HexString;
      if b<32 then b:=42 ;
      lab2:=lab2+chr(b)+' ';
      case a of
        7,15,23,31,39,47,55,63,71,79,87,95,103,111,119,127:
        begin
        lab1:=lab1+chr(13);
        lab2:=lab2+chr(13);
        end;
        end;
        end;
  next;
  Closefile(file1);
  label1.caption:= lab1;
  label2.caption:= lab2;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
opendialog2.Execute;
fil2:=opendialog2.FileName;
groupbox2.Caption:=opendialog2.FileName;
 lab3:='';
 lab4:='';
 a:=0;
 AssignFile(file2, fil2);
 reset (file2);
  for a:=0 to 128 do
    begin;
      seek(file2,a);
      read (file2 ,e);
      sign2[a]:=e;
      //c:= sign1[a];
      //e:= sign2[a];
      //HexString := Format('%8x',[b])+'\';
      HexString2 := IntToHex( e,2 )+' ';
      lab3:=lab3+HexString2;
      if e<32 then e:=42 ;
      lab4:=lab4+chr(e)+' ';
      case a of
        7,15,23,31,39,47,55,63,71,79,87,95,103,111,119,127:
        begin
        lab3:=lab3+chr(13);
        lab4:=lab4+chr(13);
        end;
        end;
        end;
  next;
  Closefile(file2);
  label3.caption:= lab3;
  label4.caption:= lab4;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);

end;

end.
на данном этае программа может открыть 2 файла перевесть в хекс и расположить рядом столбцы со строками
Juri вне форума Ответить с цитированием
Старый 08.03.2009, 18:54   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

я делал проще.. сохранял в ini сигнатуру там есть binarystream (как то так), далее открывал файл в tmemorystream и сравнивал через
Код:
if comparemem(mystream1.memory, mystream1.memory, 64) then
// сигнатуры равны
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 08.03.2009, 19:49   #3
Juri
 
Регистрация: 06.11.2008
Сообщений: 5
По умолчанию

в программах для спутниковой рыбалки основные сигнатуры файлов уже забиты но попадаются и редкие типа .RMVB которые тоже попадаются
изначальная сигнатура не известна и хочется всеже облегчить ручной труд
Juri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в БД Karinka БД в Delphi 9 07.12.2008 16:25
поиск artemavd БД в Delphi 3 21.10.2008 17:39
ПОИСК FIIR БД в Delphi 3 16.06.2008 16:06
ПОИСК В БД HOMER БД в Delphi 2 20.12.2007 21:41
Поиск по БД. Шурик БД в Delphi 1 18.09.2007 02:04