Terminál Fórum
https://www.technokrata.hu/forum/

File megrongálás
https://www.technokrata.hu/forum/viewtopic.php?f=2&t=23619
Oldal: 1 / 1

Szerző:  _optikus_ [ hétf. jan. 03, 2005 10:03 ]
Hozzászólás témája: 

Na akkor gyorsan osszedobtam egy delphi kodot (szerintem barmelyik delphi megeszi en 5-osben probaltam).
Garanciat nem adok ra, de nekem muxik (hibakezeles az minimalis). Ez egy konzol progi; hivasa 1 vagy 2 parameteres. Az elso parameter lehet "-R" ez jelzi, hogy az alkonyvtarakban is dolgozzon. A masodik parameter (vagy az -R kapcsolo hianyaban az elso) a filemaszk. Ez ugye a hagyomanyos standard maszk, pl.: "c:\akarmi\*.xls".
Minden fajlt 100 helyen rongal meg, veletlen byteokkal felul ir. Ha ez keves vagy sok akkor ird at a PostProc fuggvenyben. A file datumat nem valtoztatja meg (vagyis visszallitja az eredeti idore).

Kód:
program filedamager;
{$APPTYPE CONSOLE}
uses
  SysUtils,Classes;

type
  PFileRecursive = ^TFileRecursive;
  TFileRecursive = Object
    sPath :String[255];
    sMask :String[255];
    errorobj :String[255];
    bIncludeSubdirs: Boolean;
    Constructor Init(aPath,aMask:String;IncludeSubdirs:Boolean);
    Function    Run:Integer; Virtual;
    Function    SubRead(aPath:String):Integer; Virtual;
    Function    PreProcFile(aPath:String;sRec:TSearchRec):Integer; Virtual;
    Function    PostProcFile(aPath:String;sRec:TSearchRec):Integer; Virtual;
    Procedure   PathChanged(aPath:String); Virtual;
    Destructor  Done;
    End;

Constructor TFileRecursive.Init(aPath,aMask:String;IncludeSubdirs:Boolean);
 Begin
  sPath := aPath;
  sMask := aMask;
  errorobj := '';
  bIncludeSubdirs:=IncludeSubdirs;
 End;

Function    TFileRecursive.Run:Integer;
 Begin
  errorobj := '';
  Run := SubRead(sPath);
 End;

Procedure   TFileRecursive.PathChanged(aPath:String);
begin
end;

