This file is indexed.

/usr/lib/cups/driver/foo2zjs is in printer-driver-foo2zjs-common 20170320dfsg0-4.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/env python3

# compressor.py
from subprocess import Popen, PIPE

def compress(value):
    """Compresses a byte array with the xz binary"""

    process = Popen(["xz", "--compress", "--force"], stdin=PIPE, stdout=PIPE)
    return process.communicate(value)[0]

def decompress(value):
    """Decompresses a byte array with the xz binary"""

    process = Popen(["xz", "--decompress", "--stdout", "--force"],
                    stdin=PIPE, stdout=PIPE)
    return process.communicate(value)[0]

def compress_file(path):
    """Compress the file at 'path' with the xz binary"""

    process = Popen(["xz", "--compress", "--force", "--stdout", path], stdout=PIPE)
    return process.communicate()[0]

# compressor.py

import os
import sys
from optparse import OptionParser
from sys import argv
import base64
import json
from io import BytesIO

from os.path import basename
from errno import EPIPE

def load():
    ppds_compressed = base64.b64decode(ppds_compressed_b64)
    ppds_decompressed = decompress(ppds_compressed)
    ppds = json.loads(ppds_decompressed.decode(encoding='ASCII'))
    return ppds

def ls():
    binary_name = basename(argv[0])
    ppds = load()
    for key, value in ppds.items():
        if key == 'ARCHIVE': continue
        for ppd in value[2]:
            try:
                print(ppd.replace('"', '"' + binary_name + ':', 1))
            except IOError as e:
                # Errors like broken pipes (program which takes the standard
                # output terminates before this program terminates) should not
                # generate a traceback.
                if e.errno == EPIPE: exit(0)
                raise

def cat(ppd):
    # Ignore driver's name, take only PPD's
    ppd = ppd.split(":")[-1]
    # Remove also the index
    ppd = "0/" + ppd[ppd.find("/")+1:]

    ppds = load()
    # Encode to binary, decode base64, decompress and convert to bytes again
    ppds['ARCHIVE'] = BytesIO(decompress(base64.b64decode(ppds['ARCHIVE'].encode('ASCII'))))

    if ppd in ppds:
        start = ppds[ppd][0]
        length = ppds[ppd][1]
        ppds['ARCHIVE'].seek(start)
        return ppds['ARCHIVE'].read(length)

def main():
    usage = "usage: %prog list\n" \
            "       %prog cat URI"
    version = "%prog 1.0.2\n" \
              "Copyright (c) 2013 Vitor Baptista.\n" \
              "This is free software; see the source for copying conditions.\n" \
              "There is NO warranty; not even for MERCHANTABILITY or\n" \
              "FITNESS FOR A PARTICULAR PURPOSE."
    parser = OptionParser(usage=usage,
                          version=version)
    (options, args) = parser.parse_args()

    if len(args) == 0 or len(args) > 2:
        parser.error("incorrect number of arguments")

    if args[0].lower() == 'list':
        ls()
    elif args[0].lower() == 'cat':
        if not len(args) == 2:
            parser.error("incorrect number of arguments")
        ppd = cat(args[1])
        if not ppd:
            parser.error("Printer '%s' does not have default driver!" % args[1])
        try:
            # avoid any assumption of encoding or system locale; just print the
            # bytes of the PPD as they are
            if sys.version_info.major < 3:
                sys.stdout.write(ppd)
            else:
                sys.stdout.buffer.write(ppd)
        except IOError as e:
            # Errors like broken pipes (program which takes the standard output
            # terminates before this program terminates) should not generate a
            # traceback.
            if e.errno == EPIPE: exit(0)
            raise
    else:
        parser.error("argument " + args[0] + " invalid")

# PPDs Archive
ppds_compressed_b64 = b"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"

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        # We don't want a KeyboardInterrupt throwing a
        # traceback into stdout.
        pass