Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите написать антивирус

9.9K
05 февраля 2005 года
xcf
2 / / 05.02.2005
Здраствуйте!
помогите написать антивирус
требования к нему следуещие
-имена вируса не более 20 символов
-длина сигнатуры вируса не более 100 символов :???:
-длина анализируемого файла не более 128 байт
-воводить вручную имя файла
хотябя как реализуется 2 требование
зарание БОЛШОЕ СПАСИБО:???:
302
07 февраля 2005 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by xcf
Здраствуйте!
помогите написать антивирус
требования к нему следуещие
-имена вируса не более 20 символов
-длина сигнатуры вируса не более 100 символов :???:
-длина анализируемого файла не более 128 байт
-воводить вручную имя файла
хотябя как реализуется 2 требование
зарание БОЛШОЕ СПАСИБО:???:


Что, собственно, надо сделать? Сохранять и загружать структуру, что описана выше, в файл? Или еще что-то?

P.S. Касперского хочешь убить? :)

9.9K
07 февраля 2005 года
xcf
2 / / 05.02.2005
P.S. Касперского хочешь убить? :) [/QUOTE]
сохранять и загружать структуру.
зачем касперского уивать пусть живет:)
302
07 февраля 2005 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by xcf
P.S. Касперского хочешь убить? :)


сохранять и загружать структуру.
зачем касперского уивать пусть живет:) [/QUOTE]
Опиши новый тип данных (если я тебя правильно понял):

 
Код:
type
  TVirus = record
    Name: Array [1..10] of Char;
    Signature: Array [1..100] of Char;
    Body: Array [1..128] of Byte;
  end;

Опиши типизированный файл, который работает с такой структурой:
 
Код:
Var
  FBase: File of TVirus;

Ну а дальше читай, записывай, etc.
45K
06 декабря 2008 года
Macgregor
3 / / 06.12.2008
:) А ты как вообще с массивами дружишь? С помощью массивов реализуются обе функции.
32K
25 декабря 2008 года
Serj123
36 / / 11.07.2008
Код:
Program Antivir;
 {Задание: Написать антивирус.
  Требования к нему следующие:
  - имена вирусов не более 20 символов;
  - длина сигнатуры вируса не более 100 символов;
  - длина анализируемого файла не более 128 байт;
  - вводить вручную имя файла.}
Uses
    Crt;
Type
 Virus1=Record
  Name_Virus: String[20]; {имя вируса}
  Signat: String[100];    {его сигнатура}
 End;
Const
 Dlina_File=128; {128 байт}
 Base_Data='data.dat';
