Скачать 399.08 Kb.
|
Project1.lps Unit1.pas unit Unit1;{Основной программный модуль.} {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, Buttons, StdCtrls,LCLIntf, ExtDlgs,Unit3,Process; type TForm1 = class(TForm) FileSizeInBytes: TLabel; HidingFileOpen: TOpenDialog; ModifiedContainerSave: TSaveDialog; SelectFile: TButton; ContainerOpen: TOpenPictureDialog; PassLabel: TLabel; FreeBytes: TLabel; Password: TEdit; Extract: TImage; HidePlz: TImage; Quit: TImage; MainMenu: TImage; Pic: TImage; Animation: TTimer; CoolEffect: TTimer; Back: TImage; procedure BackClick; procedure BackMouseEnter; procedure BackMouseLeave; procedure CoolEffectTimer; procedure ExtractClick; procedure ExtractMouseEnter; procedure ExtractMouseLeave; procedure FormCreate; procedure HidePlzClick; procedure HidePlzMouseEnter; procedure HidePlzMouseLeave; procedure PicClick; procedure AnimationTimer; procedure PicMouseEnter; procedure PicMouseLeave; procedure QuitClick; procedure QuitMouseEnter; procedure QuitMouseLeave; procedure SelectFileClick; function check:boolean; procedure Clear; function ContainerChecker(fln:string;mode:integer):boolean; public Container: TBitmap; end; var Form1: TForm1; hidingfilesize:longint; t:integer; path,hash,DCFB,dcfsib:string; kostil,kostil2,picloaded,fileloaded,completed,containerfull:boolean; hProcess : TProcess; implementation {$R *.lfm} { TForm1 } function TForm1.ContainerChecker(fln:string;mode:integer):boolean; //функция проверяющая пользовательский контейнер на наличие содержимого var MS,MS1: TMemoryStream; Buf,res: shortstring; i: integer; kd1:byte; begin //инициализируем переменные buf:=''; res:=''; kd1:=0; case mode of //проверка сигнатуры bitmap ( 42 4D) 1: begin MS1 := TMemoryStream.Create; MS1.LoadFromFile(fln); MS1.Seek(0,soEnd); for i:=0 to 1 do begin MS1.Position:=i; MS1.ReadBuffer(kd1,1);//66 res:=res+inttostr(kd1); end; MS1.Clear; MS1.Free; If res='6677' then Result:=true else Result:=false; end; 2: begin//проверка на наличие содержимого в контейнере MS := TMemoryStream.Create; Stegano.ReadBufferFromContainer(Container, 33, 7, 2, TStream(MS)); MS.Position := 0; MS.Read(Buf, 7); MS.Clear; MS.Free; if buf='savvas' then Result:=true else Result:=false; end; end; end; procedure TForm1.BackMouseEnter; begin //При наведении на курсор меняем цвет текста {$IFDEF Unix} Back.Picture.LoadFromFile(path+'images/buttons/back-active.png'); {$ELSE} Back.Picture.LoadFromFile(path+'images\buttons\back-active.png'); {$ENDIF} end; procedure TForm1.Clear; begin //очищаем поле пароля Password.Text:=''; //убираем информацию о загруженном файле fileloaded:=false; filesizeinbytes.visible:=false; //очищаем загруженный контейнер, если в него была сокрыта информация if completed=true then begin MainMenu.Visible:=false;//прячем главное меню Quit.Top:=200;//384 normal // kostil2:=false; Form1.Height:=Form1.Height div 2;//485 normal //делаем кнопки отвечающие за операции над контейнером невидимыми Extract.Visible:=false; HidePlz.Visible:=false; picloaded:=false; {$IFDEF Unix} Pic.Picture.LoadFromFile(path+'images/upload/nonactive.png');//возвращаем исходную картинку {$ELSE} Pic.Picture.LoadFromFile(path+'\images\upload\nonactive.png');//возвращаем исходную картинку {$ENDIF} FreeBytes.visible:=false; completed:=false; end; end; procedure TForm1.BackClick; begin //Возвращаемся в главное меню, выполняем скрытие графических элементов Back.Visible:=false; Password.Visible:=false; PassLabel.Visible:=false; Quit.Visible:=true; if kostil2=true then begin HidePlz.Visible:=true; Extract.Visible:=true; end; SelectFile.Visible:=false; CoolEffect.Enabled:=true; clear; end; procedure TForm1.ExtractMouseEnter; begin //При наведении на курсор меняем цвет текста {$IFDEF Unix} Extract.Picture.LoadFromFile(path+'images/buttons/extractbtn-active.png'); {$ELSE} Extract.Picture.LoadFromFile(path+'images\buttons\extractbtn-active.png'); {$ENDIF} end; procedure TForm1.ExtractClick; var FS: TFileStream; MS: TMemoryStream; Buf,sign: shortstring; BufI: integer; FName: string; begin if kostil2=false then begin HidePlz.Visible:=false; t:=0; kostil:=true; Quit.Visible:=false; CoolEffect.Enabled:=true; end else begin {Тут будем вызывать ф-ию извлечения Необходимо сверить хэш пароля введенного пользователем с хэшем записанным в контейнере.} //Инициализируем переменные sign и buf sign:=''; buf:=''; bufi:=0; MS := TMemoryStream.Create; Stegano.ReadBufferFromContainer(Container, 0, 33, 2, TStream(MS)); MS.Position := 0; MS.Read(Buf, 33); MS.Clear; Stegano.ReadBufferFromContainer(Container, 33, 7, 2, TStream(MS)); MS.Position:=0; MS.Read(sign,7); MS.Clear; hash:= Creepy.HashIt(Password.Text); If Buf <> hash then //Делаем надпись "Введите пароль:" красной. begin PassLabel.Font.Color:=clRed; //Выходим из процедуры. Exit; end; PassLabel.Font.Color:=$00A1FF90;//Делаем надпись зеленой Stegano.ReadBufferFromContainer(Container, 40, 4, 2, TStream(MS)); MS.Position := 0; MS.Read(BufI, 4); MS.Clear; Stegano.ReadBufferFromContainer(Container, 44, BufI, 2, TStream(MS)); MS.Position := 0; MS.Read(BufI, 4); MS.Read(BufI, 4); MS.Read(Buf, BufI); {$IFDEF Windows} FName := ContainerOpen.InitialDir + '\' + Buf; {$ELSE} FName := ContainerOpen.InitialDir + '/' + Buf; {$ENDIF} FS := TFileStream.Create(FName, fmCreate); MS.Read(BufI, 4); FS.CopyFrom(MS, BufI); FS.Free; MS.Free; //Выполняем расшифровку файла и сохраняем его с исходным названием showmessage('Файл - '+ExtractFileName(Creepy.Decrypt(path,password.Text,fname))+' успешно извлечен!'); //Удаляем извлеченный,зашифрованный файл deletefile(fname); end; end; procedure TForm1.HidePlzClick; var FS: TFileStream; MS, MS1: TMemoryStream; Buf,sign: shortstring; BufI: integer; HD:string; begin if kostil2=false then begin Extract.Visible:=false; t:=0; kostil:=false; Quit.Visible:=false; CoolEffect.Enabled:=true; end else begin if fileloaded=true then begin //Проверяем, что записываемый файл загружен if check=true then begin //Проверяем, что загруженный файл удовлетворяет объему контейнера if password.text<>'' then //Проверяем, что поле для ввода пароля не пустое begin //Выполняем шифрование файла введенным пользователем паролем HD:=Creepy.Encrypt(path,Password.Text,HidingFileOpen.FileName); |
Пояснительная записка к курсовой работе по дисциплине «Информационные системы и технологии» Пояснительная записка содержит 25 страниц, 3 изображения, 3 источника, 2 приложения |
Пояснительная записка к курсовой работе по дисциплине: «Система складирования... Усовершенствование методов управления логистическими процессами |
||
Пояснительная записка к курсовой работе по дисциплине «Производство и ремонт подвижного состава» Федеральное государственное бюджетное образовательное учреждение высшего образования |
Пояснительная записка к курсовой работе по дисциплине «Электропитание... Федеральное государственное бюджетное образовательное учреждение высшего образования |
||
Пояснительная записка к курсовой работе по дисциплине «Сертификация систем качества» Колесные пары железнодорожных вагонов: их назначение, устройство, ремонт и алгоритм подтверждение соответствия 5 |
Пояснительная записка к курсовой работе по дисциплине: «Система складирования... Операции, направленные на координацию складской деятельности со службой закупки |
||
Пояснительная записка к курсовой работе по дисциплине «Менеджмент... Стоимость основных производственных фондов ремонтного вагонного депо в плановом периоде, тыс руб |
Пояснительная записка к курсовой работе по дисциплине «Эксплуатация... Организация технического обслуживания и ремонта оборудования железнодорожной электросвязи в региональном центре связи |
||
Пояснительная записка к курсовой работе по дисциплине: «Система складирования... Рекомендации по совершенствованию организационных методов и внедрению более производительных технических средств реализации логистических... |
Пояснительная записка к курсовой работе по дисциплине «Эксплуатация... Тема: «Организация технического обслуживания и ремонта оборудования железнодорожной электросвязи в региональном центре связи» |
||
Техническая документация к программному продукту «Информационная... Программный продукт разработан в качестве курсовой работы по дисциплине «Технологии программирования» |
Пояснительная записка к курсовой работе по дисциплине: «Аудиотехника»... Федеральное государственное образовательное учреждение высшего профессионального образования «Чувашский государственный университет... |
||
Пояснительная записка к курсовой работе по дисциплине «Передача дискретных... Расчёт и организация сети передачи дискретных сообщений на участке железной дороги |
Пояснительная записка к курсовой работе по дисциплине «Вычислительные... Организационная структура корпорации включает в себя административный аппарат (решает управленческие задачи) и производственный сектор... |
||
Диагностирование состояния деталей цилиндропоршневой группы двигателей... Перечень ключевых слов, которые дают общее представление о содержании курсовой работы: субъективные и инструментальные методы диагностирования... |
Пояснительная записка к курсовой работе по дисциплине «Вычислительные... В данной курсовойработе необходимо разработать структурированную кабельную сеть для организации, объединяющей несколько подразделений... |
Поиск |