From Berlin Hack & Tell Wiki
Jump to: navigation, search

Presented as "Paperback Part 1" on Berlin Hack and Tell BHNT 67 c-base Berlin, 2018-01-29

Digital data archiving on paper

  • Paper Data Storage Option (2009)
  • Die ganze deutsche oder englische Wikipedia ausdrucken: Print Wikipedia is an art project by Michael Mandiberg that printed 106 of the 7,473 volumes of English Wikipedia as it existed on April 7, 2015. Die ganze deutschsprachige Wikipedia auszudrucken und zu binden, würde derzeit (Stand 201603) 3406 Bände benötigen. Auf Bücherregalen aufgereiht, würde die deutschsprachige Wikipedia ein ganzes Zimmer füllen. Insgesamt umfasst die deutsche Wikipedia fast zwei Millionen Artikel, weltweit sind es 37 Millionen. Das Projekt sei Kunstwerk und Datenvisualisierung zugleich, sagt Mandiberg.
  • "I am looking for a tool that to export a GPG private key to a Data Matrix 2d barcode for long-term archival" TPK Archival (200903)
  • HOWTO Backup your GnuPG secret key on paper · /dev/schnouki "Paper is a safe way to backup a secret key: ... If you want to store your GnuPG secret key on a paper sheet, it is quite simple to do." (201003)
  • Paper SSH & GPG key backups | (201505)
  • Grant Trebbin: Simple Data Backup with Paper Based QR Codes (201505)
  • paperbank: Bitcoin Paper Key generator - using a thermal or photo pocket USB printer and a basic linux box (like a RaspberryPi) - Paper Wallet Generator (201602) (201602) (201803)
  • Cryptographi: Piper: A bitcoin hardware paper wallet printer (stopped selling it in 201609)


  • PaperBack (2007-2013; Windows). Original page where it all began. "PaperBack is a free application that allows you to back up your precious files on the ordinary paper in the form of the oversized bitmaps."

List of similar projects


  • Rupan/Paperbak: Back up your files on ordinary paper in the form of oversized bitmaps This goal of this project is to: i) document the process by which Paperbak is built ii) fix its crypto implementation Bounty (201705)
  • Create a pdf with barcodes to backup text files on paper. Designed to backup ASCII-armored GnuPG and SSH key files and ciphertext. (201811)
  • Tuxlifan/paperbackup: Should behave the same as this paperbackup but with using reportlab instead of PyX/LaTeX for PDF generation. (201809)
  • Easy Paper Backups of ASCII PGP Keys: Shell scripts to convert between ascii armor PGP keys and QR codes for paper backup. (201707) (see also its forks)
  • Cold store small files on paper as QR codes -- PGP keys, Bitcoin keys, Tox keys or any other small files in general. (201808)

References and further resources

Table 5 paperbak-archive.png
This study shows that it is possible to store digital data (i.e., files or documents) on microfilm and to convert them back to a digital format. This offers a viable solution for the permanent storage of the original data streams as defined in most archival regimes in e-Government settings and long-term archives.
List of Storage hierarchy media with costs.png

QR codes

Archiving PGP/GPG keys on paper

