Skip to main content

Decode, decrypt and parse South Africa driving license

Project description

Python Decoder for Driving License in South Africa

The Python project is used to decode, decrypt and parse South African driving licenses. The PDF417 decoding part relies on Dynamsoft Barcode Reader via the dynamsoft-barcode-reader-bundle package, which requires a license key.

South Africa Driving License Parser

Installation

pip install dynamsoft-barcode-reader-bundle

Command-line Usage

$ sadltool [-t TYPES] [-e ENCRYPTED] [-l LICENSE] source

positional arguments:
  source                A source file containing information of driving license.

options:
  -h, --help            show this help message and exit
  -t TYPES, --types TYPES
                        Specify the source type. 1: PDF417 image 2: Base64 string 3: Raw bytes
  -e ENCRYPTED, --encrypted ENCRYPTED
                        Is the source encrypted? 0: No 1: Yes
  -l LICENSE, --license LICENSE
                        The license key is required for decoding PDF417

Try Project Examples:

python test.py images/dlbase64.txt -t 2 -e 0
python test.py images/dl.raw -t 3 -e 0  
python test.py images/dl.png -l <Dynamsoft Barcode Reader License Key>

Sample Code

import argparse
from sadl import *
import sys
import os

def sadltool():
    
    parser = argparse.ArgumentParser(description='Decode, decrypt and parse South Africa driving license.')
    parser.add_argument('source', help='A source file containing information of driving license.')
    parser.add_argument('-t', '--types', default=1, type=int, help='Specify the source type. 1: PDF417 image 2: Base64 string 3: Raw bytes')
    parser.add_argument('-e', '--encrypted', default=1, type=int, help='Is the source encrypted? 0: No 1: Yes')
    parser.add_argument('-l', '--license', default='', type=str, help='The license key is required for decoding PDF417')
    
    if len(sys.argv) == 1:
        parser.print_help()
        sys.exit(1)
    
    try:
        args = parser.parse_args()
        source = args.source
        types = args.types
        if args.encrypted == 1:
            encrypted = True
        else:
            encrypted = False
        license = args.license
        
        if not os.path.exists(source):
            print('Source not found')
            exit(-1)
            
        if types == 1:
            dl = parse_file(source, encrypted, license)
            print(dl)
        elif types == 2:
            with open(source, 'r') as f:
                source = f.read()
                dl = parse_base64(source, encrypted)
                print(dl)
        elif types == 3:
            data = Path(source).read_bytes()
            dl = parse_bytes(data, encrypted)
            print(dl)
            
    except Exception as err:
        print(err)
        sys.exit(1)
        
sadltool()

How to Build the Package

  • Source distribution:

    python setup.py sdist
    
  • Wheel:

    pip wheel . --verbose
    # Or
    python setup.py bdist_wheel
    

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

south_africa_driving_license-0.2.1.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

south_africa_driving_license-0.2.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file south_africa_driving_license-0.2.1.tar.gz.

File metadata

File hashes

Hashes for south_africa_driving_license-0.2.1.tar.gz
Algorithm Hash digest
SHA256 9722a9901cc0748b843588be210d96ad1af096bf0c87a5613aba3b190c109433
MD5 2a1a1974bed49c2b3832da8b86f5502b
BLAKE2b-256 6e7e3664b724ff610e922b6324ee0d6c358118c1ab7311e1fd8d9587bf4a5e11

See more details on using hashes here.

File details

Details for the file south_africa_driving_license-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for south_africa_driving_license-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5febba1aefc76a3198b7769a8b302d50b5506d70c395009a403077aee40edf5b
MD5 f1d74b7af23ebbbec4a7bc94b3ee2c82
BLAKE2b-256 b80b88a8e32d311bad1d681d17765703ad4f8bdd959ee7937e6866dbabb615b6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page