Var
 i: Byte;
{----------Меню----------}
Procedure Menu(Var i: Byte);
 Var
  Erorr, Erorr1: Integer;
  Simbol: Char;
  Base_dat: File of Virus1;
  Stroka: Virus1;
  Name_F1: File of Byte;
  Zapros_Name_F: String;
  Data_File: String[128];
  Size: LongInt; {размер файла}
  Dan, j: Byte;
  Cikl: LongInt;
  Obn_Virus: Boolean;
 Begin
  Obn_Virus:=False;
  {Чистим экран}
  ClrScr;
  {Выводим меню}
  GotoXY(38,9);
  Write('Меню');
  GotoXY(24,11);
  Write('1. Редактирование базы данных');
  GotoXY(24,12);
  Write('2. Поиск вирусов');
  GotoXY(24,13);
  Write('3. Выход');
  GotoXY(24,15);
  Write('Введите номер пункта[.]');
  GotoXY(45,15);
  i:=0;
  {Ждем выбор пользователя}
  Repeat
   Simbol:=ReadKey;
   {Определяем номер пункта}
   If (Simbol='1') or (Simbol='2') or (Simbol='3') then
    Begin
     {Выводим на экран номер пункта}
     Write(Simbol);
     {Определяем номер пункта}
     i:=Ord(Simbol)-48;
     GotoXY(45,15);
    End
   Else {Если нажата отличная от номера пункта клавиша,
         за исключением: Enter}
    If Simbol<>#13 then
                      Begin
                       GotoXY(45,15);
                       Write('.');
                       GotoXY(45,15);
                       i:=0;
                      End;
  Until (Simbol=#13) and (i<>0);
  {Выбор пункта}
  Case i of
   1: {Редактирование базы данных}
      Begin
       {Чистим экран}
       ClrScr;
       {Связываем переменную с файлом}
       Assign(Base_dat, 'Base.dat');
       {$I-}{отключение автоматического контроля за вводом/выводом}
       {Попытки открыть файл}
       Reset(Base_Dat);
       Erorr:=IOResult;
       If Erorr=2 then
                      Begin
                       Rewrite(Base_Dat);
                       Erorr:=IOResult;
                      End;
       If Erorr<>0 then
                      Begin
                       Write('Не удалось открыть файл...', Erorr);
                       ReadKey;
                      End;
       {Если удалось открыть файл}
       If Erorr=0 then
                     Begin
                      WriteLn('Файл с баззой данных открыт успешно...');
                      WriteLn;
                      {Определяем всего количество записей}
                      WriteLn('Обнаружено: ',FileSize(Base_Dat),' записей...');
                      {Запрос что делать}
                      Repeat
                       WriteLn('Хотите внести новую запись(1-да,2-нет)?');
                       Simbol:=ReadKey;
                      Until (Simbol='1') or (Simbol='2');
                      If Simbol='1' then
                       Begin
                        {Переход на последнюю запись}
                        Seek(Base_Dat, FileSize(Base_Dat));
                        {Запрос имени вируса}
                        WriteLn;
                        Repeat
                         Write('Введите имя вируса: ');
                         ReadLn(Stroka.Name_Virus);
                        Until Length(Stroka.Name_Virus)>0;
                        {Запрос сигнатуры вируса}
                        Repeat
                         Write('Введите его сигнатуру: ');
                         ReadLn(Stroka.Signat);
                        Until Length(Stroka.Signat)>0;
                        {Запись в файл}
                        Write(Base_Dat, Stroka);
                       End;
                      Close(Base_Dat);
                     End;
       {$I+}{включение автоматического контроля за вводом/выводом}
      End;
   2: {Поиск вирусов}
      Begin
       {Чистим экран}
       ClrScr;
       {Сообщение}
       WriteLn('Поиск вирусов...');
       WriteLn;
       {Запрашиваем имя исследуемого файла}
       Repeat
        Write('Введите имя файла: ');
        ReadLn(Zapros_Name_F);
       Until Length(Zapros_Name_F)>0;
       {Связываем переменную с файлом}
       Assign(Name_F1, Zapros_Name_F); {файл, в котором ищется вирус}
       {Связываем переменную с файлом}
       Assign(Base_dat, 'Base.dat'); {файл с антивирусной базой}
       {$I-}{отключение автоматического контроля за вводом/выводом}
       {Пытаемся открыть файл}
       Reset(Name_F1);
       Erorr:=IOResult;
       Reset(Base_dat);
       Erorr1:=IOResult;
       If (Erorr<>0) or (Erorr1<>0) then
                      Begin {Файл не удалось открыть}
                       WriteLn('Файл не удалось открыть.');
                       WriteLn('Повторите попытку...');
                       ReadKey;
                      End
       Else {Файл удалось открыть}
        Begin
         {Определяем размер файла}
         Size:=FileSize(Name_F1);
         {Выводим размер файла}
         WriteLn;
         WriteLn('Размер файла: ', Size, ' байт');
         {Если файл меньше 128 байт, проверяем его на наличие вирусов}
         If Size<129  then
          Begin
           Data_File[0]:=#0;
           {Читаем из файла}
           While not Eof(Name_F1) do
            Begin
             Read(Name_F1, Dan);
             Data_File:=Data_File+Chr(Dan);
            End;
           {Вывод содержимого файла}
           WriteLn('Текст файла: ', Data_File);
           {Проверяем наличие вируса в базе}
           If FileSize(Base_Dat)>0 then
            Begin
             {Перевод курсора в начало файла}
             Seek(Base_Dat,0);
             While FilePos(Base_Dat)<FileSize(Base_Dat) do
              Begin
               {Читаем запись}
               Read(Base_Dat, Stroka);
               {Cравниваем ее с текущим файлом}
               If Pos(Stroka.Signat, Data_File)<>0 then
                Begin
                 Obn_Virus:=True;
                 WriteLn('ВНИМАНИЕ!!!');
                 WriteLn;
                 WriteLn('Обнаружен вирус: ', Stroka.Name_Virus);
                 WriteLn;
                 {Запрос действия}
                 Repeat
                  WriteLn('Выберите действие:');
                  WriteLn('1 - Лечить');
                  WriteLn('2 - Удалить файл');
                  WriteLn('3 - Отмена ');
                  Simbol:=ReadKey;
                 Until (Simbol='1') or (Simbol='2') or (Simbol='3');
                 {Закрываем файл}
                 Close(Name_F1);
                 {Действие по выбору пользователя}
                 Case Simbol of
                  '1': {удаление тела вируса}
                     Begin
                      {Изменяем содержимое файла}
                      If Pos(Stroka.Signat, Data_File)<>0 then
                       Delete(Data_File, Pos(Stroka.Signat, Data_File), Length(Stroka.Signat));
                      {Попытка перезаписать файл}
                      Rewrite(Name_F1);
                      {Проверка открытия файла}
                      If IOResult=0 then
                       Begin {если файл открыт}
                        {Записываем и закрываем}
                        For j:=1 to Length(Data_File) do
                         Begin
                          Dan:=Ord(Data_File[j]);
                          Write(Name_F1, Dan);
                         End;
                        Close(Name_F1);
                        If IOResult=0 then
                                         WriteLn('Файл удалось вылечить');
                       End
                      Else
                        Begin
                         Write('Не удалось вылечить файл...');
                         ReadKey;
                        End;
                     End;
                  '2': {удаление файла с вирусом}
                     Begin
                      {Удаление файла}
                      Erase(Name_F1);
                      {Проверка удаления файла}
                      If IOResult=0 then
                       WriteLn('Файл успешно удален')
                      Else
                       WriteLn('Файл не удалось удалить');
                     End;
                  '3': WriteLn('Отмена действий');
                 End;
                 Break;
                End;
              End;
             If Obn_Virus=False then
                                   Begin
                                    WriteLn('Вирус не обнаружен...');
                                    Close(Name_F1);
                                   End;
            End
           Else {если нет ни единого вируса в базе}
              WriteLn('В антивирусной базе нет ни единого вируса...');
           ReadKey;
           {Закрываем файл}
           Close(Base_dat);
          End;
        End;
       {$I+}{включение автоматического контроля за вводом/выводом}
      End;
  End;
 End;
{---------------------------------------------}
Begin
 {Загружаем меню и ждем выбора 3-го пункта}
 Repeat
  Menu(i);
 Until i=3;
 {Очищаем экран перед завершением программы}
 ClrScr;
End.
14
25 декабря 2008 года
Phodopus
3.3K / / 19.06.2008
Смотрите, млин, дату последнего поста, некромансеры!
32K
25 декабря 2008 года
Serj123
36 / / 11.07.2008
Может и поздно ответ дал, зато интересное заданице было :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог