⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 process.pas

📁 wbs43open-src.zip 数字隐藏工具
💻 PAS
📖 第 1 页 / 共 4 页
字号:
                 ProBar.Width:=Percent*2;
                 Application.ProcessMessages;
                 If ExitNow Then Break;
               End;
             End;
             CloseFile(BMPFile);
             If OutBMPName='~wbstego.tmp' Then Begin
               FileCopy(OutBMPName,InBMPName);
               StrPCopy(XChar,OutBMPName);
               DeleteFile(XChar);
               OutBMPName:=InBMPName;
             End;
     End;
 End;
 CloseFile(DataFile);
 StrPCopy(XChar,temppath+'~wbstego.in');
 DeleteFile(XChar);
end;

procedure TForm16.EncodeTXT;
var
  TXTFile:     File Of Byte;
  NewTXT:      File Of Byte;
  Character:   Byte;
  DataFile:    File Of Byte;
  Data:        Byte;
  i:           Byte;
  BytePos:     Longint;
  Size:        Longint;
begin
  LAction.Caption:=ml.GetCodeString('Process',10);{'Encoding ...';  }      // code010
  Application.ProcessMessages;
  AssignFile(DataFile,temppath+'~wbstego.in');
  Reset(DataFile);
  AssignFile(TXTFile,InBMPName);
  Reset(TXTFile);
  Size:=FileSize(TXTFile);
  AssignFile(NewTXT,OutBMPName);
  ReWrite(NewTXT);
  BytePos:=0;
  While Not(EOF(DataFile)) Do Begin
    Read(DataFile,Data);
    For i:=7 DownTo 0 Do Begin
      Repeat
        Read(TXTFile,Character);
        Inc(BytePos);
        If (Character<>$00) And (Character<>$20) Then Write(NewTXT,Character);
      Until (Character=$00) Or (Character=$20);
      If (Data And (1 Shl i)) = (1 Shl i) Then Character:=$20 Else Character:=$00;
      Write(NewTXT,Character);
    End;
    Percent:=Trunc((BytePos/Size)*100);
    LPercent.Caption:=IntToStr(Percent)+'%';
    ProBar.Width:=Percent*2;
    Application.ProcessMessages;
    If ExitNow Then Break;
  End;
  While Not(EOF(TXTFile)) Do Begin
    Read(TXTFile,Character);
    Write(NewTXT,Character);
    Inc(BytePos);
    Percent:=Trunc((BytePos/Size)*100);
    LPercent.Caption:=IntToStr(Percent)+'%';
    ProBar.Width:=Percent*2;
    Application.ProcessMessages;
    If ExitNow Then Break;
  End;
  CloseFile(TXTFile);
  CloseFile(NewTXT);
  CloseFile(DataFile);
  If OutBMPName='~wbstego.tmp' Then Begin
    FileCopy(OutBMPName,InBMPName);
    StrPCopy(XChar,OutBMPName);
    DeleteFile(XChar);
    OutBMPName:=InBMPName;
    FID:=FileOpen(InBMPName,0);
    FileSetDate(FID,DTStamp);
    FileClose(FID);
  End;
  StrPCopy(XChar,temppath+'~wbstego.in');
  DeleteFile(XChar);
end;

procedure TForm16.EncodeHTM;
var
  HTMFile:     File Of Byte;
  NewHTM:      File Of Byte;
  Character:   Byte;
  Char2:       Byte;
  DataFile:    File Of Byte;
  Data:        Byte;
  i:           Byte;
  BytePos:     Longint;
  Size:        Longint;
