About digital and analogue techniques to compress small text messages.

Compressing text messages

OSEP - Fun and challenging but overrated
An article about my OSEP course experience.
Recovering secrets from IntelliJ plugins
IntelliJ has a deprecated PasswordUtil class that statically xors secrets for storage. Some plugins like Sonarlint (from Sonarqube) still use this outdated class to store passwords and tokens.

BraekerCTF 2024 source
This is the source code from the BraekerCTF 2024. I always wanted to create a large-scale, high-quality CTF, and I was working on it since Dec 2022. It is a jeopardy-style hacking competition, and it ran from 23 February 2024 to 24 February 2024. Over 700 teams participated.
Pentest report writing guide
Some pentesters struggle to effectively write about pentest results, causing findings and reports to end up in the bin. To create a healthy ecosystem we should share knowledge on what makes a pentest report work. Over the years I have developed my own methods for quickly producing high-quality deliverables. By sharing this knowledge I hope you can improve your writing as well.
Argon2 wordlist cracker
Modified the original Argon2 code for some simple password cracking.

Can we restore trust in cryptographic control?
Legislators and technologists have not reached consensus on regulations for cryptographic control. Let's look at arguments, history and the future in order to balance the discussion and to restore trust in controlling cryptography.
How to save money on a pentest
This short guide aims to aid companies by increasing the cost-effectiveness of penetration testing services.
Cracking Oracle Apex password hashes
We'll reverse the Oracle Apex engine and find out how to crack its hashes with hashcat.
Sharpen your monitoring capabilities with honeypots
I started out with this article to showcase vulnerabilities in honeypot software, but ended up believing that honeypots are the next step in leveling the cyber security playing field.
CVE-2021-22524 - DoS via XXE in NetIQ Access Manager
The NetIQ Access Manager was vulnerable to an XXE vulnerablity, allowing attackers to perform a Denial of Service attack on the IAM platform.
Harden your security team - Don't trust bug bounty reports
Pro-actively tighten security procedures or your security team might be subject to social engineering attacks.
Recovering passwords from pixelized screenshots
No tools were available for recovering a password from a pixelized screenshot, so I created a Proof of Concept. In this article I explain my algorithm and its implementation, but start with some history and the current state of deblurring techniques.
Lessons from password policy science
Password expiration and complexity rules are dead. We have proper password policy guidelines for over three years now. Stop trying to fix users and start fixing your infrastructure.
A widespread piece of .NET code allowing code execution
ViewState deserialization has been 'fixed' in .NET since 2012, but a vulnerable code snippet for creating a custom compressed ViewState is being passed around on the internet to this day.
Spot The Bug - An Open End
A new Spot The Bug challenge based on a vulnerability I found during an assignment.
Temporary intercom hack
The lock of the front door was broken, so I hacked together a way for housemates to open the door via their phones.
Viewing mssql backups files and extracting hashes
How to extract the sa password hash and view the content of the master database from an MSSQL database backup (.bak).
Owning Building Management Systems
When working for Applied Risk I got to contribute to research for hacking Building Mangement Systems. We'd found bugs and created exploits for owning buildings over the internet.
OSCP - Fun and challenging but overrated
An article about my experiences with the OSCP course.
Siemens Spectrum Power Command Injection
During my time at Applied Risk I discovered a Command Injection vulnerability in Siemens Spectrum with the help of Rutger Hendriks. Siemens Spectrum is a control system for power grids.
Loracrack - LoRaWAN session cracker
Application for cracking LoRaWAN sessions if the AppKey is known but the handshake is missed.
Simple libHackRF API example
Example program for interfacing with the HackRF.
Only log required data for WPA cracking (aircrack-ng / airodump)
Patch for airodump for only logging relevant data for WPA cracking.
To set currents in motion
Some blog article I wanted to write on information security.
Programming the Razer Tartarus Chroma on Linux
Program for using the Razer Tartarus Chroma on Linux because the normal drivers weren't working.
Staying Positive About False Negatives
How and why I failed a couple of times during a code review / pentest.
Secure Diffie-Hellman parameters for Lighttpd with SNI
A proper SNI configuration for lighttpd DH parameters.
Self-replicating binary infecting Mach-O files
Programming exercise for virus-making for getting to know assembly, Mach-O binaries and how virusses work.
Fixing this "couldn't get 'max filedescriptors'" error
How I fixed the "couldn't get 'max filedescriptors'" error from Lighttpd.
Postfix mail bot for helping setting up PGP encrypted mail
Programming exercise for encrypting email. This is a mailbot in Python for Postfix for setting up PGP encrypted mail.
Spot The Bug challenge 2018 warm-up
Warm-up for the Spot The Bug challenge 2018 from Securify.
Hoe begin je 2018 veilig op internet?
After reporting some vulnerabilities I found during SumOfPwn to a newspaper, they ask me to give some general internet safety tips for 2017-2018. The article contains a few of my practical tips. Here is the complete (Dutch) text I sent in regarding internet safety for the public.
Compiling a Monero miner on OSX
Tutorial on compiling a Monero miner op OSX.
Fixing the 'critical software update' OSX install message
A short article about fixing the 'critical software update' error message when re-installing a Macbook Pro with a touch bar.
A journey into cracking RSA moduli with a common GCD
In this article I share some experiences from cracking RSA moduli in bulk by exploiting the use of common GCDs.
Multiple vulnerabilities in VTech DigiGo allow browser overlay attack
Advisory for vulnerability that allows attackers to perform a persistent overlay attack on the browser app.
Broken TLS certificate pinning in VTech DigiGo Kid Connect app
Advisory for broken TLS certificate pinning in VTech DigiGo Kid Connect app that allows for a Man-in-the-Middle attack on the chat functionality.
Kobo Aura H2O hacking
Bypassing registration for the Kobo Aura H2O so you can use it like the actual product you payed for.
Broken TLS certificate validation in VTech DigiGo browser
Advisory for broken TLS certificate validation in the VTech DigiGo browser.
Instant negative hash cracking wordlist lookup
Bloomhash - Instant negative hash cracking wordlist lookup
LazyFact - Factoring RSA moduli using basic methods
Programming practice to factorise an RSA modulus using very basic methods.
Buffer over-read vulnerability in Virtuozzo Power Panel (VZPP) and Automator
Advisory for buffer over-read vulnerability in Virtuozzo Power Panel (VZPP) and Automator.
Crackcoin: basic blockchain-free cryptocurrency PoC in Python
Crackcoin is a very basic blockchain-free cryptocurrency PoC in Python. It's a programming practice project for discovering cryptocurrencies.
Reflected Cross-Site Scripting in CM4ALL
Advisory for Reflected Cross-Site Scripting in CM4ALL.
Spot The Bug challenge 2016 write-up
Write-up for the Spot The Bug challenge 2016 from Securify.
Spot The Bug challenge December 2016
Briefing for the Spot The Bug challenge 2016 from Securify.
Threaded client/server sockets in Python
Programming practice for threaded server/client TCP sockets.
Stored Cross-Site Scripting in Gallery - Image Gallery WordPress Plugin
Advisory for Stored Cross-Site Scripting in Gallery - Image Gallery (Wordpress plugin).
Persistent Cross-Site Scripting in WP Google Maps Plugin via CSRF
Advisory for Persistent Cross-Site Scripting in WP Google Maps Plugin via CSRF (Wordpress plugin).
Weak validation of Amazon SNS push messages in W3 Total Cache WordPress Plugin
Advisory for Weak validation of Amazon SNS push messages in W3 Total Cache (Wordpress plugin).
Reflected Cross-Site Scripting vulnerability in MailPoet Newsletters plugin
Advisory for Reflected Cross-Site Scripting vulnerability in MailPoet Newsletters plugin (Wordpress plugin).
Command injection in InfiniteWP Admin Panel
Advisory for Command injection in InfiniteWP Admin Panel (Wordpress plugin).
Cross-Site Request Forgery in WordPress Press This function allows DoS
Advisory for DoS via Cross-Site Request Forgery in WordPress Press This function.
Authorization bypass in InfiniteWP Admin Panel
Advisory for authorization bypass in InfiniteWP Admin Panel (Wordpress plugin).
Multiple vulnerabilities in All In One WP Security & Firewall plugin
Advisory for Multiple vulnerabilities in All In One WP Security & Firewall plugin login CAPTCHA (Wordpress plugin).
Persistent Cross-Site Scripting in Instagram Feed plugin via CSRF
Advisory for Persistent Cross-Site Scripting in Instagram Feed plugin via CSRF (Wordpress plugin).
Reflected Cross-Site Scripting vulnerability in W3 Total Cache plugin
Advisory for Reflected Cross-Site Scripting vulnerability in W3 Total Cache plugin (Wordpress plugin).
Persistent Cross-Site Scripting in Woocommerce WordPress plugin
Advisory for Persistent Cross-Site Scripting in Woocommerce WordPress plugin (Wordpress plugin).
Information disclosure race condition in W3 Total Cache WordPress Plugin
Advisory for Information disclosure race condition in W3 Total Cache (Wordpress plugin).
JavaScript animation using the canvas element
Programming exercise for using the canvas element from Javascript.

