Modern cli port of Olly's paperbak.

3b5ea72f63 Addressed compiler error re: ulong undefined on mingw/GCC 7 lat temu
include 3b5ea72f63 Addressed compiler error re: ulong undefined on mingw/GCC 7 lat temu
lib 5408464f46 Removed all CPP, submoduled libraries 7 lat temu
src e50048053c Addressed compiler error re: undeclared var fileHandle 7 lat temu
.gitignore 9cb7e36aae Init pb_outbmp in main, reorganize 7 lat temu
.gitmodules 5408464f46 Removed all CPP, submoduled libraries 7 lat temu
LICENSE faff9f57cd Fileproc added, minor additions to Global 7 lat temu
Makefile 5408464f46 Removed all CPP, submoduled libraries 7 lat temu
README.md ad2226405f Update 'README.md' 7 lat temu

README.md

#paperback-cli 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.

####Build Requirements

  • No external dependencies

####Building

        git submodule update --init --recursive
        make

####Encode arbitrary data to bitmap Symmetric encryption and compression recommended prior to encoding

        ./paperback-cli --encode -i [input] -o [output].bmp

####Decode encoded bitmap

        ./paperback-cli --decode -i scanned.bmp -o original.gpg

####Decode multiple encoded bitmaps e.g. scanned_0001.bmp through scanned_0029.bmp

        ./paperback-cli --decode -i scanned.bmp -o original.gpg -p [nPages]

####List all arguments and settings

        ./paperback-cli --help

####Compiler(s)

  • mingw-w64, GCC 6.3.0 under msys2
  • gcc version 7.1.1 20170630

####What has changed from 1.1? Decryption and decompression has been ported for backwards compatibility with existing backups but more appropriate tools, such as gpg, tar, and bzip2, should be used to preprocess the data before encoding. Printing has been removed entirely for cross-platform compatibility.

####What settings should I use? Settings depend on the target printer, scanner, and the abuse you expect the printed medium to endure. Inkjet printers are substantially less precise, requiring low DPI settings to be readable (200 by default). The recommended DPI for laser printers is half of your scanner DPI (600 dpi printing possible with scans of 1200 DPI). Oleh recommends a dot size of 70% (default) to ensure adequate white space. Redundancy guards against partially damaged data (default of 5 is 1 block of redundant data per 5 blocks), so higher settings increase chances of recovery after damage. Header and footer prints page and file information (on by default) but has not yet been implemented in this version. Border prints a black border around the data (disabled by default to save ink).

####Similar projects: Several QR code-based paper backup programs have been written since Oleh released PaperBack 1.1, each with their own advantages. Intra2net (paperbackup) explains that the ubiquity of QR codes allows his solution several high-quality encoder/decoders. With good density, excellent error-correction, and several alternatives if one decoder should fail, QR codes are an excellent choice. PaperBack also detects and repairs damaged data but the advantage of PaperBack is signifcantly higher density, due to the layout of data. Every cell of a QR code sacrifices space for alignment blocks, whereas PaperBack uses the grid itself for this information. The disadvantage is, should PaperBack fail to decode, there are no alternatives except previous versions of PaperBack. Twibright's Optar is very similar to PaperBack, but, according to Oleh's claims, PaperBack stores 500kB per page while Twibright claims to store 200kB. Comparision testing to follow as time allows.


Forked from Oleh Yuschuk's PaperBack

Paperback-cli is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.