Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Source Codes
Autor
Nachricht
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421

[B] File Shredder Modul
Verfasst am: 19.06.2009, 19:00

Hi Leute Smile

Hab mir gedacht ich sollte euch mal wieder nen source schreiben den ihr vielleicht gebrauchen könnt.

Name: DestroyFile()
Funktion: Überschreibt und löscht Dateien
Rückgabe: True oder False

Beschreibung:
Das ganze ist ein fertiges Modul. Ihr braucht den Code also nur in ein Modul einfügen und die Function "DestroyFile" aufrufen.

Syntax:
Code:
DestroyFile(Filepath, Loops, Blocksize)
Filepath - Ganz klar wird hier der Pfad zur Datei erwartet.

Loops - Optional. Entspricht den Wiederholungen, muß aber nicht angegeben werden. Default ist 1

Blocksize - Optional. Bestimmt die Größe der Blocks mit der die Datei überschrieben werden. Muß nicht angegeben werden. Default ist 1048576 Bytes. Das ist 1MB.

Zusätzliche Optionen und Informationen
Mit "fShredder." könnt ihr Informationen von der Funktion während dem überschreiben zurückerhalten.

fShredder.ActLoop - Gibt zurück bei der wievielten Wiederholung er ist.
fShredder.ActPosition - Gibt zurück an welcher Position in der Datei er sich gerade befindet.
fShredder.bStop - Kann auf True gesetzt werden um das ganze abzubrechen.

Wichtiges über die Function
1. Es wird überprüft ob es sich wirklich um eine Datei handelt und ob sie existiert.
2. Die Attribute der Datei werden auf normal gesetzt. (Versteckte oder Geschützte Dateien würden sonst Probleme machen)
3. Randomize wird mit der Api Gettickcount (Wie lange Windows schon läuft) initialisiert.
4. Die Datei wird in Blöcken überschrieben. Normal 1MB Blöcke.
Diese Blöcke bestehen aus einem Random erzeugten Zeichen.
5. Blockgröße ist einstellbar.
6. Wiederholungen sind einstellbar
7. Function übergibt Infos an Variablen um z.B. eine Progressbar zu füttern oder die aktuelle Geschwindigkeit anzeigen zu können.
8. Datei wird per Api gelöscht.
9. DoEvents wird nur alle 10 Aufrufe ausgeführt, bzw. falls ein Tastatur oder Maus Event ansteht.

Visual Basic: [code]
' ###############################
' # #
' # Coded by ZiG for vb-x.org #
' # #
' ###############################

Option Explicit

'Apis
Private Declare Function GetInputState Lib "user32" () As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Function DeleteFile Lib "kernel32.dll" Alias "DeleteFileA" (ByVal lpFileName As String) As Long

'Deklarationen
Private Type tOptions
ActLoop As Long 'Gibt die aktuelle Wiederholung zurück
ActPosition As Long 'Gibt die aktuelle Position zurück. Gut für Progressbars etc.
Stop As Boolean 'Boolean Variable um den Vorgang evt. abzubrechen
End Type

Public fShredder As tOptions

Public Function DestroyFile(ByVal sFilepath As String, Optional ByVal iLoops As Integer = 1, Optional ByVal iBlocksize As Long = 1048576) As Boolean
On Error GoTo Err:

'Deklarationen
Dim ff As Integer
Dim sBuffer As String
Dim i As Long, iFilesize As Long, iByteCount As Long
Dim nBlocksize As Long

'Überprüfen ob es eine Datei ist und existiert
If IsFile(sFilepath) And Not fShredder.Stop Then

'Attribute der Datei ändern
Call SetAttr(sFilepath, vbNormal)

'Datei Binär öffnen
ff = FreeFile
Open sFilepath For Binary As #ff

'Dateigröße ermitteln
iFilesize = LOF(ff)

'iBlocksize berechnen
If iFilesize < iBlocksize Then iBlocksize = iFilesize

'Randomize initialisieren mit der Zeit wie lange Windows schon läuft
Call Randomize(GetTickCount)

'Schleife für iLoops
For i = 1 To iLoops

fShredder.ActLoop = i
iByteCount = 0
nBlocksize = iBlocksize

'Schleife zum überschreiben der Datei
Do Until iByteCount >= iFilesize Or fShredder.Stop

'Block erzeugen
sBuffer = String(nBlocksize, ChrW$(CInt((90 * Rnd) + 32)))

'Block in Datei schreiben
Put #ff, (iByteCount + 1), sBuffer

'Aktuelle Position neu berechnen
iByteCount = (iByteCount + nBlocksize)
fShredder.ActPosition = iByteCount

'Überprüfen ob weniger Bytes übrig sind als Blocksize groß ist
If (iFilesize - iByteCount) < nBlocksize Then nBlocksize = (iFilesize - iByteCount)

MyDoEvents
Loop
Next i

'Datei schließen
Close #ff

DoEvents

'Datei löschen
If Not fShredder.Stop Then
If DeleteFile(sFilepath) = 0 Then GoTo Err:
End If
Else
GoTo Err:
End If

'Falls Stop gedrückt wurde zu Err: springen
If fShredder.Stop Then GoTo Err:

'Kein Error
DestroyFile = True

Exit Function
Err:
Close #ff
DestroyFile = False
End Function

Public Function IsFile(sFilepath As String) As Boolean
On Error Resume Next
IsFile = (GetAttr(sFilepath) And 24) = 0
End Function

Public Sub MyDoEvents()
Static xCount As Integer
If GetInputState() Then
DoEvents
ElseIf xCount = 10 Then
DoEvents
xCount = 0
Else
xCount = xCount + 1
End If
End Sub
[/code]Über Credits würde ich mich freuen wenn ihr jetzt vielleicht Lust und Laune habt einen Fileshredder bzw. irgendein Security tool damit zu machen Smile

mfg, ZiG
_________________
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Source Codes

Tags: visual basic, shredder, file, datei, credits

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wie kann ich mich bei euch anmelden?? 796 20.05.2002, 00:28
Keine neuen Beiträge Eine kleine Frage an euch.. 906 30.09.2007, 08:57
Keine neuen Beiträge TopMost Funktion unter DirectX 921 27.07.2007, 10:48
Keine neuen Beiträge Wie Funktion nutzen ? 1098 29.06.2007, 20:59
Keine neuen Beiträge update funktion einbauen 1341 28.01.2007, 23:11
 



[ Time: 0.1400s ][ Queries: 81 (0.0309s) ][ GZIP on - Debug on ]