begin
  LAction.Caption:=ml.GetCodeString('Process',11);{'Encoding ...';  }        // code011
  Application.ProcessMessages;
  AssignFile(DataFile,temppath+'~wbstego.in');
  Reset(DataFile);
  AssignFile(HTMFile,InBMPName);
  Reset(HTMFile);
  Size:=FileSize(HTMFile);
  AssignFile(NewHTM,OutBMPName);
  ReWrite(NewHTM);
  BytePos:=0;
  While Not(EOF(DataFile)) Do Begin
    Read(DataFile,Data);
    Repeat
      Read(HTMFile,Character);
      Inc(BytePos);
      If Character=$0D Then Begin
        Repeat
          Read(HTMFile,Char2);
          Inc(BytePos);
          If Char2=$0D Then Begin
            Character:=$0D;
            Write(NewHTM,Character);
          End;
        Until Char2<>$0D;
      End
      Else Begin
        Write(NewHTM,Character);
        Char2:=$00;
      End;
    Until (Character=$0D) And (Char2=$0A);
    For i:=7 DownTo 0 Do Begin
      If (Data And (1 Shl i)) = (1 Shl i) Then Character:=$09 Else Character:=$20;
      Write(NewHTM,Character);
    End;
    Character:=$0D;
    Write(NewHTM,Character);
    Write(NewHTM,Char2);
    Percent:=Trunc((BytePos/Size)*100);
    LPercent.Caption:=IntToStr(Percent)+'%';
    ProBar.Width:=Percent*2;
    Application.ProcessMessages;
    If ExitNow Then Break;
  End;
  While Not(EOF(HTMFile)) Do Begin
    Read(HTMFile,Character);
    Write(NewHTM,Character);
    Inc(BytePos);
    Percent:=Trunc((BytePos/Size)*100);
    LPercent.Caption:=IntToStr(Percent)+'%';
    ProBar.Width:=Percent*2;
    Application.ProcessMessages;
    If ExitNow Then Break;
  End;
  CloseFile(HTMFile);
  CloseFile(NewHTM);
  CloseFile(DataFile);
  If OutBMPName='~wbstego.tmp' Then Begin
    FileCopy(OutBMPName,InBMPName);
    StrPCopy(XChar,OutBMPName);
    DeleteFile(XChar);
    OutBMPName:=InBMPName;
    FID:=FileOpen(InBMPName,0);
    FileSetDate(FID,DTStamp);
    FileClose(FID);
  End;
  StrPCopy(XChar,temppath+'~wbstego.in');
  DeleteFile(XChar);
end;


procedure TForm16.EncodePDF;
label
  obj, endobj;
var
  PDFFile:     File Of Byte;
  NewPDF:      File Of Byte;
  Character:   Byte;
  Char2:       Byte;
  DataFile:    File Of Byte;
  Data:        Byte;
  i:           Byte;
  BytePos:     Longint;
  Size:        Longint;
  LineFeed:    Boolean;
  InObjTag:    Boolean;
  TagStr:      String;
begin
  LineFeed:=False;
  InObjTag:=False;
  LAction.Caption:=ml.GetCodeString('Process',12);{'Encoding ...'};       // code012
  Application.ProcessMessages;
  AssignFile(DataFile,temppath+'~wbstego.in');
  Reset(DataFile);
  AssignFile(PDFFile,InBMPName);
  Reset(PDFFile);
  Size:=FileSize(PDFFile);
  AssignFile(NewPDF,OutBMPName);
  ReWrite(NewPDF);
  BytePos:=0;
  While Not(EOF(DataFile)) Do Begin
    Read(DataFile,Data);
    Repeat
      LineFeed:=False;
      Read(PDFFile,Character);
      Inc(BytePos);
      If (Character=$0D) And Not(InObjTag) Then Begin
        LineFeed:=True;
      End
      Else Begin
        If (InObjTag) Then Begin
          If ((Character=Ord('e')) Or (Character=Ord('E'))) Then Begin
            endobj:
            TagStr:=Chr(Character);
            Write(NewPDF,Character);
            For i:=1 To 5 Do Begin
              Read(PDFFile,Character);
              Inc(BytePos);
              TagStr:=TagStr+Chr(Character);
              If ((Character=Ord('e')) Or (Character=Ord('E'))) Then goto endobj;
              Write(NewPDF,Character);
            End;
            TagStr:=LowerCase(TagStr);
            If TagStr='endobj' Then InObjTag:=False;
          End
          Else Begin
            Write(NewPDF,Character);
            Char2:=$00;
          End;
        End
        Else Begin
          If ((Character=Ord('o')) Or (Character=Ord('O'))) Then Begin
            obj:
            TagStr:=Chr(Character);
            Write(NewPDF,Character);
            For i:=1 To 2 Do Begin
              Read(PDFFile,Character);
              Inc(BytePos);
              TagStr:=TagStr+Chr(Character);
              If Character=$0D Then Begin
                LineFeed:=True;
                Break;
              End
              Else Begin
                If ((Character=Ord('o')) Or (Character=Ord('O'))) Then goto obj;
                Write(NewPDF,Character);
              End;
            End;
            TagStr:=LowerCase(TagStr);
            If TagStr='obj' Then InObjTag:=True;
          End
          Else Begin
            Write(NewPDF,Character);
            Char2:=$00;
          End;
        End;
      End;
    Until LineFeed;
    For i:=7 DownTo 0 Do Begin
      If (Data And (1 Shl i)) = (1 Shl i) Then Character:=$09 Else Character:=$20;
      Write(NewPDF,Character);
    End;
    Character:=$0D;
    Write(NewPDF,Character);
    Percent:=Trunc((BytePos/Size)*100);
    LPercent.Caption:=IntToStr(Percent)+'%';
    ProBar.Width:=Percent*2;
    Application.ProcessMessages;
    If ExitNow Then Break;
  End;
  While Not(EOF(PDFFile)) Do Begin
    Read(PDFFile,Character);
    Write(NewPDF,Character);
    Inc(BytePos);
    Percent:=Trunc((BytePos/Size)*100);
    LPercent.Caption:=IntToStr(Percent)+'%';
    ProBar.Width:=Percent*2;
    Application.ProcessMessages;
    If ExitNow Then Break;
  End;
  CloseFile(PDFFile);
  CloseFile(NewPDF);
  CloseFile(DataFile);
  If OutBMPName='~wbstego.tmp' Then Begin
    FileCopy(OutBMPName,InBMPName);
    StrPCopy(XChar,OutBMPName);
    DeleteFile(XChar);
    OutBMPName:=InBMPName;
    FID:=FileOpen(InBMPName,0);
    FileSetDate(FID,DTStamp);
    FileClose(FID);
  End;
  StrPCopy(XChar,temppath+'~wbstego.in');
  DeleteFile(XChar);
