obfuscator.file¶
This module contains a file-level interface for the XOR obfuscation methods.
- class obfuscator.file.ObfuscatedFile(filename)¶
Parameters: filename (str) – The path of the file you want to read/write. This class represents an obfuscated data file. You can use this to store some-what sensitive information inside a file. The documentation for some of the functions is purposely light.
Example #1 - Storing a string:
>>> from obfuscator.file import ObfuscatedFile >>> of = ObfuscatedFile('data.bin') >>> bytes = map(ord, "my string") >>> of.write(bytes) # data.bin is 32 bytes long 86 # The random key used for encoding; stored in the file >>> read_bytes = of.read() >>> read_bytes [109L, 121L, 32L, 115L, 116L, 114L, 105L, 110L, 103L] >>> ''.join(map(chr, read_bytes)) 'my string'
Example #2 - Storing a string with known key:
>>> from obfuscator.file import ObfuscatedFile >>> of = ObfuscatedFile('data.bin') >>> bytes = map(ord, "my string") >>> my_key = 0xCF >>> of.write(bytes, my_key) # data.bin is 32 bytes long 207 >>> read_bytes = of.read() # Notice how we didn't use a key >>> ''.join(map(chr, read_bytes)) ',8a253(/&' >>> # The string is wrong because the key is not stored in the file >>> read_bytes = of.read(key=my_key) >>> ''.join(map(chr, read_bytes)) 'my string' >>>
- read(key=None)¶
This function reads a file written by write, and returns the deobfuscated data.
Parameters: key (int) – The key used during write(). NOTE: If you passed in a key during write(), you must use the same key here; the key will not be stored in the file. If you let the algorithm choose the key, it is stored in the file, and will be used during read().
- write(data, key=None, minimum_length=32)¶
Write the data to a file.
Parameters: - data (iterable) – The data you want to encode; the length of data must be less than 0xFF (header size limitation)
- key (int) – The key used during encoding
- minimum_length (int) – The minimum number of bytes to write. If the encoding operation produces fewer bytes that this, random bytes are appended to the end of the result so len(bytes) == minimum_length.