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... |
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? |
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... |
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 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. |
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 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/ |