Jump to content

AU3-SD


mrbond007
 Share

Recommended Posts

AU3-SD(Secure Delete) is a File Shredder that lets you choose a secure method to delete the file so it cannot be recovered any more. When you delete a file, Windows doesn't actually remove the contents of the file from your hard drive. Windows only deletes a reference to the file from a table that lists all files on your computer. Windows says that the file is deleted, but the content of the file still exists so anybody who uses undelete programs can recover the file and expose your secrets. Your hard drive might appear clean but still be full of 'sensitive material'. AU3-SD allows you to choose one of these shredding mehods:

Zero : Overwrites each deleted file with Zero's.

Random-Character : Overwrites each deleted file with one random Generated character.

Random-Chunk Overwrites each portion of each deleted file with random generated characters.

Each of the above methods will scramble the file size for better results.

And allows you to choose how many times to overwrite the target files.

Normally looping from 1 to 7 times will stop software recovery tools, while looping from 13 to 37 will stop both hardware and software recovery tools.

An extra option is "Scramble File Attributes" that changes the file date to make it even harder to recover it.

I've tried many programs like "GetDataBack-NTFS", "Active@ Undelete" and "Restoration" but they all failed to recover the file back. Even supreme programs like "F.R.E.D" and "Encace" won't make any difference.

And if that wasn't enough i've included the Disk Free Space Washer option to overwrite the empty space on your drive and to shutdown your PC when done(cause the bigger your drive the longer it will take). I recommend using this twice a week.

Notes :

Press "F4" anytime to stop and close AU3-SD.

When using the "Wash Disk Empty Space" option windows will worn you about insuffisent disk space.

Make sure the file you want to delete is unlocked(example if you want to delete index.dat you have to kill explorer.exe, delete index.dat and then run explorer.exe again).

I'm still waiting for more cool functions to come like "FileRename" in order to improve AU3-SD ** FileMove isn't good enough :P **

Note : on some versions like 98/ME the pc might appear frozen but not to worry cause it works fine.

About "Wash Empty Disk Sapce" can be best used before going to sleep

Good Luck protecting your privacy. :whistle:

;========================================================================================
; Description:    AU3-SD
; Author(s):        MrBond007
; Comments:         Kills sensitive data and makes it unrecoverable
;
;                   Credits also goes to the authors of GuiListView.au3 and File.au3
;                   Remember if you like AutoIt Donate to the AutoIt Project:
;                   http://www.autoitscript.com/donate.php
;========================================================================================
#include <GUIConstants.au3>
#include <GuiListView.au3>
#include <File.au3>
#RequireAdmin
Opt("TrayIconHide", 1)

GLobal $fop, $m, $i, $s, $r, $ra1, $ra2, $ra3, $contain, $siz, $tHandle, $Button[8], $gChr, $split
Global $WM_DROPFILES = 0x233
Global $gaDropFiles[1]

If StringInStr(@AutoItVersion, "3.2.2.") Or StringInStr(@AutoItVersion, "3.2.1.") Or StringInStr(@AutoItVersion, "3.1.") Then
    $tHandle = "2"
Else
    $tHandle = "18"
EndIf
$HomeDrive = @HomeDrive
If StringRight($HomeDrive, 1) == "\" Then $HomeDrive = StringLeft($HomeDrive, 2)
If $HomeDrive = "" Then $HomeDrive = StringLeft(@WindowsDir, 2)

HotKeySet("!x", "_Close")

$version = "AU3-SD [ One Fast File Shredder ]"
If WinExists($version) Then Exit
AutoItWinSetTitle($version)

$gui_handle = GUICreate("AU3-SD [ One Fast File Shredder ]", 445, 450, -1, -1, -1, $WS_EX_ACCEPTFILES)
GUICtrlCreateGroup("Choose the File(s) + The Deletion Method", 5, 2, 435, 240)
GUICtrlSetBkColor(-1, 0x20B7FF)

