예제 #1
0
파일: test_eui.py 프로젝트: drkjam/netaddr
def test_mac_to_ipv6():
    mac = EUI('00-1B-77-49-54-FD')
    eui = mac.eui64()
    assert mac == EUI('00-1B-77-49-54-FD')
    assert eui == EUI('00-1B-77-FF-FE-49-54-FD')

    assert mac.modified_eui64() == EUI('02-1B-77-FF-FE-49-54-FD')
    assert mac.ipv6_link_local() == IPAddress('fe80::21b:77ff:fe49:54fd')
    assert eui.ipv6_link_local() == IPAddress('fe80::21b:77ff:fe49:54fd')

    assert mac.ipv6(0x12340000000000000000000000000000) == IPAddress('1234::21b:77ff:fe49:54fd')
    assert eui.ipv6(0x12340000000000000000000000000000) == IPAddress('1234::21b:77ff:fe49:54fd')
예제 #2
0
def test_mac_to_ipv6():
    mac = EUI('00-1B-77-49-54-FD')
    eui = mac.eui64()
    assert mac == EUI('00-1B-77-49-54-FD')
    assert eui == EUI('00-1B-77-FF-FE-49-54-FD')

    assert mac.modified_eui64() == EUI('02-1B-77-FF-FE-49-54-FD')
    assert mac.ipv6_link_local() == IPAddress('fe80::21b:77ff:fe49:54fd')
    assert eui.ipv6_link_local() == IPAddress('fe80::21b:77ff:fe49:54fd')

    assert mac.ipv6(0x12340000000000000000000000000000) == IPAddress(
        '1234::21b:77ff:fe49:54fd')
    assert eui.ipv6(0x12340000000000000000000000000000) == IPAddress(
        '1234::21b:77ff:fe49:54fd')
예제 #3
0
파일: ula.py 프로젝트: 56fe/ula
import math
import struct
import hashlib

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description='Generate a Unique Local Address'
    )
    parser.add_argument('-m', '--mac', help='MAC address',
                        default=uuid.getnode())
    args = parser.parse_args()

    try:
        eui48 = EUI(args.mac)
    except Exception as err:
        print('{}: {}'.format(parser.prog, err), file=sys.stderr)
        sys.exit(1)
    else:
        eui64 = eui48.modified_eui64()

    now = datetime.utcnow()
    start = datetime(1900, 1, 1, 0, 0, 0)
    delta = (now - start).total_seconds()
    subsec, sec = math.modf(delta)
    ntpstamp = (int(sec) << 32) + int(subsec * 0xffffffff)

    key = eui64.packed + struct.pack('Q', ntpstamp)
    id = hashlib.sha1(key).hexdigest()[-10:]
    print('fd{}:{}:{}::/48'.format(id[0:2], id[2:6], id[6:10]))
    sys.exit(0)