ASCII animations in terminal using curses
Script for showing ascii animations in the terminal using the Python curses library.
Shortest Python quine
A Python quine I created in 2015 has been doing well on Stackoverflow.
Spot The Bug challenge 2015 write-up
Write-up for the Spot The Bug challenge 2015 from Securify.
Spot The Bug challenge 2015 briefing
Briefing for the Spot The Bug challenge 2015 from Securify.
Glype proxy local address filter bypass
Advisory for bypassing local address filters in the Glype web-based proxy that allows attacking the internal network of the proxy host.
Glype proxy cookie jar path traversal allows code execution
Advisory for path traversal vulnerability in the Glype web-based proxy that allows an attacker to run arbitrary PHP code on the server or remove critical files from the filesystem.
Trainpooling
Back in 2014 I thought of a hack for the Dutch train system I call trainpooling.

Hackerone DoS by PNG compression
Advisory for Denial of Service vulnerability in HackerOne via PNG image upload.

Hackerone DoS by GIF resize flooding
Advisory for Denial of Service vulnerability in HackerOne via GIF image upload.
Python library for creating PNG image data
Python script for generating custom PNG chunks for testing decoders.

HackerOne DoS by JPG pixel flood
Advisory for Denial of Service vulnerability in HackerOne via JPG image upload.
Helpdesk - Stupid things people say
A long time ago I worked at a helpdesk. While working there I started documenting stupid things people said over the phone (in Dutch). It was hilarious.