# zip_null_patch
A module to enable null characters in `zipfile` path names.
## Motivation
In Python, the built-in `zipfile` module purposefully rejects paths containing null-byte characters.
The reasoning is to prevent unintended behaviour from viruses which abuse null-byte paths in archives.
```python
## CPython 3.6 -- zipfile.py
# Terminate the file name at the first null byte. Null bytes in file
# names are used as tricks by viruses in archives.
null_byte = filename.find(chr(0))
if null_byte >= 0:
filename = filename[0:null_byte]
```
However, if trying to *purposefully read* a zip created by a malicious program, Python provides no exit-hatch to forcefully
enable the parsing of paths containing null-bytes. This means that proper analysis of any null-byte-containing archive is impossible.
Enter: `zip_null_patch`. Simply call `zip_null_patch.patch_zipfile()` and the built-in `zipfile` module will now accept null-bytes!
## Usage
```python3
>>> import zipfile
>>> info = zipfile.ZipInfo(filename="abc\x00def")
>>> info.filename
'abc'
>>> import zip_null_patch
>>> zip_null_patch.patch_zipfile()
>>> info = zipfile.ZipInfo(filename="abc\x00def")
>>> info.filename
'abc\x00def'
```