XML AND JSON MASKING
For detailed information please visit = https://sonra.io/2019/04/01/paranoid-masking-anonymizing-and-obfuscating-pii-in-xml-and-json-data/
About
Paranoid is data masking and obfuscation command line tool for XML and JSON file formats. Paranoid is best used in combination with Flexter. Flexter is Sonra's XML converter for complex XML and JSON based on industry data standards such as ACORD, HL7, FHIR, NDC, XBRL, FpML etc. It converts XML to any relational database, Hadoop formats (ORC, Parquet, Avro, Hive, Impala), or text (TSV, CSV).
Features
- Works with one or more XML/JSON document(s). If input path points to a directory - processes its content recursively. Auto detects the format of each file.
- Masks all the elements/attributes in the XML/JSON document(s) by default while preserving the exact structure of the file(s).
- Can also mask only specific elements (by provided path/XPath) in XML/JSON document(s).
- Universal: runs on both: Python 2.6+ or 3.6+
- Offline tool - runs locally on your system. No data gets transferred anywhere.
- Open source - anyone can examine what it does to make sure the data can't be successfully de-encoded back after leaving The Sausage Machine. Any contributions are welcome!
- Easy installation - can download script itself or use
pip
Advanced Features
- Custom built Parser - simple parser that does only what needs to be done. Removes the overhead of using external libs. It's fast. It doesn't validate documents so can work with some rough edged ones …to some extent.
- Smart Buffering - easy on memory (redefinable buffer to use, 512MB default) but at the same time works with huge files (eg. 10GB). Works with them even if all the content is lumped into a single line 💪‼
- Masking Statistics - Provides stats for number of xml tags and number of tags masked in during the operation which one can store in a log file too.
Architecture
Installation
pip install PARANOID
Instructions
usage: paranoid [-h] -i INPUT [-b BYTESIZE] -o OUTPUTDIR [-l MASK] [-L LOG] [-v]
optional arguments:
-h, --helpshow this help message and exit-i INPUTInput Directory Name / File Name-b BYTESIZEProvide byte size to buffer-o OUTPUTDIROutput Directory Name-l MASKInput xpath or xpaths separated by ,-L LOGOutput in Log File-v, --versionshow program's version number and exit
paranoid -h
Usage Examples
Mask Single File
paranoid -i <input filename> -o <output directory name>
Mask all XML and JSON files in a Directory
paranoid -i <directory name> -o <output directory name>
Change Buffer size
paranoid -i <File or directory name> -o <output directory name> -b buffersize
That's the way to ingest big fat one liners as it analyses your file by streamig it byte by byte, buffer by buffer.
Mask Certain Tags
paranoid -i <input filename> -o <output directory name> -l xpath separated by ,
Mask Certain Attributes
paranoid -i <input filename> -o <output directory name> -l xpath separated by ,
Example request:
python paranoid.py -i ~/tests/in/case.xml -o ~/tests/in/anonymized -b 2000 -l /Case/Id/@HubNo,/Case/ProductSet/Product/@ProductionUnit
This argument also accepts relative xpaths to mask nodes located at any depth of the xml tree:
python paranoid.py -i ~/tests/in/case.xml -o ~/tests/in/anonymized -b 2000 -l /Case/Id/@HubNo,//Product/@ProductionUnit
Generate Log File
paranoid -i <input filename> -o <output directory name> -L Log File Location
Release files for PARANOID 1.2.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| PARANOID-1.2.9.tar.gz | 15.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| PARANOID-1.2.9-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 32.4 kB
Release files / PARANOID-1.2.9.tar.gz
| Download URL | PARANOID-1.2.9.tar.gz |
|---|---|
| Size | 15.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e890fbb1bc91c28781d3e690cf4f105748fe3645c75da70d503e8f8f919721d9
|
|
BLAKE2b-256 checksum How to use checksums |
df97168c78858c20fc2d09f92712b6f662b860dfdf54661d3650640cbde33c04
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.22.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/18.0.1 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.10
|
Release files / PARANOID-1.2.9-py2.py3-none-any.whl
| Download URL | PARANOID-1.2.9-py2.py3-none-any.whl |
|---|---|
| Size | 16.8 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
b97e39182a5f16bea71a9835e44861749b9c7fe938a82e5b2be1ca2753ca4c7f
|
|
BLAKE2b-256 checksum How to use checksums |
bbe71e79a6a1f0b0b7a27f344acb49afe11e5de04ca7388e90a06e7ce2a1bd75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.22.0 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/18.0.1 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.10
|