MAC Address-focused library similar to `ipaddress`
Project description
MacTools
MacTools is a MAC-centric library for aiding in network handling and automation.
Full test coverage and fully type annoted.
Installation
This is a publicly available library on PyPI and can be installed with:
pip install mactools
Features
MacAddress
MAC object similar to Python's ipaddress
library. Performs validation on
creation and allows quick and easy format changing for the user. Accepts
EUI-48 and EUI-64 formats.
Usage
Built-in MacAddress
attributes allow for conversion between the common formats
of either delimiters, decimal, or binary. Such as:
from mactools import MacAddress
mac = MacAddress('00:11:22:AA:BB:CC')
# returns the MAC without an delimiters or spaces (001122AABBCC)
mac.clean
# returns the MAC with period delimiters (0011.22AA.BBCC)
mac.period
# returns the decimal/numeric form (73596058572)
mac.decimal
# returns the OUI (00:11:22)
mac.oui
The full format list includes: clean, colon, period, hyphen, space, oui, decimal, binary
IPv6 Support
This library has some methods for simplifying IPv6 SLAAC-based address creation:
# returns the IPv6 Suffix/Interface ID in EUI-64 per RFC 4291 (0211:22ff:feaa:bbcc)
mac.eui64_suffix
# returns the Link-local address (fe80::0211:22ff:feaa:bbcc)
mac.link_local_address
# returns a Global Unicast Address (2001:db8::) as `ipaddress.IPv6Address`
mac.get_global_address('2001:db8::0211:22ff:feaa:bbcc')
OUICache
Local cache of the IEEE OUI MA-L, MA-M, and MA-S registries for quick look-ups without needing to consistently hit API endpoints for individual queries.
MacAddress
currently automatically performs the look-up on creation.
The full information is available, including OUI, Vendor, Address, etc.
The cache also contains specific references to commonly defined non-vendor OUIs such as Multicast, IEEE protocols (STP, LLDP, etc), Locally administered and others.
Usage
Intakes a string MAC/OUI or MacAddress
object for either vendor or full record
from the IEEE OUI MA-L registry. The cache will be built if one is not present
(or if manually prompted) or the version of the code has changed.
from mactools import get_oui_cache
# the `mac` defined above already has the look-up performed and recorded on creation, if the record was found
vendor = mac.vendor
cache = get_oui_cache()
oui = '01000C'
# These methods would also work with the `mac` defined above as well
vendor = cache.get_vendor(oui)
vendor
will be the string of vendor registered to IEEE.
It will also identify common protocol MACs (such as Spanning Tree, Cisco/Extreme, etc.) and randomized MACs (locally administered).
License
This project is under the MIT license (see the LICENSE file for full text).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mactools-1.6.2.tar.gz
.
File metadata
- Download URL: mactools-1.6.2.tar.gz
- Upload date:
- Size: 1.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0465b4f648f19f6985862da433fcf71989c5fbce4ee098f7eb75cfaeed41d01 |
|
MD5 | e3a06eb49df46dfb936652ef15daa409 |
|
BLAKE2b-256 | 4b4248fe9778738b2a867c311127291b236f865b8466d284750ceb0ebe4814d2 |
File details
Details for the file mactools-1.6.2-py3-none-any.whl
.
File metadata
- Download URL: mactools-1.6.2-py3-none-any.whl
- Upload date:
- Size: 1.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ccc541b8e4bdcf9266ebac6918d2a88f08968e916caa682d78b18a940c35634c |
|
MD5 | 6d5dcdb057fb38572c736ab289a137ce |
|
BLAKE2b-256 | da4610c3b5a522843cbdd1cda4e048cf464f2a6cfd2563cfbfa7f7def6d05c52 |