Skip to content
Gubbins serial number generator & validator
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
gubbins
.gitignore
LICENSE
MANIFEST.in
README.md Update README Oct 8, 2019
example.py
setup.py

README.md

gubbins

Serial number generator/validator

A simple but powerful serial number generator and validator written in Python. Given a Prefix and a 32-bit ID, produces a Serial. Given a valid Serial, returns the Prefix and 32-bit ID. Optionally takes Additional Data.

from gubbins import Gubbins

for i in range(10):
	serial = Gubbins.generate("AX", i)
	prefix, id = Gubbins.validate(serial)
	assert prefix.lower() == "AX".lower()
	assert id == i
	print(i, serial)

or via the command-line,

gubbins 1-10 --solo --prefix AX | ungubbins

Gubbins has several interesting features. A Gubbins Serial

  • is human-friendly,
  • ignores case,
  • fixes up typos,
  • can be reversed,
  • contains a checksum,
  • avoids collisions, &
  • attempts to prevent enumeration.

Modifying any of Prefix, ID, or Additional Data results in a different Serial.

Gubbins uses a lightly modified z-base-32 alphabet, with the letters AJNRTUV canonically upper-case and all other letters lower-case. The validator will automatically fix up typos related to oO0, iIlL1, & zZ2.

For best results,

  • a Prefix can not contain the characters -oOiIlLzZ,
  • IDs should not be sequential, &
  • Additional Data may depend on the Prefix but must not be derived from it.

Note: we make no security claims about Gubbins. YMMV

Requires

License: MIT

You can’t perform that action at this time.