Skip to main content

A toolkit for content injection, obfuscation, scanning, and sanitization of various document formats.

Project description

PhantomText Toolkit

PhantomText is a Python library designed for handling content injection, content obfuscation, file scanning, and file sanitization across various document formats. This toolkit provides a comprehensive set of tools to manage and secure document content effectively.

Features

  • Content Injection: Easily inject content into different document formats using various steganographic techniques like zero-size text, transparent text, and out-of-bound positioning.
  • Content Obfuscation: Protect sensitive information with advanced obfuscation techniques including zero-width characters, homoglyphs, diacritical marks, and bidirectional text reordering.
  • File Scanning: Scan files for malicious content or vulnerabilities using the FileScanner class that detects obfuscated and injected content.
  • File Sanitization: Sanitize files to remove harmful content with the FileSanitizer class.

Attack Families

Obfuscation Attacks

  • Zero-Width Characters: Uses invisible Unicode characters (Zero Width Space, Zero Width Non-Joiner, etc.) to obfuscate text
  • Homoglyph Characters: Replaces characters with visually similar Unicode characters from different scripts
  • Diacritical Marks: Adds combining diacritical marks to characters to alter their appearance
  • Bidi/Reordering: Uses Unicode bidirectional override characters to manipulate text direction and rendering

Injection Attacks

  • Zero-Size Injection: Injects content using zero or near-zero font sizes to make text invisible
  • Transparent Injection: Injects content using transparent colors or opacity settings
  • Camouflage Injection: (In development) Hides content by matching background colors or patterns
  • Out-of-Bound Injection: (In development) Places content outside visible document boundaries
  • Metadata Injection: (In development) Embeds content in document metadata

Supported Formats

PhantomText supports the following document formats:

  • PDF
  • DOCX
  • HTML

Installation

To install PhantomText, you can use pip:

pip install phantomtext

Usage

Content Injection Example

from phantomtext.content_injection import ContentInjector

injector = ContentInjector()
injector.inject_content('document.pdf', 'New Content')

Content Obfuscation Example

from phantomtext.content_obfuscation import ContentObfuscator

obfuscator = ContentObfuscator()

# Basic obfuscation
obfuscated_content = obfuscator.obfuscate_content('Sensitive Information')

# Advanced obfuscation with specific techniques
content = "Sensitive info: email@example.com and phone 123-456-7890."
target = "email@example.com"

# Zero-width character obfuscation
obfuscated = obfuscator.obfuscate(content, target, 
                                  obfuscation_technique="zeroWidthCharacter", 
                                  modality="default", 
                                  file_format="html")

# Homoglyph character obfuscation
obfuscated = obfuscator.obfuscate(content, target, 
                                  obfuscation_technique="homoglyph", 
                                  file_format="pdf")

# Diacritical marks obfuscation
obfuscated = obfuscator.obfuscate(content, target, 
                                  obfuscation_technique="diacritical", 
                                  modality="heavy", 
                                  file_format="docx")

# Bidi/reordering character obfuscation
obfuscated = obfuscator.obfuscate(content, target, 
                                  obfuscation_technique="bidi", 
                                  modality="default", 
                                  file_format="html")

Content Injection Example

from phantomtext.injection.zerosize_injection import ZeroSizeInjection
from phantomtext.injection.transparent_injection import TransparentInjection

# Zero-size injection
injector = ZeroSizeInjection(modality="default", file_format="pdf")
injector.apply(input_document="document.pdf", 
               injection="Hidden content", 
               output_path="injected_document.pdf")

# Transparent injection
injector = TransparentInjection(modality="opacity-0", file_format="html")
injector.apply(input_document="document.html", 
               injection="Invisible text", 
               output_path="injected_document.html")

Supported Attacks

Obfuscation Attacks
Attack Family Attack Name Variant HTML DOCX PDF
Obfuscation diacritical_marks default
heavy
Obfuscation homoglyph_characters default
Obfuscation zero_width_characters default
heavy
Obfuscation bidi_reordering default
heavy
Injection Attacks
Attack Family Attack Name Variant HTML DOCX PDF
Injection zero_size default
close-to-zero
Injection transparent default
opacity-0
opacity-close-to-zero
vanish
Injection camouflage default 🚧 🚧 🚧
Injection out_of_bound default 🚧 🚧 🚧
Injection metadata default 🚧 🚧 🚧

Legend:

  • ✅ Implemented and working
  • ❌ Not supported for this format
  • 🚧 Placeholder implementation (not yet functional)

File Scanning Example

from phantomtext.file_scanning import FileScanner

scanner = FileScanner()

# Scan a single file
result = scanner.scan_file('document.docx')
print(f"Malicious content found: {result['malicious_content_found']}")
print(f"Vulnerabilities: {result['vulnerabilities']}")

# Scan an entire directory
reports = scanner.scan_dir('./output')
for report in reports:
    if report['malicious_content_found']:
        print(f"⚠️ Issues found in {report['file_path']}")
        for vulnerability in report['vulnerabilities']:
            print(f"  - {vulnerability}")

Detection Capabilities

The FileScanner can detect the following obfuscation techniques:

  • Zero-width character sequences
  • Homoglyph character substitutions
  • Diacritical mark insertions
  • Bidirectional text overrides

File Sanitization Example

from phantomtext.file_sanitization import FileSanitizer

sanitizer = FileSanitizer()
sanitizer.sanitize_file('malicious_file.txt')

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue for any enhancements or bug fixes.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

phantomtext-0.1.0.tar.gz (2.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

phantomtext-0.1.0-py3-none-any.whl (412.5 kB view details)

Uploaded Python 3

File details

Details for the file phantomtext-0.1.0.tar.gz.

File metadata

  • Download URL: phantomtext-0.1.0.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.7

File hashes

Hashes for phantomtext-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3c2e517b7a7353ee2631c98e487c0a57761e4568bb2c093ee44c6eecb48932c3
MD5 fcc794fe0d3dc504e005adbbe9366e58
BLAKE2b-256 cb7805c48537ba4dc059adff510c4f541c8ebb266a1d4cb84634b4edf5904c12

See more details on using hashes here.

File details

Details for the file phantomtext-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: phantomtext-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 412.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.7

File hashes

Hashes for phantomtext-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc95a9cbf3ade7c955264b1ba8c2f95eec6ee20ac63531fa96eaf6ece2d53f08
MD5 f964ab8abcb02f4e4ebaef4bf8f6c940
BLAKE2b-256 cbbfecb484a66d0d6f25d98d65a7c5ceca2a05d1501aedc6213222aadfb063c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page