Exemple #1
0
def printer():
    device_address = os.urandom(8).encode('hex')
    xor = bitshuffle.hardware_xor_from_device_address(device_address)
    secret = os.urandom(5).encode('hex')

    cc = claiming.encode(xor, int(secret, 16))
    printer = hardware.Printer(
        device_address=device_address,
        hardware_xor=xor,
    )
    db.session.add(printer)
    db.session.commit()

    def out(x):
        x.write('     address: {}\n'.format(device_address))
        x.write('       DB id: {}\n'.format(printer.id))
        x.write('      secret: {}\n'.format(secret))
        x.write('         xor: {}\n'.format(xor))
        x.write('  claim code: {}\n'.format(cc))

    path = device_address + '.printer'
    with open(path, 'w') as f:
        out(f)

    out(sys.stdout)
    print('\nCreated printer and saved as {}'.format(path))
Exemple #2
0
def printer():
    device_address = os.urandom(8).hex()
    xor = bitshuffle.hardware_xor_from_device_address(device_address)
    secret = os.urandom(5).hex()

    cc = claiming.encode(xor, int(secret, 16))
    printer = hardware.Printer(
        device_address=device_address,
        hardware_xor=xor,
    )
    db.session.add(printer)
    db.session.commit()

    def out(x):
        x.write('     address: {}\n'.format(device_address))
        x.write('       DB id: {}\n'.format(printer.id))
        x.write('      secret: {}\n'.format(secret))
        x.write('         xor: {}\n'.format(xor))
        x.write('  claim code: {}\n'.format(cc))

    path = device_address + '.printer'
    with open(path, 'w') as f:
        out(f)

    out(sys.stdout)
    print('\nCreated printer and saved as {}'.format(path))
Exemple #3
0
    def test_coding_from_real_world(self):
        device_address = '000d6f000273c164'
        # only the last 24 bits of the device address are used
        device_address_int = int(device_address, 16) & 0xffffff
        # secret only known to printer and claim code
        secret = 0xeb1ba696a0

        self.assertEqual(
            claiming.encode(device_address_int, secret),
            'n5ry-p6x6-kth7-7hc4',
        )
Exemple #4
0
    def test_coding_from_real_world(self):
        device_address = '000d6f000273c164'
        # only the last 24 bits of the device address are used
        device_address_int = int(device_address, 16) & 0xffffff
        # secret only known to printer and claim code
        secret = 0xeb1ba696a0

        self.assertEqual(
            claiming.encode(device_address_int, secret),
            'n5ry-p6x6-kth7-7hc4',
        )
Exemple #5
0
 def test_encoding(self):
     for cc, device, secret in CC_TEST_VECTORS:
         self.assertEqual(claiming.encode(device, secret), cc)
         dec_device, dec_secret, _, _ = claiming.unpack_claim_code(cc)
         self.assertEqual(dec_device, device)
         self.assertEqual(dec_secret, secret)
Exemple #6
0
 def test_encoding(self):
     for cc, device, secret in CC_TEST_VECTORS:
         self.assertEqual(claiming.encode(device, secret), cc)
         dec_device, dec_secret, _, _ = claiming.unpack_claim_code(cc)
         self.assertEqual(dec_device, device)
         self.assertEqual(dec_secret, secret)