Bitcoin paperwallet, paperkey, paperbank

  • Paperwallet
  • Paperkey - an OpenPGP key archiver by David Shaw. Due to metadata and redundancy, OpenPGP secret keys are significantly larger than just the "secret bits". In fact, the secret key contains a complete copy of the public key. Since the public key generally doesn't need to be escrowed (most people have many copies of it on various keyservers, web pages, or similar), only archiving the secret parts can be a real advantage. Paperkey extracts just those secret bytes and prints them. A reasonable way to achieve a long term backup of OpenPGP (GnuPG, PGP, etc) keys is to print them out on paper. Paper and ink have amazingly long retention qualities - far longer than the magnetic or optical means that are generally used to back up computer data. (2007-2018)
  • Producing printable QR codes for persistent storage of GPG private keys (201510)
  • easy-gpg-to-paper aims to make exporting your secret gpg key to paper, and then restoring from paper, an easy and painless process.
  • Making Computer Backups - On Paper?! Youtube video of PaperBack v1.00 (200907)
  • Paperbak lets you back up your files onto paper…yes paper! [Freeware] | The Red Ferret Journal (201208)
  • A paper-based backup solution (not as stupid as it sounds) | ExtremeTech (201208)
  • Meine Geschichte über Rechenhilfsmittel: Die Computerzeitschriften der 1970er Jahre enthielten oft seitenlange Listings, die recht mühsam abgetippt werden mussten. Die Zeitschrift mc - Magazin für Computerpraxis wollte hier Abhilfe schaffen und entwickelte die mc-Paperdisk. (201302)
  • dvdisaster: dvdisaster is a computer program aimed to enhance data survivability on optical discs by creating error detection and correction data, which is used for data recovery. dvdisaster works exclusively at the (iso) image level. (dead page, 201901) | Manual (from
  • PaperBack: Backing up on… paper? | (201208)
  • Optar stands for OPTical ARchiver. It's a codec for encoding data on paper or free software 2D barcode in other words. Optar fits 200kB on an A4 page, then you print it with a laser printer. If you want to read the recording, scan it with a scanner and feed into the decoder program. A practical level of reliability is ensured using forward error correction code (FEC). Automated processing of page batches facilitates storage of files larger than 200kB. (2016?)
Optar closeup.png


  • paperback-cli:
Relatively high density file backups on paper. Cross-platform CLI port of Ollydb.
This is a repo copy and fork of by Surkeh. Paperback-cli is the crossplatform, backwards-compatible, command line version of Oleh Yuschuk’s PaperBack.
Originally designed to print encoded data directly to paper, it has been simplified to focus on encoding and decoding bitmaps that can be written to any printable media via whatever printing mechanism is available to your system. Recommended for small files such as cryptocurrency wallets, key revocation certificates, password databases, and any other important data only a few megabytes large.
While the capacity is small compared to conventional storage media, this program encodes or decodes non-electronic backups characteristically resilient to or unaffected by electromagnetic disturbance, water, and heat. (201701)
D80-s100-printed-fine.png D80-s100.png D80-s100-scanned-300dpi.png 10-gray300dpi.png
./paperback-cli --encode -d 80 -s 100 -i in.txt -o d80-s100.bmp
#./paperback-cli --encode -d 80 -s 80 -i in.txt -o d80-s80.bmp

# print
# printing...

# scan with to gray-300dpi.png
# scanning...

convert scan-gray300dpi.png -type Palette -depth 8 -compress none bmp3:scan.bmp
./paperback-cli --decode -i scan.bmp -o out.txt
Decoding scan.bmp into x.x
Reading scan.bmp...
Searching for raster...
Searching for grid lines...
ngood: 474
nbad: 0
nsuper: 12
nrestored: 324
Page processed
File complete
File saved


  • A colorized data storage scheme for printing on paper.
1 bit (BW; default) 2 bit (CMY+White) 3 bit (BW+RGB+CMY)
Sector c1.png Sector c2.png Sector c3.png

PaperBak (memo)

  • paperbak (memo)*
Hier ist unser Pad für PaperBak und Co., begonnen am 04.11.2015

Dann habe ich von "zbar" geladen, das enthält zbarimg und dmtxwrite?
Sind die in irgendwelchen standard-suse-paketen dabei oder hast du diese selbstgebaut?

Ich habe mich mit QR- und Datamatrix beschäftigt. Gebe jetzt erstmal auf. Anbei ein Testprogramm, darin habe ich meine bisher gefundenen Probleme aufgeführt.

Übrigens: Die Datendichte mit QR oder DMTX ist nicht so hoch wie bei Paperbak... das Thema legen wir erstmal zur Seite.

"If you have a good laser printer with the 600 dpi resolution,  you can save up to 500,000 bytes of uncompressed data on the single A4/Letter sheet. Integrated packer allows for much better data density - up to 3,000,000+ (three megabytes) of C code per page."
      # coding and decoding of a file into QR- or Datamatrix-codes
      # <infile>
      # Literature / sources:
      # QR code
      split -a 2 -b $qrchunk -d $1 $1.chunk-
      for file in ./$1.chunk-*; do qrencode -8 -l M -o $file.png <       $file; rm $file; done
      montage -label '%f' $1.chunk-*.png -geometry '1x1<' -tile 2x       $1-qr.png
      # 2x3 pro Seite (image)
      # montage -label '%f' $1.chunk-*.png -geometry '1x1<' -tile 2x3       $1-qr.png
      rm $1.chunk-*.png
      # QR decode
      zbarimg --raw $(ls $1-qr*.png | sort -n) > $1_qr-decoded
      # Problem 1: $1_qr-decoded != $1
      # Datamatrix code
      split -a 2 -b $dmtxchunk -d $1 $1.chunk-
      for file in ./$1.chunk-*; do dmtxwrite -e 8 $file > $file.png;       rm $file; done
      montage -label '%f' $1.chunk-*.png -geometry '1x1<' -tile 2x       $1-dmtx.png
      # 2x3 pro Seite (image)
      # montage -label '%f' $1.chunk-*.png -geometry '1x1<' -tile 2x3       $1-dmtx.png
      rm $1.chunk-*.png
      # Datamatrix decode
      # Problem 2: dmtxread kann nicht mehrere image files einlesen
      # Problem 3: dmtxread hat auch Probleme, wenn mehrere (oder zu viele?) Datamatrix-Codes in einem Image sind
      # dmtxread $(ls $1-dmtx*.png | sort -n) > $1_dmtx-decoded