end;


procedure TForm16.DecodeBMP;
var
  BytePos:     Longint;
  BitPos:      Byte;
  BMPFile:     File Of Byte;
  DataFile:    File Of Byte;
  Data:        Byte;
  CVal:        Byte;
  Size:        Longint;
  i:           Longint;
  fact:        Longint;
begin
  LAction.Caption:=ml.GetCodeString('Process',13);{'Decoding ...'; }   // code013
  ReadBMPHeader(InManName,Header);
  Case Header.ColDepth Of
     4:    Begin
             AssignFile(DataFile,temppath+'~wbstego.out');
             ReWrite(DataFile);
             AssignFile(BMPFile,InManName);
             Reset(BMPFile);
             Size:=0;
             BytePos:=118;
             For i:=0 To 2 Do Begin
               Data:=0;
               For BitPos:=3 Downto 0 Do Begin
                 Seek(BMPFile,BytePos);
                 Read(BMPFile,CVal);
                 If (CVal And $10)=$10 Then Data:=Data+(1 Shl (2*BitPos+1));
                 If (CVal And $01)=$01 Then Data:=Data+(1 Shl (2*BitPos));
                 Inc(BytePos);
               End;
               Case i Of
                 0: fact:=$00001;
                 1: fact:=$00100;
                 2: fact:=$10000;
               End;
               Size:=Size+Data*fact;
             End;
             For i:=1 To Size Do Begin
               Data:=0;
               For BitPos:=3 Downto 0 Do Begin
                 Seek(BMPFile,BytePos);
                 Read(BMPFile,CVal);
                 If (CVal And $10)=$10 Then Data:=Data+(1 Shl (2*BitPos+1));
                 If (CVal And $01)=$01 Then Data:=Data+(1 Shl (2*BitPos));
                 Inc(BytePos);
               End;
               Write(DataFile,Data);
               Percent:=Trunc((((BytePos-118)/8)/Size)*100);
               LPercent.Caption:=IntToStr(Percent)+'%';
               ProBar.Width:=Percent*2;
               Application.ProcessMessages;
               If ExitNow Then Break;
             End;
             CloseFile(DataFile);
             CloseFile(BMPFile);
           End;
     8:    Begin
             AssignFile(DataFile,temppath+'~wbstego.out');
             ReWrite(DataFile);
             AssignFile(BMPFile,InManName);
             Reset(BMPFile);
             Size:=0;
             BytePos:=1078;
             For i:=0 To 2 Do Begin
               Data:=0;
               For BitPos:=7 Downto 0 Do Begin
                 Seek(BMPFile,BytePos);
                 Read(BMPFile,CVal);
                 If (CVal And $01)=$01 Then Data:=Data+(1 Shl BitPos);
                 Inc(BytePos);
               End;
               Case i Of
                 0: fact:=$00001;
                 1: fact:=$00100;
                 2: fact:=$10000;
               End;
               Size:=Size+Data*fact;
             End;
             For i:=1 To Size Do Begin
               Data:=0;
               For BitPos:=7 Downto 0 Do Begin
                 Seek(BMPFile,BytePos);
                 Read(BMPFile,CVal);
                 If (CVal And $01)=$01 Then Data:=Data+(1 Shl BitPos);
                 Inc(BytePos);
               End;
               Write(DataFile,Data);
               Percent:=Trunc((((BytePos-1078)/8)/Size)*100);
               LPercent.Caption:=IntToStr(Percent)+'%';
               ProBar.Width:=Percent*2;
               Application.ProcessMessages;
               If ExitNow Then Break;
             End;
             CloseFile(DataFile);
             CloseFile(BMPFile);
           End;
     24:   Begin
             AssignFile(DataFile,temppath+'~wbstego.out');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -