Anti-censuurspiegel en beveiligingshulpmiddel

📡 De Taylor Wessing Datalek Toolkit

Universele forensische audit- en laagontledingsuite om visueel toegepaste PDF-redacties van Taylor Wessing LLP en Valve Corporation bloot te leggen en te onthullen.

Weerstand tegen censuur

Deze toolkit en de bijbehorende casestudies worden hier permanent gemirraald. Elke juridische dreiging, DMCA-verwijderingsverzoek of poging tot intimidering door Taylor Wessing LLP of Valve Corporation zal worden beschouwd als openbaar, onontkoombaar bewijs van pogingen om beveiligingsonderzoek te censureren en technische onbekwaamheid te verbergen.

Forensic PDF analysis
Forensisch PDF-audit: Het opnieuw creëren en analyseren van documentlaagstructuren om neppe zwartdoos-vectoroverlays te verwijderen en onbewerkte, niet-geschrubde tekst te extraheren.

🔍 Management Summary

De Universele PDF-Redactie-auditor en Laagontleed is een professionele, offline-first forensische audit- en laagdecompositie-suite die specifiek is ontwikkeld om visuele PDF-redactiekwetsbaarheden te identificeren, te verifiëren en te saneren. Deze toolkit fungeert als een open-source hulpmiddel voor beveiligingsonderzoekers, gegevensbeschermingsfunctionarissen en compliance-auditors om de structurele integriteit van documenten te verifiëren vóór openbare bekendmaking.

⚖️ Technische machtsasymmetrie

Dit auditinstrument is ontwikkeld om een cruciale machtsongelijkheid in de verwerking van bedrijfsdata aan te pakken. Wanneer grote conglomeraten (zoals Valve Corporation) worden vertegenwoordigd door toonaangevende advocatenkantoren (zoals Taylor Wessing LLP), een systematische datalek doet geen afbreuk aan de corporatie of hun dure advocaten — het ondermijnt wel catastrofale de privacy van hun tegenstanders (de de individuele gegevensdragers, derden en minderjarigen wier gevoelige persoonsgegevens zijn gelekt als gevolg van wettelijke en technische nalatigheid). Deze toolkit stelt individuen en onafhankelijke auditors in staat de gegevensbeveiliging te verifiëren en corporate actoren aansprakelijk te stellen.

📊 Casestudy: De GDPR-lek van Taylor Wessing / Valve

Bij de verwerking van verzoeken tot inzage van persoonsgegevens op grond van artikel 15 van de AVG met betrekking tot Steam-gebruikersdata is een kritieke beveiligingskwetsbaarheid geïdentificeerd in documenten die door externe advocaten zijn verwerkt en verzonden. Taylor Wessing LLP namens Valve Corporation.

Technische foutanalyse

In plaats van de ruwe tekenarrays binnen de PDF-inhoudsstromen permanent te ontsmetten, wordt een geautomatiseerde, aangepaste PDF-generatiestroom gebruikt (met gebruik van Aspose.PDF voor .NET) werd ingezet. Dit systeem voerde programmatisch queries uit naar de coördinaten van gevoelige velden en tekende vaste zwarte vectorvormen (met PDF's re en f/F/b/B operators) bovenop de tekst.

Omdat visuele tekenlaag niet de onderliggende ruwe tekstarrays wijzigen of vernietigen, bleven duizenden ongecensureerde privérecords – waaronder accountgegevens, inloggegevens, e-mails, beveiligingslogs en gedepseudonimiseerde gegevens van minderjarigen – volledig intact, kopieerbaar en extracteerbaar uit de verzonden bestanden.

📂 Bijlage A: Gekapte correspondentie met dr. Patrick Zurheide

Hieronder staat de exacte reactie die is ontvangen van Dr. Patrick Zurheide (Salaried Partner bij Taylor Wessing LLP) nadat PhishDestroy het kantoor formeel had geïnformeerd over het falen van de PDF-redactie en de daaropvolgende lek van de gegevens van Steam-gebruikers. In plaats van een melding van een datalek conform artikel 33 van de AVG te starten, koos hij ervoor dit te schrijven:

Goedendag PhishDestroy-team,

Hartelijk dank voor uw blijkbaar vertaalde, maar toch onderhoudende bericht. Op welke communicatie „met strafrechtelijke vervolging“ met het PhishDestroy-team doelt u? Ik ben ervan overtuigd dat ik nooit in enige vorm met PhishDestroy heb gecommuniceerd. Gelieve deze vermeende communicatie daarom te verstrekken, zodat duidelijk wordt waar het eigenlijk over gaat.

Deze brief is inhoudelijk helaas moeilijk of zelfs onmogelijk te volgen. Ter informatie: een disclaimer, zoals onderstaand in uw brief, waarin wordt gesteld dat bepaalde handelingen niet worden verricht of niet de bedoeling zijn, is betekenisloos als daadwerkelijke handelingen in strijd zijn met deze verklaring.

Patrick Zurheide

🔍 PhishDestroy-analyse:

  • amusementele bericht Een hoog betaalde "IT-rechtsexpert" noemde een forensische melding over een massale GDPR-gegevenslek waarbij Steam-accounts van minderjarigen werden blootgelegd, "amuserend".
  • onmogelijk te volgen Wij hebben hem de exacte hex-waarden, de metadata van zijn PDF, de tijdstempels van de 36-seconde batch-pipeline en de specifieke Aspose 20.8 versie die de lek veroorzaakte. Blijkbaar zijn IT-metrics te "moeilijk te volgen" voor een doctor in het IT-recht.

🛠️ Multifunctionele mogelijkheden

Deze suite biedt drie complementaire, volledig client-side modi om neppe visuele censureringen te analyseren en te ontmantelen:

  • 📡 Modus 1: X-ray-scanner (PDF.js): Weergave van de visuele PDF-weergaven, maar haalt de onderliggende, niet-geschrubde tekens in realtime op. U ziet de zwarte doos, maar leest het geheim direct.
  • ✂️ Modus 2: Laagverwijderaar (PDF-Lib): Chirurgische sanitatie op stroomniveau. Vervangt fysiek rechthoekige visuele paint-opdrachten (re f, re F) met de n (no-paint)-operator, het verwijderen van de zwarte balken.
  • 🔎 Modus 3: Collision Audit (Fitz-indeling): Markeert overlappende tekst en grafieken om automatisch gecompileerde lijsten van lekken te genereren.

💻 Gebruik van de CLI (decensor.py)

# 1. Decompose PDF to raw text layers (Strips all drawings, lines, and masks globally)
python decensor.py -i compromised.pdf -d -o naked_document.pdf

# 2. Extract and save all text hidden under black visual shapes to a leaks text report
python decensor.py -i compromised.pdf -e verified_leaks.txt

# 3. List page-by-page structural element counts
python decensor.py -i compromised.pdf -l

🔍 Kern-Python-streamsanitizer

import re, fitz

def strip_black_bars_global(input_path, output_path):
    doc = fitz.open(input_path)
    for xref in range(1, doc.xref_length()):
        if not doc.is_stream(xref):
            continue
        try:
            obj_dict = doc.xref_object(xref)
            if any(m in obj_dict for m in ["/Type /Font", "/Subtype /Image", "/Type /Halftone"]):
                continue
                
            stream_bytes = doc.xref_stream(xref)
            text = stream_bytes.decode('latin-1')
            
            # Swap rectangular painting operators with no-fill 're n', preserving newlines
            modified_text, count = re.subn(
                r'\bre\s+([fFbB]\*?)(?=\s|$)',
                lambda m: f"re{m.group(0)[2:-len(m.group(1))]}n",
                text
            )
            if count > 0:
                doc.update_stream(xref, modified_text.encode('latin-1'))
        except Exception:
            continue
    doc.save(output_path, garbage=4, deflate=True, clean=True)
    doc.close()