How to hog disk storage space of banks that are KYC over-achievers (linux version) - eviltoast

All banks are shit but suppose you have a bank that is insideously over-achieving their KYC “compliance¹” and for whatever reason you cannot switch (likely because all the other options are too repugnant). One small thing you can do for every document they demand (id card, utility bill, bank statement, etc) is to fatten the storage footprint of that file as much as possible while simultaneously reducing the quality to barely legible.

I start with a cover letter (“Dear Bank X, a copy of my ID card is attached”). This is not necessary but adding a page really amplifies the filesize. Let’s assume you have a 2 page PDF to start (which is black and white in my case).

Tools needed:

  • GhostScript
  • tiff2pdf
  • ImageMagick
  • exiftool

¹ scare quotes used because they are far exceeding their KYC expectations well beyond compliance. They are “taking the piss” because there are no consequences for them when their overcollection hits you harder in data breeches.

convert PDF to fax TIFF

$ gs -q -dNOPAUSE -dBATCH -sDEVICE=tiffg3 -r204x196 -sPAPERSIZE="$paperform" -dFIXEDMEDIA -sOutputFile=fax_format.tiff "$src_pdf"

Replace $paperform with either “A4” or “letter”, depending on where you are. And replace $src_pdf with your input filename.

This command actually has a practical use if you ever send a fax because the fax_format.tiff file is in the group 3 fax format so you can see an accurate representation of what the doc will actually look like on the receiving end without having to just hope that it is not downgraded too much. The significant change is to get it down to ~200 dpi. It can be surprising how decent fax quality is if you start with a good scan and use a good dither algorithm.

convert the TIFF back to PDF

$ tiff2pdf fax_format.tiff im_input.pdf

The output actually shrinks in that step because the PDF contents get compressed. But we do this because when ImageMagick processes a PDF source and produces a PDF target, it’s naturally extremely bloated for some reason. ImageMagick is just terrible with PDFs but this is to our benefit in this case. Add a few key options to really bloat the shit out of it:

bloat it out

$ convert im_input.pdf -quality 100 -colorspace CMYK -resample 600x600 fuck_KYC_assholes.pdf

This triples the number of pixels but it’s still bounded by the A4 or US Letter geometry. It converts the bilevel doc to color. In my test a 38k file grew to 26mb!

im_input.pdf → 38kb
fuck_KYC_assholes.pdf → 26mb

The quality takes a huge hit in this step. I have no idea why. The doc is like 715 times bigger and much worse quality, but the quality is still just barely good enough to be accepted as long as it’s not judged by an asshole with a reject button.

Of course YMMV… might need some tuning if your bank has a filesize limit you need to target. The beauty of this is that since banks are like cops now, they probably treat these KYC files with forensic care. I don’t imagine that if they had excessively bloated files that they would dare risk reducing the quality by further processing in an effort to reduce the size.

cover your tracks

$ exiftool -all= fuck_KYC_assholes.pdf

That final step sanitises some or all of the metadata (e.g. removes Producer: …imagemagick.…). Of course there is an opportunity to tell them what you think in the metadata as well.

(optional) express yourself in the metadata

$ exiftool -author='(╯°□°)╯︵ ┻━┻' -creator='┌∩┐(◣_◢)┌∩┐' fuck_KYC_assholes.pdf

The author in this case is doing a table flip.

Or more constructive:

$ exiftool -Subject='Please stop financing fossil fuels and private prisons' fuck_KYC_assholes.pdf

(optional) embed a hidden file

Suppose you want to add files that are not rendered when the PDF is opened, either to express yourself further but in a less visible way or to bloat it out a little more in a way that’s easy to control. E.g. your file is 10mb under the size limit. Use dd to make a 10 meg file of random chars then add that to the PDF. Or add a manifesto to the PDF.

$ dd if=/dev/random of=/tmp/extra_bloat.raw count=1 bs=10000000
$ pdfattach fuck_KYC_assholes.pdf /tmp/extra_bloat.raw screw_them_harder.pdf

FYI, if they are clever and nibby they can use pdfdetach to see what you did. So choose the filename accordingly. The reason for /dev/random as opposed to /dev/zero is the random bits don’t compress. Perhaps a good file to attach is a Banking-on-Climate-Chaos-$year.pdf report.

2021: 12mb
2022: 8.2mb
2024: 21.8mb