Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
File Shredder
#1
How can I remove files without fear they could be recovered using QM?
#2
QM files? Delete the file, and delete its backup files in Backup folder. While deleting, the file must not be open in QM, or it may save and make backup again.
#3
No, any file.

http://www.codeproject.com/KB/files/NShred.aspx
#4
At first it looks simple. Open the file and WriteFile it with zeros. But I don't know...
#5
How can I use Eraser.dll with QM?



http://downloads.sourceforge.net/projec ... ror=freefr
http://eraser.heidi.ie/
#6
Find declarations somewhere. Best if in C++ language.
#7
I found this: http://ccrdude.net/files/snlAPIEraser.pas
#8
Cannot convert this. Need in C++. I have C++ to QM converter.
#9
http://eraser.heidi.ie/trac/browser/tag ... raserDll.h

http://eraser.heidi.ie/trac/browser/tag ... /EraserDll
#10
Found declarations in EraserDll.h. This is raw output of my C++ to QM converter. Not everything useful.

Replace ??? to the dll filename.

Open the dll in dependency walker. The functions are exported decorated. Will need to replace function names like Function to [_Function@12]Function.

Macro Macro1198
Code:
Copy      Help
def ERASER_API
def ERASER_DATA_DRIVES 0
def ERASER_DATA_FILES 1
type ERASER_DATA_TYPE = #
def ERASER_ERROR 0xFFFFFFFF
def ERASER_ERROR_CONTEXT 0xFFFFFFF5
def ERASER_ERROR_DENIED 0xFFFFFFF1
def ERASER_ERROR_EXCEPTION 0xFFFFFFF6
def ERASER_ERROR_INIT 0xFFFFFFF4
def ERASER_ERROR_MEMORY 0xFFFFFFF8
def ERASER_ERROR_NOTIMPLEMENTED 0xFFFFFFE0
def ERASER_ERROR_NOTRUNNING 0xFFFFFFF2
def ERASER_ERROR_PARAM1 0xFFFFFFFE
def ERASER_ERROR_PARAM2 0xFFFFFFFD
def ERASER_ERROR_PARAM3 0xFFFFFFFC
def ERASER_ERROR_PARAM4 0xFFFFFFFB
def ERASER_ERROR_PARAM5 0xFFFFFFFA
def ERASER_ERROR_PARAM6 0xFFFFFFF9
def ERASER_ERROR_RUNNING 0xFFFFFFF3
def ERASER_ERROR_THREAD 0xFFFFFFF7
type ERASER_EXPORT = #
type ERASER_HANDLE = #
def ERASER_INVALID_CONTEXT 0xFFFFFFFF
type ERASER_METHOD = #
def ERASER_METHOD_DOD 2
def ERASER_METHOD_DOD_E 3
def ERASER_METHOD_FIRST_LAST_2KB 5
def ERASER_METHOD_GUTMANN 1
def ERASER_METHOD_LIBRARY 0
def ERASER_METHOD_PSEUDORANDOM 4
def ERASER_METHOD_SCHNEIER 6
def ERASER_OK 0
type ERASER_OPTIONS_PAGE = #
def ERASER_PAGE_DRIVE 0
def ERASER_PAGE_FILES 1
def ERASER_RANDOM_SLOW_POLL _T("EraserSlowPollEnabled")
def ERASER_REGISTRY_AUTHOR _T("Software\Heidi Computers Ltd")
def ERASER_REGISTRY_BASE _T("Software\Heidi Computers Ltd\Eraser\5.8")
def ERASER_REGISTRY_LIBRARY _T("Library")
def ERASER_REGISTRY_PROGRAM _T("Software\Heidi Computers Ltd\Eraser")
def ERASER_REGISTRY_RESULTS_FILES _T("ResultsForFiles")
def ERASER_REGISTRY_RESULTS_UNUSEDSPACE _T("ResultsForUnusedSpace")
def ERASER_REGISTRY_RESULTS_WHENFAILED _T("ResultsOnlyWhenFailed")
def ERASER_REMOVE_FOLDERONLY 0
def ERASER_REMOVE_RECURSIVELY 1
type ERASER_RESULT = #
def ERASER_TEST_PAUSED 3
def ERASER_URL_EMAIL _T("mailto:support@heidi.ie")
def ERASER_URL_HOMEPAGE _T("http://www.heidi.ie/eraser/")
def ERASER_WIPE_BEGIN 0
def ERASER_WIPE_DONE 2
def ERASER_WIPE_UPDATE 1
def ERASEXT_REGISTRY_ENABLED _T("ErasextEnabled")
def ERASEXT_REGISTRY_RESULTS _T("ResultsErasext")
def E_IN
def E_INOUT
type E_INT16 = @
type E_INT32 = #
type E_INT64 = %
type E_INT8 = !
def E_OUT
type E_PINT16 = @*
type E_PINT32 = #*
type E_PINT64 = %*
type E_PINT8 = !*
type E_PUINT16 = @*
type E_PUINT32 = #*
type E_PUINT64 = %*
type E_PUINT8 = !*
type E_UINT16 = @
type E_UINT32 = #
type E_UINT64 = %
type E_UINT8 = !
type EraserErrorHandler = #
;;;function# $a b !*c !*d
dll C_macro ISNT_SUBFOLDER lpsz
;;;((lpsz)[0]==_T('.')&&((lpsz)[1]==_T('\0')||((lpsz)[1]==_T('.')&&(lpsz)[2]==_T('\0'))))
dll C_macro IS_SUBFOLDER lpsz
;;;(!((lpsz)[0]==_T('.')&&((lpsz)[1]==_T('\0')||((lpsz)[1]==_T('.')&&(lpsz)[2]==_T('\0')))))
def NODEFAULT __assume(0)
def WM_ERASERNOTIFY 0x0000040A
def _GUID_ERASER "Eraser.{D5BBB6C1-64F1-11d1-A87C-444553540000}"
dll C_macro bitSet x mask
;;;(((x)&(mask))!=0)
dll ??? !convEraseMethod mIn
def diskClusterTips 0x00000040
def diskDirEntries 0x00000080
def diskFreeSpace 0x00000020
dll ??? #eraserAddItem a !*b @c
dll ??? #eraserClearItems a
dll ??? #eraserCompleted a !*b
dll ??? #eraserCreateContext *a
dll ??? #eraserCreateContextEx *a !b @c !d
dll ??? #eraserDestroyContext a
dll ??? #eraserDispFlags a !*b
def eraserDispInit 0x00000040
def eraserDispItem 0x00000020
def eraserDispMessage 0x00000004
def eraserDispPass 0x00000001
def eraserDispProgress 0x00000008
def eraserDispReserved 0x00000080
def eraserDispStop 0x00000010
def eraserDispTime 0x00000002
dll ??? #eraserEnd
dll C_macro eraserError x
;;;(!((x)>=0))
dll ??? #eraserErrorString a @b !*c @*d
dll ??? #eraserErrorStringCount a @*b
dll ??? #eraserFailed a !*b
dll ??? #eraserFailedCount a *b
dll ??? #eraserFailedString a b !*c @*d
dll ??? #eraserGetClusterSize !*a @b *c
dll ??? #eraserGetDataType a *b
dll ??? #eraserGetFreeDiskSpace !*a @b %*c
dll ??? #eraserGetWindow a *b
dll ??? #eraserGetWindowMessage a *b
dll ??? #eraserInit
dll ??? #eraserIsRunning a !*b
dll ??? #eraserIsValidContext a
dll C_macro eraserIsValidDataType x
;;;(((x)>=0)&&((x)<=1))
dll C_macro eraserIsValidMethod x
;;;(((x)>=0)&&((x)<=6))
dll C_macro eraserOK x
;;;((x)>=0)
dll ??? #eraserProgGetCurrentDataString a !*b @*c
dll ??? #eraserProgGetCurrentPass a @*b
dll ??? #eraserProgGetMessage a !*b @*c
dll ??? #eraserProgGetPasses a @*b
dll ??? #eraserProgGetPercent a !*b
dll ??? #eraserProgGetTimeLeft a *b
dll ??? #eraserProgGetTotalPercent a !*b
dll ??? #eraserRemoveFile !*a @b
dll ??? #eraserRemoveFolder !*a @b !c
dll ??? #eraserSetDataType a b
dll ??? #eraserSetErrorHandler a pfn !*fnParam
;;;pfn: function# $a b !*c !*d
dll ??? #eraserSetFinishAction param1 action
dll ??? #eraserSetWindow a b
dll ??? #eraserSetWindowMessage a b
dll ??? #eraserShowOptions a b
dll ??? #eraserShowReport a b
dll ??? #eraserStart a
dll ??? #eraserStartSync a
dll ??? #eraserStatGetArea a %*b
dll ??? #eraserStatGetTime a *b
dll ??? #eraserStatGetTips a %*b
dll ??? #eraserStatGetWiped a %*b
dll ??? #eraserStop a
dll ??? #eraserTerminated a !*b
dll ??? #eraserTestContinueProcess a
dll ??? #eraserTestEnable a
def fileAlternateStreams 0x00000004
def fileClusterTips 0x00000001
def fileNames 0x00000002
dll C_macro setBit x mask
;;;(x)|=(mask)
dll C_macro unsetBit x mask
;;;(x)&=~(mask)
#11
Thanks.

Can you show me an example to delete a directory?
#12
No, need much learning.
#13
Maybe it is easier http://www.codeuu.com/wiki/Wipe_out_a_fi...o_recover.
#14
or http://technet.microsoft.com/en-us/sysi ... 97443.aspx
#15
run "sdelete" "commanline"
#16
Function Shredder
Code:
Copy      Help
function ~ficheroodirectorio
ficheroodirectorio.dospath
str t1.expandpath("$QM$")
str comando.format("/c ''%s\sdelete.exe'' -p 3 -s %s" t1 ficheroodirectorio)
run "%COMSPEC%" comando "" "" 0x400|16
#17
Tip: if sdelete supports it, use file path enclosed in double quotes instead of dospath. Some computers are set to not generate DOS paths.


Forum Jump:


Users browsing this thread: 1 Guest(s)