$List_V = GUICtrlCreateListView("Name | Size", 10, 20, 325, 180)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlSendMsg($List_V, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
_GUICtrlListView_SetColumnWidth($List_V, 0, 240)
_GUICtrlListView_SetColumnWidth($List_V, 1, 60)
$List_handle = ControlGetHandle($gui_handle, "", $list_V)

$Button[0] = GUICtrlCreateButton("Choose", 340, 20, 95, 25)
$Button[1] = GUICtrlCreateButton("Remove From List", 340, 58, 95, 25)
$Button[2] = GUICtrlCreateButton("Remove All", 340, 97, 95, 25)
$Button[7] = GUICtrlCreateButton("Let's Rock", 340, 137, 95, 25)
$Button[3] = GUICtrlCreateButton("Clean Recycle Bin", 340, 175, 95, 25)

$Combo = GUICtrlCreateCombo("Zero", 10, 210, 150, 120, $CBS_DROPDOWNLIST)
GUICtrlSetData(-1, "Random Character")
GUICtrlSetData(-1, "Random-Chunk")

$inp2 = GUICtrlCreateInput("1", 170, 210, 40, 20, $ES_READONLY)
GUICtrlCreateLabel("X Loop Times", 215, 213, 80, 20)

$updown = GUICtrlSetLimit(GUICtrlCreateUpdown($inp2), 99, 1)
$Checkpl = GUICtrlCreateCheckbox("Scramble File Attributes", 305, 210)
GUICtrlCreateGroup("Wash Disk Empty Space", 5, 245, 435, 175)
GUICtrlSetBkColor(-1, 0x20B7FF)

$list = GUICtrlCreateListView("Drive | Used Space | Free Space | Type", 10, 265, 425, 95)
GUICtrlSendMsg($list, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($list, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_CHECKBOXES, $LVS_EX_CHECKBOXES)
_GUICtrlListView_SetColumnWidth($list, 0, 100)
_GUICtrlListView_SetColumnWidth($list, 1, 125)
_GUICtrlListView_SetColumnWidth($list, 2, 125)
_GUICtrlListView_SetColumnWidth($list, 3, 70)
$List_hwnd = ControlGetHandle($gui_handle, "", $list)

$drives = DriveGetDrive("Fixed")
For $i = 1 To $drives[0]
    $totals = Round(DriveSpaceTotal($drives[$i]) / 1024, 1)
    $spacef = Round(DriveSpaceFree($drives[$i]) / 1024, 1)
    $spaceu = $totals - $spacef
    GUICtrlCreateListViewItem(StringUpper($drives[$i]) & "|" & $spaceu & " GB" & "|" & $spacef & " GB" & "|" & DriveGetFileSystem($drives[$i]), $list)
Next

$Button[4] = GUICtrlCreateButton("Wash", 175, 365, 100, 25)
$Checkp2 = GUICtrlCreateCheckbox("Shutdown PC when done washing", 10, 395)
$Button[5] = GUICtrlCreateButton("Exit", 335, 365, 100, 25)
$Button[6] = GUICtrlCreateButton("Refresh", 10, 365, 100, 25)
$prog = GUICtrlCreateProgress(6, 429, 250, 15)
$label = GUICtrlCreateLabel("", 115, 430, 35, 15)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$label2 = GUICtrlCreateLabel("", 300, 428, 150, 20)
$break = 1

GUISetState()
GUIRegisterMsg($WM_DROPFILES, "WM_DROPFILES_FUNC")

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $GUI_EVENT_DROPPED
            _FilesDropped()
        Case $msg = $Button[0]
            _Dialog()
        Case $msg = $Button[1]
            _GUICtrlListView_DeleteItemsSelected($List_handle)
        Case $msg = $Button[2]
            _GUICtrlListView_DeleteAllItems($List_handle)
        Case $msg = $Button[7]
            _StartShredding()
        Case $msg = $Button[3]
            _PrepareBin()
        Case $msg = $Button[4]
            Progress_On()
            _Wash()
            Progress_Off()
        Case $msg = $Button[5]
            _Close()
        Case $msg = $Button[6]
            _RefreshList()
    EndSelect
WEnd

Func _FilesDropped()
    For $i = 0 To UBound($gaDropFiles) - 1
        If StringInStr(FileGetAttrib($gaDropFiles[$i]), "D") Then
            ContinueLoop
        Else
            If _GUICtrlListView_FindText($List_V, $gaDropFiles[$i], -1, False, True) = -1 Then GUICtrlCreateListViewItem($gaDropFiles[$i] & "|" & Round(FileGetSize($gaDropFiles[$i]) / 1024, 2), $List_V)
        EndIf
    Next
EndFunc

Func _Dialog()
    $diag = FileOpenDialog("choose the file(s)", "", "(*.*)", 4)
    If $diag <> "" Then
        If StringInStr($diag, "|") > 0 Then
            $strip = StringSplit($diag, "|")
            For $i = 2 To $strip[0]
                If StringRight($strip[1], 1) == "\" Then
                    If _GUICtrlListView_FindText($List_V, $strip[1] & $strip[$i], -1, False, True) = -1 Then GUICtrlCreateListViewItem($strip[1] & $strip[$i] & "|" & Round(FileGetSize($strip[1] & $strip[$i]) / 1024, 1) & " KB", $List_V)
                Else
                    If _GUICtrlListView_FindText($List_V, $strip[1] & "\" & $strip[$i], -1, False, True) = -1 Then GUICtrlCreateListViewItem($strip[1] & "\" & $strip[$i] & "|" & Round(FileGetSize($strip[1] & "\" & $strip[$i]) / 1024, 1) & " KB", $List_V)
                EndIf
            Next
        Else
            If _GUICtrlListView_FindText($List_V, $diag, -1, False, True) = -1 Then GUICtrlCreateListViewItem($diag & "|" & Round(FileGetSize($diag) / 1024, 1) & "KB", $List_V)
        EndIf
    EndIf
EndFunc

Func _StartShredding()
    GUICtrlSetData($label, "")
    GUICtrlSetData($prog, 0)
    GUICtrlSetState($Button[4], $GUI_DISABLE)
    GUICtrlSetData($Button[7], "Stop")
    Progress_On()
    GetChr()

    $begin = TimerInit()
    Opt("GUIOnEventMode", 1)
    GUICtrlSetOnEvent($Button[7], "_Stpp")
    Local $loop = 0

    $oriG = _GUICtrlListView_GetItemCount($List_handle)
    If $oriG >= 1 Then
        For $z = 0 To _GUICtrlListView_GetItemCount($List_handle)
            If $oriG > 1 Then
                $loop += 1
                GUICtrlSetData($prog, $loop * 100 / $oriG)
                GUICtrlSetData($label, Round($loop * 100 / $oriG) & "%")
                GUICtrlSetData($label2, "Killing File " & $loop)
            EndIf
            $split = StringSplit(_GUICtrlListView_GetItemText($List_handle, $z), "|")
            If FileGetSize($split[1]) <= 1000 Then
                $siz = 1
            Else
                $siz = Round(FileGetSize($split[1]) / 1000)
            EndIf
            For $m = 1 To GUICtrlRead($inp2)
                If $oriG = 1 Then
                    GUICtrlSetData($prog, Round($m * 100 / GUICtrlRead($inp2)))
                    GUICtrlSetData($label, Round($m * 100 / GUICtrlRead($inp2)) & "%")
                    GUICtrlSetData($label2, "Killing File(s)")
                EndIf
                $fop = FileOpen($split[1], $tHandle)
                For $x = 1 To $siz
                    FileWrite($fop, $gChr)
                    If $break = 2 Then
                        FileClose($fop)
                        ExitLoop
                    EndIf
                Next
                FileClose($fop)
                If GUICtrlRead($Checkpl) = $GUI_CHECKED Then momo()
                If $break = 2 Then
                    $z = _GUICtrlListView_GetItemCount($List_handle) + 1
                    $m = 0
                    $break = 3
                    ExitLoop
                EndIf
                Next
                If $break = 1 Then
                    $split = StringSplit(_GUICtrlListView_GetItemText($List_handle, $z), "|")
                    FileDelete($split[1])
                    _GUICtrlListView_DeleteItem($List_handle, $z)
                    $z = $z - 1
                    If _GUICtrlListView_GetItemCount($List_handle) = 0 Then ExitLoop
                EndIf
            Next
        EndIf
    $break = 1
    Opt("GUIOnEventMode", 0)
    GUICtrlSetData($Button[7], "Let's Rock")
    $dif = Round(TimerDiff($begin) / 1000)
    GUICtrlSetData($label2, "Done In " & $dif & " seconds :)")
    Progress_Off()
EndFunc

Func GetChr()
    $gChr = ""
    $ReadComb = GUICtrlRead($Combo)
    If $ReadComb = "Zero" Then
        For $x = 0 To 1024
            $gChr = $gChr & Chr(48)
        Next
    ElseIf $ReadComb = "Random Character" Then
        $rChr = Random(0, 255, 1)
        For $x = 0 To 1024
            $gChr &= Chr($rChr)
        Next
    ElseIf $ReadComb = "Random-Chunk" Then
        $rChr = Random(0, 255, 1)
        For $x = 0 To 1024
            $gChr &= Chr(Random(0, 255, 1))
        Next
    EndIf
    Return $gChr
EndFunc

Func mom()
    $ra1 = Random(1960, 2070, 1)
    $ra2 = Random(1, 12, 1)
    $ra3 = Random(1, 31, 1)
    If $ra2 < 10 Then $ra2 = "0" & $ra2
    If $ra3 < 10 Then $ra3 = "0" & $ra3
EndFunc

Func momo()
    $o = 0
    $t = 0
    For $o = 0 To 20
        For $t = 0 To 2
            mom()
            FileSetTime($split[1], $ra1 & $ra2 & $ra3, $t)
        Next
    Next
EndFunc

Func _PrepareBin()
    Progress_On()
    If @OSVersion == "WIN_VISTA" Then
        If StringInStr(FileGetAttrib($HomeDrive & "\$RECYCLE.BIN"), "D") Then $contain = "\$RECYCLE.BIN"
    Else
        If StringInStr(FileGetAttrib($HomeDrive & "\recycler"), "D") Then
            $contain = "\recycler"
        ElseIf StringInStr(FileGetAttrib($HomeDrive & "\recycled"), "D") Then
            $contain = "\recycled"
        EndIf
    EndIf
    If $contain <> "" Then
        _ShredBin()
        Progress_Off()
    EndIf
EndFunc

Func _Wash()
    GUICtrlSetData($Button[4], "Stop Washing")
    GUICtrlSetState($Button[4], $GUI_ENABLE)
    GUICtrlSetState($Button[7], $GUI_DISABLE)
    If StringInStr(@AutoItVersion, "3.2.2.") Or StringInStr(@AutoItVersion, "3.2.1.") Or StringInStr(@AutoItVersion, "3.1.") Then
        $ver = "0"
    Else
        $ver = "16"
    EndIf
    $fname = "\temp"
    If @Compiled = 0 Then
        $fJunk = FileOpen(@AutoItExe, $ver)
    Else
        $fJunk = FileOpen(@ScriptFullPath, $ver)
    EndIf
    $readshot = FileRead($fJunk)
    GUICtrlSetData($label2, "Washing Drive")
    For $p = 0 To $drives[0] - 1
        $drvindx = _GUICtrlListView_GetItemChecked($List_hwnd, $p)
        If $drvindx = 1 Then
            $string1 = _GUICtrlListView_GetItemText($List_hwnd, $p);C: F:
            If DriveGetFileSystem($string1) = "FAT32" Then
                $fop = FileOpen($string1 & $fname & ".txt", $tHandle)
                $spaceu = Round(DriveSpaceTotal($string1), 1) - Round(DriveSpaceFree($string1), 1)
                $calc = Round(DriveSpaceFree($string1))
                Opt("GUIOnEventMode", 1)
                GUICtrlSetOnEvent($Button[4], "_Stpp")
                Local $rt = "", $yy = ""
                While Round(DriveSpaceFree($string1)) >= 10
                    $rt = $rt + 1
                    FileWrite($string1 & $fname & ".txt", $readshot)
                    If $rt = 8000 Then
                        $yy = $yy + 1
                        $fname &= $yy
                        $rt = ""
                    EndIf
                    If Round(DriveSpaceFree($string1)) >= 10 Then
                        $spaceu2 = (Round(DriveSpaceTotal($string1), 1) - Round(DriveSpaceFree($string1), 1)) - Round($spaceu)
                        GUICtrlSetData($prog, ($spaceu2 / $calc * 100))
                        GUICtrlSetData($label, Round($spaceu2 / $calc * 100, 2) & "%")
                    Else
                        GUICtrlSetData($prog, 100)
                        GUICtrlSetData($label, "100%")
                        ExitLoop
                    EndIf
                    If $break = 2 Then
                        $break = 1
                        GUICtrlSetData($label, "")
                        $p = $drives[0] + 1
                        ExitLoop
                    EndIf
                WEnd
                FileClose($fop)
                Opt("GUIOnEventMode", 0)
                _KillTemp()
            Else
                $fop = FileOpen($string1 & $fname & ".txt", $tHandle)
                $spaceu = Round(DriveSpaceTotal($string1), 1) - Round(DriveSpaceFree($string1), 1)
                $calc = Round(DriveSpaceFree($string1))
                Opt("GUIOnEventMode", 1)
                GUICtrlSetOnEvent($Button[4], "_Stpp")
                Local $rt = "", $yy = ""
                While Round(DriveSpaceFree($string1)) >= 10
                    FileWrite($string1 & $fname & ".txt", $readshot)
                    If Round(DriveSpaceFree($string1)) >= 10 Then
                        $spaceu2 = (Round(DriveSpaceTotal($string1), 1) - Round(DriveSpaceFree($string1), 1)) - Round($spaceu)
                        GUICtrlSetData($prog, ($spaceu2 / $calc * 100))
                        GUICtrlSetData($label, Round($spaceu2 / $calc * 100, 2) & "%")
                    Else
                        GUICtrlSetData($prog, 100)
                        GUICtrlSetData($label, "100%")
                        ExitLoop
                    EndIf
                    If $break = 2 Then
                        $break = 1
                        GUICtrlSetData($label, "")
                        $p = $drives[0] + 1
                        ExitLoop
                    EndIf
                WEnd
                FileClose($fop)
                Opt("GUIOnEventMode", 0)
                _KillTemp()
            EndIf
        EndIf
    Next
    FileClose($fJunk)
    GUICtrlSetData($label2, "")
    GUICtrlSetData($Button[4], "Wash")
    GUICtrlSetState($Button[7], $GUI_ENABLE)
    If GUICtrlRead($Checkp2) = $GUI_CHECKED And StringInStr(GUICtrlRead($label), "100%") Then
        Shutdown(9)
    Else
        GUICtrlSetData($label, "")
    EndIf
EndFunc

Func _KillTemp()
    For $p = 1 To $drives[0]
        FileDelete($drives[$p] & "\temp*.*")
    Next
EndFunc

Func _ShredBin()
    $begin = TimerInit()
    GUICtrlSetState($Button[7], $GUI_DISABLE)
    GUICtrlSetState($Button[4], $GUI_DISABLE)
    GUICtrlSetData($prog, 0)
    GUICtrlSetData($label2, "Shredding Recycle Bin")
    RunWait('"' & @ComSpec & '" /c dir /a /b /s "' & $HomeDrive & $contain & '"\*.* > temp.txt"', '', @SW_HIDE)
    For $i = 0 To _FileCountLines("temp.txt")
        $s = 0
        $t = 0
        Local $gChr = ""
        $sRead = FileReadLine("temp.txt", $i)
        If FileGetSize($sRead) <= 1000 Then
            $siz = 1
        Else
            $siz = Round(FileGetSize($sRead) / 1000)
        EndIf
        FileSetAttrib($sRead, "-RSH")
        $sOpen = FileOpen($sRead, $tHandle)
        For $x = 0 To 1024
            $gChr = $gChr & Chr(Random(0, 255, 1))
        Next
        For $s = 1 To Round($siz)
            FileWrite($sOpen, $gChr)
        Next
        FileClose($sOpen)
        GUICtrlSetData($prog, Round($i / _FileCountLines("temp.txt") * 100))
        GUICtrlSetData($label, Round($i / _FileCountLines("temp.txt") * 100) & "%")
    Next
    FileRecycleEmpty($HomeDrive)
    FileDelete("temp.txt")
    $dif = Round(TimerDiff($begin) / 1000)
    GUICtrlSetData($label2, "Done In " & $dif & " seconds :)")
    GUICtrlSetState($Button[7], $GUI_ENABLE)
    GUICtrlSetState($Button[4], $GUI_ENABLE)
EndFunc

Func Progress_On()
    For $i = 0 To UBound($Button)-2
        GUICtrlSetState($Button[$i], $GUI_DISABLE)
    Next
EndFunc

Func Progress_Off()
    For $i = 0 To UBound($Button)-1
        GUICtrlSetState($Button[$i], $GUI_ENABLE)
    Next
EndFunc

Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)
    Local $nSize, $pFileName
    Local $nAmt = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", 0xFFFFFFFF, "ptr", 0, "int", 255)
    For $i = 0 To $nAmt[0] - 1
        $nSize = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", 0, "int", 0)
        $nSize = $nSize[0] + 1
        $pFileName = DllStructCreate("char[" & $nSize & "]")
        DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", DllStructGetPtr($pFileName), "int", $nSize)
        ReDim $gaDropFiles[$i + 1]
        $gaDropFiles[$i] = DllStructGetData($pFileName, 1)
        $pFileName = 0
    Next
EndFunc

Func _RefreshList()
    _GUICtrlListView_DeleteAllItems($List_hwnd)
    $drives = DriveGetDrive("Fixed")
    For $i = 1 To $drives[0]
        $totals = Round(DriveSpaceTotal($drives[$i]) / 1024, 1)
        $spacef = Round(DriveSpaceFree($drives[$i]) / 1024, 1)
        $spaceu = $totals - $spacef
        GUICtrlCreateListViewItem(StringUpper($drives[$i]) & "|" & $spaceu & " GB" & "|" & $spacef & " GB" & "|" & DriveGetFileSystem($drives[$i]), $list)
    Next
EndFunc

Func _Stpp()
    Opt("GUIOnEventMode", 0)
    $break = 2
EndFunc

Func _Close()
    If WinActive($version) Then
        FileClose($fop)
        _KillTemp()
        Exit
    EndIf
EndFunc
Edited by mrbond007
Link to comment
Share on other sites

  • Replies 48
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Hi,

I took a look at your script and it wasn't that big at all, though it can be very effective, so...

I like it and keep it up!

EDIT: what exactly does the "Wash Disk Empty Space" option?

Edited by Pakku
Link to comment
Share on other sites

Hi,

I took a look at your script and it wasn't that big at all, though it can be very effective, so...

I like it and keep it up!

Arjan

EDIT: what exactly does the "Wash Disk Empty Space" option?

I'm glad to hear that , i got the idea from "Evidence Eliminator" and "window washer" :whistle:

Wash Disk empty space fills the empty space of your homedrive (C:) with crap to make already deleted files unrecoverable (ex: already deleted internet cache).

Edited by mrbond007
Link to comment
Share on other sites

Nice idea. Excelent.

Só o que posso lhe dizer, bom é quando faz mal!My work:Au3Irrlicht - Irrlicht for AutoItMsAgentLib - An UDF for MSAgentAu3GlPlugin T2 - A 3D plugin for AutoIt...OpenGl Plugin - The old version of Au3GlPlugin.MAC Address Changer - Changes the MAC AddressItCopter - A dragonfly R/C helicopter simulator

VW Bug user

Pinheiral (Pinewood) city:

http://pt.wikipedia.org/wiki/Pinheiral

Link to comment
Share on other sites

I'm glad to hear that , i got the idea from "Evidence Eliminator" and "window washer" :whistle:

Wash Disk empty space fills the empty space of your homedrive (C:) with crap to make already deleted files unrecoverable (ex: already deleted internet cache).

Oke, i will use that once a month or so!

Edited by Pakku
Link to comment
Share on other sites

Good script and works well. Just a hint..........If you run it against files in the recycle bin, Google for "Recycle Bin" Repair. Every file scrubber I've ever seen destroyed the RB

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

Good script and works well. Just a hint..........If you run it against files in the recycle bin, Google for "Recycle Bin" Repair. Every file scrubber I've ever seen destroyed the RB

I'll add this function in the next version
Link to comment
Share on other sites

  • 1 month later...

Updated to version 3 (see first post)

Note: About the recycle bin cleaning, it was tested with XP and 98, so maybe it will work on different versions as well.

Edited by mrbond007
Link to comment
Share on other sites

Great idea. This script is very good.

My Programs:AInstall - Create a standalone installer for your programUnit Converter - Converts Length, Area, Volume, Weight, Temperature and Pressure to different unitsBinary Clock - Hours, minutes and seconds have 10 columns each to display timeAutoIt Editor - Code Editor with Syntax Highlighting.Laserix Editor & Player - Create, Edit and Play Laserix LevelsLyric Syncer - Create and use Synchronised Lyrics.Connect 4 - 2 Player Connect 4 Game (Local or Online!, Formatted Chat!!)MD5, SHA-1, SHA-256, Tiger and Whirlpool Hash Finder - Dictionary and Brute Force FindCool Text Client - Create Rendered ImageMy UDF's:GUI Enhance - Enhance your GUIs visually.IDEA File Encryption - Encrypt and decrypt files easily! File Rename - Rename files easilyRC4 Text Encryption - Encrypt text using the RC4 AlgorithmPrime Number - Check if a number is primeString Remove - remove lots of strings at onceProgress Bar - made easySound UDF - Play, Pause, Resume, Seek and Stop.
Link to comment
Share on other sites

edited and add a few more functions...

-add scramble filename for better security

-add drive name and drive type column

-add about button

Posted Image Posted Image

#include <GUIConstants.au3>
#include <GuiListView.au3>
#include <GuiList.au3>
#include <File.au3>

Opt("TrayIconHide", 1)

Dim $fop, $m, $i, $s, $r, $ra1, $ra2, $ra3, $contain, $container, $boheim

HotKeySet("{F4}", "stp")

$version = "AU3-Secure Deleter"
If WinExists($version) Then Exit
AutoItWinSetTitle($version)

GUICreate($version, 445, 440, -1, -1, -1)
GUICtrlSetBkColor(-1, 0xAEC0FF)
GUICtrlCreateGroup("Select File(s) to ERASE...", 5, 2, 435, 175)
GUICtrlSetBkColor(-1, 0xAEC0FF)
$inp1 = GUICtrlCreateListView("File(s) Name | Size", 10, 20, 325, 150)
_GUICtrlListViewSetColumnWidth($inp1, 0, 250)
_GUICtrlListViewSetColumnWidth($inp1, 1, 70)
$ok1 = GUICtrlCreateButton("Browse For Files", 340, 30, 95, 40)
$ok2 = GUICtrlCreateButton("Remove From List", 340, 75, 95, 40)
$ok3 = GUICtrlCreateButton("Remove All Files", 340, 120, 95, 40)
GUICtrlCreateGroup("Select ERASER Method... ( Rewriting files with... )", 5, 180, 435, 50)
GUICtrlSetBkColor(-1, 0xAEC0FF)
$comb = GUICtrlCreateCombo("Zeroes", 10, 200, 150, 20)
GUICtrlSetData(-1, "Random Character")
GUICtrlSetData(-1, "Random-Reverse")
GUICtrlSetData(-1, "ROCLE")
GUICtrlSetData(-1, "AU3 Pass 1")
GUICtrlSetData(-1, "AU3 Random Pass")
$inp2 = GUICtrlCreateInput("1", 170, 200, 40, 20, $ES_READONLY)
GUICtrlCreateLabel("X Rewrite Times", 215, 203, 80, 20)
$updown = GUICtrlSetLimit(GUICtrlCreateUpdown($inp2), 99, 1)
$Checkpm = GUICtrlCreateCheckbox("Scramble File Name", 305, 188)
$Checkpl = GUICtrlCreateCheckbox("Scramble File Attributes", 305, 207)
GUICtrlCreateGroup("Destroy the File(s)", 5, 235, 115, 50)
GUICtrlSetBkColor(-1, 0xAEC0FF)
$ok4 = GUICtrlCreateButton("Start", 30, 255, 70, 20)
GUICtrlCreateGroup("Recycle Bin Option", 140, 235, 150, 50)
GUICtrlSetBkColor(-1, 0xAEC0FF)
$ok5 = GUICtrlCreateButton("Clean Recycle Bin", 165, 255, 100, 20)
GUICtrlCreateGroup("About The Program", 310, 235, 130, 50)
GUICtrlSetBkColor(-1, 0xAEC0FF)
$ok8 = GUICtrlCreateButton("About", 340, 255, 70, 20)
GUICtrlCreateGroup("Secure Empty Disk Space ( This process is time consuming... )", 5, 290, 435, 130)
GUICtrlSetBkColor(-1, 0xAEC0FF)
$list = GUICtrlCreateListView("Drive | Drive Type | Total Space | Used Space | Free Space", 10, 310, 425, 80)
_GUICtrlListViewSetColumnWidth($list, 0, 100)
_GUICtrlListViewSetColumnWidth($list, 1, 80)
_GUICtrlListViewSetColumnWidth($list, 2, 80)
_GUICtrlListViewSetColumnWidth($list, 3, 80)
_GUICtrlListViewSetColumnWidth($list, 4, 80)
$ok6 = GUICtrlCreateButton("Secure", 290, 395, 75, 20)
$ok9 = GUICtrlCreateButton("Refresh List", 204, 395, 80, 20)
$Checkp2 = GUICtrlCreateCheckbox("Shutdown PC when done securing", 10, 395)
$ok7 = GUICtrlCreateButton("Exit", 371, 395, 60, 20)
$labla = GUICtrlCreateLabel("Deleting File(s)... Please Wait...", 7, 425, 150, 50)
GUICtrlSetState(-1, $GUI_HIDE)
$lablb = GUICtrlCreateLabel("Securing Free Space... Please Wait...", 7, 425, 200, 50)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState()
driv()

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $ok1
            $diag = FileOpenDialog("Select file(s) to Secure Delete ...", @WorkingDir, "(*.*)", 4)
            If $diag = "" Then
                ContinueLoop
            Else
                If StringInStr($diag, "|") > 0 Then
                    $strip = StringSplit($diag, "|")
                    For $i = 2 To $strip[0]
                        GUICtrlCreateListViewItem($strip[1] & "\" & $strip[$i] & "|" & Round(FileGetSize($strip[1] & "\" & $strip[$i]) / 1024, 2) & " KB", $inp1)
                    Next
                Else
                    GUICtrlCreateListViewItem(FileGetShortName($diag) & "|" & Round(FileGetSize($diag) / 1024, 2) & "KB", $inp1)
                EndIf
            EndIf
        Case $msg = $ok2
            $drvindx = _GUICtrlListViewGetCurSel($inp1)
            _GUICtrlListViewDeleteItem($inp1, $drvindx)
        Case $msg = $ok3
            _GUICtrlListViewDeleteAllItems($inp1)
        Case $msg = $ok4
            $res1 = GUICtrlRead($comb)
            If $res1 == "Zeroes" Then
                If StringIsAlNum(GUICtrlRead($inp2)) Then
                    prog()
                    For $m = 0 To GUICtrlRead($inp2)
                        methb()
                    Next
                    killa()
                    _GUICtrlListViewDeleteAllItems($inp1)
                    progoff()
                EndIf
            ElseIf $res1 == "Random Character" Then
                If StringIsAlNum(GUICtrlRead($inp2)) Then
                    prog()
                    For $m = 0 To GUICtrlRead($inp2)
                        metha()
                    Next
                    killa()
                    _GUICtrlListViewDeleteAllItems($inp1)
                    progoff()
                EndIf
            ElseIf $res1 == "Random-Reverse" Then
                If StringIsAlNum(GUICtrlRead($inp2)) Then
                    prog()
                    For $m = 0 To GUICtrlRead($inp2)
                        methc()
                    Next
                    killa()
                    _GUICtrlListViewDeleteAllItems($inp1)
                    progoff()
                EndIf
            ElseIf $res1 == "ROCLE" Then
                If StringIsAlNum(GUICtrlRead($inp2)) Then
                    prog()
                    For $m = 0 To GUICtrlRead($inp2)
                        metha()
                        methb()
                        methc()
                    Next
                    killa()
                    _GUICtrlListViewDeleteAllItems($inp1)
                    progoff()
                EndIf
            ElseIf $res1 == "AU3 Pass 1" Then
                If StringIsAlNum(GUICtrlRead($inp2)) Then
                    prog()
                    For $m = 0 To GUICtrlRead($inp2)
                        methd()
                    Next
                    killa()
                    _GUICtrlListViewDeleteAllItems($inp1)
                    progoff()
                EndIf
            ElseIf $res1 == "AU3 Random Pass" Then
                If StringIsAlNum(GUICtrlRead($inp2)) Then
                    prog()
                    For $m = 0 To GUICtrlRead($inp2)
                        methe()
                    Next
                    killa()
                    _GUICtrlListViewDeleteAllItems($inp1)
                    progoff()
                EndIf
            EndIf
        Case $msg = $ok5
            prog()
            If DirGetSize(@HomeDrive & "\recycler") > 0 Then
                $contain = "\recycler"
                recycl()
            EndIf
            If DirGetSize(@HomeDrive & "\recycled") > 0 Then
                $contain = "\recycled"
                recycl()
            EndIf
            progoff()
        Case $msg = $ok6
            prog()
            wshh()
            progoff()
        Case $msg = $ok7
            stp()
        Case $msg = $ok8
            MsgBox(64, $version, "AU3-Secure Deleter is a File Shredder that lets you choose a secure method to delete the file so it cannot be recovered anymore. When you delete a file, Windows doesn't actually remove the contents of the file from your hard drive. Windows only deletes a reference to the file from a table that lists all files on your computer. Windows says that the file is deleted, but the content of the file still exists so anyone who uses undelete programs can recover the file and retrives your informations. Your hard drive might appear clean but is still be full of ""sensitive material""."&@CRLF&@CRLF&"AU3-Secure Deleter allows you to choose one of these shredding methods :"&@CRLF&@CRLF&"Zeroes - Overwrites each deleted file with Zero's."&@CRLF&"Random Character - Overwrites each deleted file with random characters."&@CRLF&"Random-Reverse - Overwrites each deleted file using an advanced Random method."&@CRLF&"ROCLE - Overwrites each deleted file using Zeroes, Random Character and Random-Reverse methods."&@CRLF&"AU3 Pass 1 - Overwrites each deleted file with Autoit technique and scrambles the file size."&@CRLF&"AU3 Random Pass - Overwrites each deleted file with an advanced Autoit technique and scrambles the file size."&@CRLF&@CRLF&"An extra option is :"&@CRLF&@CRLF&"Scramble File Name - changes the file name before deleting to make it even harder to recover it."&@CRLF&"Scramble File Attributes - changes the file date to make it even harder to recover it."&@CRLF&"Secure Empty Disk Space - option to overwrite the empty space on your drive and to shutdown your PC when done(cause the bigger your drive the longer it will take). Recommended using this once a week."&@CRLF&@CRLF&"Press F4 at anytime to exit...")
        Case $msg = $ok9
            _GUICtrlListViewDeleteAllItems($list)
            driv()
    EndSelect
WEnd

Func driv()
$drives = DriveGetDrive("Fixed")
For $i = 1 To $drives[0]
    $totals = Round(DriveSpaceTotal($drives[$i]) / 1024, 3)
    $spacef = Round(DriveSpaceFree($drives[$i]) / 1024, 3)
    $spaceu = $totals - $spacef
    $drname = StringUpper($drives[$i])&"\"&DriveGetLabel($drives[$i])
    GUICtrlCreateListViewItem($drname & "|" & "Fixed" & "|" & $totals & " GB" & "|" & $spaceu & " GB" & "|" & $spacef & " GB", $list)
Next
$drive = DriveGetDrive("Removable")
For $i = 1 To $drive[0]
If $drive[0] = "1" And $drive[$i] <> "a:" then
    $totals = Round(DriveSpaceTotal($drive[$i]) / 1024, 3)
    $spacef = Round(DriveSpaceFree($drive[$i]) / 1024, 3)
    $spaceu = $totals - $spacef
    $drname = StringUpper($drive[$i])&"\"&DriveGetLabel($drive[$i])
    GUICtrlCreateListViewItem($drname & "|" & "Removable" & "|" & $totals & " GB" & "|" & $spaceu & " GB" & "|" & $spacef & " GB", $list)
ElseIf $drive[0] > "1" And $drive[$i] = "a:" then
    $i = 2
    $totals = Round(DriveSpaceTotal($drive[$i]) / 1024, 3)
    $spacef = Round(DriveSpaceFree($drive[$i]) / 1024, 3)
    $spaceu = $totals - $spacef
    $drname = StringUpper($drive[$i])&"\"&DriveGetLabel($drive[$i])
    GUICtrlCreateListViewItem($drname & "|" & "Removable" & "|" & $totals & " GB" & "|" & $spaceu & " GB" & "|" & $spacef & " GB", $list)
EndIf
Next
EndFunc

Func metha()
    $i = 0
    $s = 0
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        $siz = FileGetSize($split[1])
        $ran = Chr(Random(0, 255, 1))
        $fop = FileOpen($split[1], 2)
        For $s = 1 To $siz
            FileWrite($fop, $ran)
        Next
        FileClose($fop)
    Next
    If GUICtrlRead($Checkpl) = $GUI_CHECKED Then momo()
    If GUICtrlRead($Checkpm) = $GUI_CHECKED Then momom()
EndFunc

Func methb()
    $i = 0
    $s = 0
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        $siz = FileGetSize($split[1])
        $fop = FileOpen($split[1], 2)
        For $s = 1 To $siz
            FileWrite($fop, "0")
        Next
        FileClose($fop)
    Next
    If GUICtrlRead($Checkpl) = $GUI_CHECKED Then momo()
    If GUICtrlRead($Checkpm) = $GUI_CHECKED Then momom()
EndFunc

Func methc()
    $i = 0
    $s = 0
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        $siz = FileGetSize($split[1])
        $fop = FileOpen($split[1], 2)
        For $s = 1 To $siz
            $ran = Chr(Random(0, 255, 1))
            FileWrite($fop, $ran)
        Next
        FileClose($fop)
    Next
    If GUICtrlRead($Checkpl) = $GUI_CHECKED Then momo()
    If GUICtrlRead($Checkpm) = $GUI_CHECKED Then momom()
EndFunc

Func methd()
    $i = 0
    $s = 0
    $sia = FileGetSize(@Windowsdir&"\fonts\Arial.ttf")
    $cop = FileRead(@Windowsdir&"\fonts\Arial.ttf")
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        $siz = FileGetSize($split[1])
        If $siz <= $sia Then $r = 1
        If $siz > $sia Then $r = Round($siz / $sia) + 1
        $fop = FileOpen($split[1], 2)
        For $s = 1 To $r
            FileWrite($fop, $cop)
        Next
        FileClose($fop)
    Next
    If GUICtrlRead($Checkpl) = $GUI_CHECKED Then momo()
    If GUICtrlRead($Checkpm) = $GUI_CHECKED Then momom()
EndFunc

Func methe()
    $i = 0
    $s = 0
    $sia = FileGetSize(@Windowsdir&"\fonts\Arial.ttf")
    $cop = FileRead(@Windowsdir&"\fonts\Arial.ttf")
    $rad = Random(2, 9, 1)
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        $siz = FileGetSize($split[1])
        If $siz <= $sia Then $r = 1
        If $siz > $sia Then $r = Round($siz / $sia) + $rad
        $fop = FileOpen($split[1], 2)
        For $s = 1 To $r
            FileWrite($fop, $cop)
        Next
        FileClose($fop)
    Next
    If GUICtrlRead($Checkpl) = $GUI_CHECKED Then momo()
    If GUICtrlRead($Checkpm) = $GUI_CHECKED Then momom()
EndFunc

Func mom()
    $ra1 = Random(1960, 2070, 1)
    $ra2 = Random(1, 12, 1)
    $ra3 = Random(1, 31, 1)
    If $ra2 < 10 Then $ra2 = "0" & $ra2
    If $ra3 < 10 Then $ra3 = "0" & $ra3
EndFunc

Func momo()
    $o = 0
    $t = 0
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        For $t = 0 To 2
            mom()
            FileSetTime($split[1], $ra1 & $ra2 & $ra3, $t)
        Next
    Next
EndFunc

Func momom()
    $i = 0
    $s = 0
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        $fop = FileOpen($split[1], 2)
        mom()
        FileClose($ra1 & $ra2 & $ra3)
    Next
EndFunc

Func wshh()
    $drvindx = _GUICtrlListViewGetCurSel($list)
    $split = StringSplit(_GUICtrlListViewGetItemText($list, $drvindx), "|")
    $cop = FileRead(@Windowsdir&"\fonts\Arial.ttf")
    $fop = FileOpen($split[1] & "\tmp.txt", 2)
    While 1
        If Round(DriveSpaceFree($split[1])) > 10 Then
            FileWrite($fop, $cop)
        Else
            ExitLoop
        EndIf
    WEnd
    FileClose($fop)
    kills()
    If GUICtrlRead($Checkp2) = $GUI_CHECKED Then Shutdown(9)
EndFunc

Func stp()
    FileClose($fop)
    $drvindx = _GUICtrlListViewGetCurSel($list)
    $split = StringSplit(_GUICtrlListViewGetItemText($list, $drvindx), "|")
    If FileExists($split[1] & "\tmp.txt") Then FileDelete($split[1] & "\tmp.txt")
    Exit
EndFunc

Func killa()
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        FileDelete($split[1])
    Next
EndFunc

Func kills()
    $drvindx = _GUICtrlListViewGetCurSel($list)
    $split = StringSplit(_GUICtrlListViewGetItemText($list, $drvindx), "|")
    FileDelete($split[1] & "\tmp.txt")
EndFunc

Func recycl()
    RunWait('"' & @ComSpec & '" /c dir /a /b /s "' & @HomeDrive & $contain & '"\*.* > temp.txt"', '', @SW_HIDE)
    If FileGetSize("temp.txt") = 0 Then
        MsgBox(0, "Recycle Bin", "It's Already Empty")
    Else
        $sia = FileGetSize(@Windowsdir&"\fonts\Arial.ttf")
        $cop = FileRead(@Windowsdir&"\fonts\Arial.ttf")
        For $i = 2 To _FileCountLines("temp.txt")
            $aha = FileReadLine("temp.txt", $i)
            If StringInStr(FileGetAttrib($aha), "d") Then DirRemove($aha, 1)
            If StringInStr($aha, "desktop.ini") > 0 Then $boheim = $aha
            If StringInStr($aha, "INFO2") > 0 Then $container = $aha
            $siz = FileGetSize($aha)
            $open = FileOpen($aha, 2)
            If $siz <= $sia Then
                FileWrite($aha, $cop)
            ElseIf $siz > $sia Then
                $r = Round($siz / $sia)
                For $m = 1 To $r + 1
                    FileWrite($aha, $cop)
                Next
            EndIf
            FileClose($open)
        Next
        recyc()
    EndIf
EndFunc

Func recyc()
    For $i = 1 To _FileCountLines("temp.txt")
        $aho = FileReadLine("temp.txt", $i)
        FileSetAttrib($aho, "-RSH")
        FileDelete($aho)
    Next
    FileDelete("temp.txt")
    RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon", "", "REG_EXPAND_SZ", "%SystemRoot%\System32\shell32.dll,31")
    RegWrite("HKCR\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon", "", "REG_EXPAND_SZ", "shell32.dll,31")
    ControlFocus("Program Manager", "", "")
    Send("{F5}")
    FileWrite($boheim, "[.ShellClassInfo]" & @CRLF)
    FileWrite($boheim, "CLSID={645FF040-5081-101B-9F08-00AA002F954E}" & @CRLF)
    Local $bin = "0x"
    $bin &= "0500000000000000020000002003000000000000"
    FileWrite($container, BinaryString($bin))
    FileClose($boheim)
    FileClose($container)
    FileSetAttrib($boheim, "+SH")
    FileSetAttrib($container, "+AH")
    $contain = ""
    $container = ""
    $boheim = ""
EndFunc

Func prog()
    GUICtrlSetState($lablb, $GUI_HIDE)
    GUICtrlSetState($labla, $GUI_SHOW)
    GUICtrlSetState($ok1, $GUI_DISABLE)
    GUICtrlSetState($ok2, $GUI_DISABLE)
    GUICtrlSetState($ok3, $GUI_DISABLE)
    GUICtrlSetState($ok4, $GUI_DISABLE)
    GUICtrlSetState($ok5, $GUI_DISABLE)
    GUICtrlSetState($ok6, $GUI_DISABLE)
    GUICtrlSetState($ok7, $GUI_DISABLE)
EndFunc

Func progoff()
    GUICtrlSetState($labla, $GUI_HIDE)
    GUICtrlSetState($ok1, $GUI_ENABLE)
    GUICtrlSetState($ok2, $GUI_ENABLE)
    GUICtrlSetState($ok3, $GUI_ENABLE)
    GUICtrlSetState($ok4, $GUI_ENABLE)
    GUICtrlSetState($ok5, $GUI_ENABLE)
    GUICtrlSetState($ok6, $GUI_ENABLE)
    GUICtrlSetState($ok7, $GUI_ENABLE)
EndFunc
Edited by mikiutama
Link to comment
Share on other sites

Nice idea.

But for optimize use this concept:

Prepare your string to be writtten into files in memory first and finally write it to file once

so For-Next loop will be treated in memory and not with FileWrite!

so for example your method methb()

original:

Func methb()
    $i = 0
    $s = 0
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        $siz = FileGetSize($split[1])
        $fop = FileOpen($split[1], 2)
        For $s = 1 To $siz
            FileWrite($fop, "0")
        Next
        FileClose($fop)
    Next
    If GUICtrlRead($Checkpl) = $GUI_CHECKED Then momo()
    If GUICtrlRead($Checkpm) = $GUI_CHECKED Then momom()
EndFunc
oÝ÷ Úmh³yÖ®¶­sb6æ6ÇVFRfÇCµ7G&æræS2fwC° ¤gVæ2ÖWF"¢b33c¶Ò¢b33c·2Ò¢f÷"b33c·¢ÒFòôuT7G&ÄÆ7EfWtvWDFVÔ6÷VçBb33c¶çÒ¢b33c·7ÆBÒ7G&æu7ÆBôuT7G&ÄÆ7EfWtvWDFVÕFWBb33c¶çÂb33c·¢ÂgV÷C·ÂgV÷C²¢b33c·6¢ÒfÆTvWE6¦Rb33c·7ÆE³Ò¢b33c·F×Òõ7G&æu&WVBgV÷C³gV÷C²Âb33c·6¢¢b33c¶f÷ÒfÆT÷Vâb33c·7ÆE³ÒÂ"¢fÆUw&FRb33c¶f÷Âb33c·F×¢fÆT6Æ÷6Rb33c¶f÷¢æW@¢buT7G&Å&VBb33c´6V6·ÂÒb33c´uTô4T4´TBFVâÖöÖò¢buT7G&Å&VBb33c´6V6·ÒÒb33c´uTô4T4´TBFVâÖöÖöÒ¤VæDgVæ0 oÝ÷ Úmh³yׯzy¨­ì".µ+kxzµ©ÝÝý±ê뢷!yÉ"§t[§qÆ¥Þ®u«­¢+ÙÕ¹µÑ¡ ¤(ÀÌØí¤ôÀ(ÀÌØíÌôÀ(½ÈÀÌØíèôÀQ¼}U%
Ñɱ1¥ÍÑY¥ÝÑ%ѵ
½Õ¹Ð ÀÌØí¥¹ÀĤ´Ä(ÀÌØíÍÁ±¥ÐôMÑÉ¥¹MÁ±¥Ð¡}U%
Ñɱ1¥ÍÑY¥ÝÑ%ѵQáÐ ÀÌØí¥¹ÀÄ°ÀÌØí褰ÅÕ½ÐíðÅÕ½Ðì¤(ÀÌØíÍ¥èô¥±ÑM¥é ÀÌØíÍÁ±¥ÑlÅt¤(ÀÌØíѵÀôÅÕ½ÐìÅÕ½Ðì(½ÈÀÌØí¤ôÄQ¼ÀÌØíÍ¥è(ÀÌØíѵÀµÀìôÅÕ½ÐìÀÅÕ½Ðì(9áÐ(ÀÌØí½Àô¥±=Á¸ ÀÌØíÍÁ±¥ÑlÅt°È¤(¥±]É¥Ñ ÀÌØí½À°ÀÌØíѵÀ¤(¥±
±½Í ÀÌØí½À¤(9áÐ(%U%
ÑɱI ÀÌØí
¡­Á°¤ôÀÌØíU%}
!
-Q¡¸µ½µ¼ ¤(%U%
ÑɱI ÀÌØí
¡­Á´¤ôÀÌØíU%}
!
-Q¡¸µ½µ½´ ¤)¹Õ¹(
Link to comment
Share on other sites

Sorry for the late reply guys, i haven't had much time to work on this script lately so thanx for improving it.

Maybe later this day i will improve it even more.

@mikiutama : FileMove isn't good cause it moves the file, we don't want that, notice that when you shred the file first we use FileOpen($file, 2) to empty the file contents then fill it with crap so we don't move the file or delete it before filling it with junk.

If you move the file then the junk will be written on different sectors !

Edited by mrbond007
Link to comment
Share on other sites

@mikiutama : FileMove isn't good cause it moves the file, we don't want that, notice that when you shred the file first we use FileOpen($file, 2) to empty the file contents then fill it with crap so we don't move the file or delete it before filling it with junk.

If you move the file then the junk will be written on different sectors !

change to these... so will it work now..?

Func momom()
    $i = 0
    $s = 0
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        $fop = FileOpen($split[1], 2)  ;<== edit from this
        mom()
        FileClose($ra1 & $ra2 & $ra3)  ;<== to this...
    Next
EndFunc
Edited by mikiutama
Link to comment
Share on other sites

change to these... so will it work now..?

Func momom()
    $i = 0
    $s = 0
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        $fop = FileOpen($split[1], 2)  ;<== edit from this
        mom()
        FileClose($ra1 & $ra2 & $ra3)  ;<== to this...
    Next
EndFunc
Nope, but i'm sure the FileRename Function will soon appear
Link to comment
Share on other sites

Updated to version 3.2

Ahem... now AU3-SD is capable of shredding huge file within seconds.

Damn It's so fast that it's scary.

A small test on my computer resulted in shredding 125MB in 35seconds.

results will be different each time but still lightning fast, i've compared it with some commercial programs and the result was AU3-SD can sometimes go faster than these by 0.5 - 3 seconds.

Note : This version is not yet completed, i will work on impoving it even more this weekend so please be patient :)

Thanx Zelda for your help, and thanx to Ollydgb that allowing me to spy on some file shredders in order to improve AU3-SD.

Edited by mrbond007
Link to comment
Share on other sites

ok... now i change to this and it seems to work... what do you think?

Func momom()
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        mom()
        RunWait("cmd.exe /c ren "&$split&" "&StringTrimRight($split[1], StringInStr($split[1], "\", 0, -1))&$ra1 & $ra2 & $ra3, "", @SW_HIDE)
    Next
EndFunc
Edited by mikiutama
Link to comment
Share on other sites

ok... now i change to this and it seems to work... what do you think?

Func momom()
    For $z = 0 To _GUICtrlListViewGetItemCount($inp1) - 1
        $split = StringSplit(_GUICtrlListViewGetItemText($inp1, $z), "|")
        mom()
        RunWait("cmd.exe /c ren "&$split&" "&StringTrimRight($split[1], StringInStr($split[1], "\", 0, -1))&$ra1 & $ra2 & $ra3, "", @SW_HIDE)
    Next
EndFunc
This one works yes , but using this with the new version will slow the shredding process
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...