securely overwrite files with Python

Bart Nessux bart_nessux at hotmail.com
Sat Mar 6 03:31:43 CET 2004


Skip Montanaro wrote:

> 
>     Bart> Is there a shred module in Python? You know, the kind that
>     Bart> overwrites files that one doesn't want others to see?
> 
> I've never used shred before, but here's an essentially untested stab at
> the problem:
> 
>     #!/usr/bin/env python
> 
>     import os
>     import random
>     import sys
>     import md5
> 
>     def shred(f, npasses=5):
>         sz = os.path.getsize(f)
>         for n in range(npasses):
>             dig = md5.new(file(f).read()).hexdigest()
>             print >> sys.stderr, "pass:", n+1,
>             print >> sys.stderr, "digest:", dig
>             chars = [chr(i) for i in range(128)]
>             random.shuffle(chars)
>             chars = "".join(chars)
>             bytesleft = sz
>             fp = file(f, "wb")
>             while bytesleft:
>                 nbytes = min(bytesleft, 128)
>                 fp.write(chars[:nbytes])
>                 bytesleft -= nbytes
>             fp.close()
>         dig = md5.new(file(f).read()).hexdigest()
>         print >> sys.stderr, "last digest:", dig
>         os.unlink(f)
> 
>     if __name__ == "__main__":
>         tmpf = "dummyf"
>         file(tmpf, "wb").write(file("/etc/hosts").read()*5)
>         shred(tmpf)
> 
> Note that it does no error checking, nor does it have any force write arg.
> 
> Skip

Thanks Skip! I'll give this a go.



More information about the Python-list mailing list