Function    TFileRecursive.SubRead(aPath:String):Integer;
 Var sRec:TSearchRec;
     err :Integer;
     DosError: Integer;
 Begin
  err := 0;
  DosError:=FindFirst( aPath+'*.*', faDirectory, sRec);
  If DosError <> 3 Then Begin
     PathChanged(aPath);
     While (DosError = 0) and (err = 0) Do Begin
       If (sRec.Name <> '.') and (sRec.Name <> '..') and ((sRec.Attr and faDirectory) <> 0) Then Begin
          err := PreProcFile(aPath,sRec);
          If err = 0 Then Begin
             If bIncludeSubdirs then
                err := SubRead(aPath+sRec.Name+'\');
             If err = 0 Then Begin
                err := PostProcFile(aPath,sRec);
                End;
             End;
          End;
       If Err = 0 Then DosError:=FindNext(sRec);
       End;
     If DosError = 3 Then Begin
        errorobj := aPath;
        Err := DosError;
        End Else Begin
        DosError:=FindFirst( aPath+sMask, faReadOnly+faHidden+faSysFile+faArchive+faAnyFile, sRec);
        If DosError <> 3 Then Begin
           While (DosError = 0) and (err = 0) Do Begin
             If (sRec.Name <> '.') and (sRec.Name <> '..') and ((sRec.Attr and faDirectory) = 0) Then Begin
                err := PreProcFile(aPath,sRec);
                If err = 0 Then Begin
                   err := PostProcFile(aPath,sRec);
                   End;
                End;
             If Err = 0 Then DosError:=FindNext(sRec);
             End;
           End;
        End;
     End Else Begin
     errorobj := aPath;
     Err := DosError;
     End;
  sysutils.FindClose(sRec);
  SubRead := Err;
 End;

Function    TFileRecursive.PostProcFile(aPath:String;sRec:TSearchRec):Integer;
 var
  fi:TFileStream;
  h,i:Integer;
  b:byte;
 Begin
  if (sRec.Attr and faDirectory) = 0 then begin
     Writeln(aPath,sRec.Name);
     fi:=TFileStream.Create(aPath+sRec.Name,fmOpenReadWrite);
     for i:=1 to 100 do begin
         fi.Seek(Random(fi.Size),soFromBeginning);
         b:=Random(255);
         fi.Write(b,1);
         end;
     fi.Free;
     h:=FileOpen(aPath+sRec.Name,fmOpenReadWrite);
     FileSetDate(h,sRec.Time);
     FileClose(h);
     end;
  PostProcFile := 0;
 End;

Function    TFileRecursive.PreProcFile(aPath:String;sRec:TSearchRec):Integer;
 Begin
  PreProcFile := 0;
 End;

Destructor  TFileRecursive.Done;
 Begin
 End;


var
 FileRecursive:TFileRecursive;
 path,mask:String;
 subdir:boolean;
begin
  if (ParamCount() < 1) or (ParamCount() > 2) then begin
     Writeln('Invalid parameters.');
     halt;
     end;
  subdir:=false;
  if ParamCount() = 2 then begin
     if (uppercase(Paramstr(1)) = '-R') or (uppercase(Paramstr(1)) = '/R') then subdir:=true
        else begin
        Writeln('Invalid switch:',Paramstr(1));
        halt;
        end;
     path:=ExtractFilePath(paramstr(2));
     mask:=ExtractFileName(paramstr(2));
     end else begin
     path:=ExtractFilePath(paramstr(1));
     mask:=ExtractFileName(paramstr(1));
     end;
  Randomize;
  FileRecursive.Init(path,mask,subdir);
  FileRecursive.Run;
  FileRecursive.Done;
end.


:!: :!: :!: Hasznalni csak esszel mert ez nem nagyon kerdez, fogja azt szetcseszi a fajlaidat! :!: :!: :!:
Jo szorakozast... 8)

Szerző:  _optikus_ [ hétf. jan. 03, 2005 9:07 ]
Hozzászólás témája: 

Kerdes, hogy a "rongalas" utan Te meg meg tudd nyitni vagy azt mar senki sem?

Mi van, kirugtak (fognak rugni) a melohelyrol? :wink:

Szerző:  vackor [ hétf. jan. 03, 2005 8:13 ]
Hozzászólás témája: 

Megoldható, ha a fájlok mérete vagy darabszáma miatt nem tart évekig...
:D

Szerző:  Dj Faustus [ csüt. dec. 30, 2004 18:33 ]
Hozzászólás témája: 

vackor írta:
Írsz egy programot, ami kiolvassa a fájl dátum/idő adatait, feltölti a fájl tartalmát a random() fv. által generált adatokkal :D aztán visszaállítja az időket. Ez utóbbihoz szükség lehet admin/root jogosultságra.

Ez akár megoldható egy hexa editorral is, ha lusta az ember programozni. :D

Szerző:  vackor [ csüt. dec. 30, 2004 12:00 ]
Hozzászólás témája: 

Írsz egy programot, ami kiolvassa a fájl dátum/idő adatait, feltölti a fájl tartalmát a random() fv. által generált adatokkal :D aztán visszaállítja az időket. Ez utóbbihoz szükség lehet admin/root jogosultságra.

Szerző:  excalibur2 [ csüt. dec. 30, 2004 11:52 ]
Hozzászólás témája:  File megrongálás

Üdv mindenkinek!

A segítségeteket kérném, hogy hogyan tudnék úgy fileokat (főleg .xls, .doc) úgy "megrongálni", hogy csak nehezen esetleg sehogy ne lehessen használni, de az én szándékosságom ne látszon rajta.

Előre is köszönettel: Ex


Ui.: Nem mások álltal készített adatokat szertetnék nehezen elérhetővé tenni, hanem azokat amiket én csináltam, de nem szeretném, ha visszaélnének a dolgaimmal.

Oldal: 1 / 1 Időzóna: UTC + 1 óra
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/