Simple Python DHCP Library. DHCP Packet-Parsing/Client/Server
Project description
pydhcp
Simple Python DHCP Library. DHCP Packet-Parsing/Client/Server
Installation
pip install pydhcp3
DHCPv4 Examples
Packet Parsing
from pydhcp.v4 import Message
hex = \
'0101060000003d1d0000000000000000000000000000000000000000000b8201fc4200' +\
'0000000000000000000000000000000000000000000000000000000000000000000000' +\
'0000000000000000000000000000000000000000000000000000000000000000000000' +\
'0000000000000000000000000000000000000000000000000000000000000000000000' +\
'0000000000000000000000000000000000000000000000000000000000000000000000' +\
'0000000000000000000000000000000000000000000000000000000000000000000000' +\
'0000000000000000000000000000000000000000000000000000638253633501013d07' +\
'01000b8201fc4232040000000037040103062aff00000000000000'
raw = bytes.fromhex(hex)
message = Message.unpack(raw)
print(message)
Client
from pydhcp.v4 import Message
from pydhcp.v4.client import Client, new_message_id
mac = 'aa:bb:cc:dd:ee:ff'
client = Client(interface=None)
# send crafted messages
id = new_message_id()
hwaddr = bytes.fromhex(mac.replace(':', ''))
request = Message.discover(id, hwaddr)
response = client.request(request)
print(response)
# or simplify the standard network assignment request process
record = client.request_assignment(mac)
print(record)
Server
import logging
from ipaddress import IPv4Address, IPv4Network
from pyserve import listen_udp_threaded
from pydhcp.v4.server import Server
from pydhcp.v4.server.backend import MemoryBackend, CacheBackend
# prepare simple memory backend as base provider
backend = MemoryBackend(
network=IPv4Network('192.168.1.0/24'),
gateway=IPv4Address('192.168.1.1'),
dns=[IPv4Address('8.8.8.8'), IPv4Address('8.8.4.4')],
)
# wrap backend w/ cache (not really useful here but for non-memory backends)
backend = CacheBackend(backend)
# configure optional logger for server implementaion
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger('myserver')
logger.setLevel(logging.INFO)
# launch server and run forever using pyserve
listen_udp_threaded(
address=('0.0.0.0', 67),
factory=Server,
allow_broadcast=True,
backend=backend,
logger=logger,
server_id=IPv4Address('192.168.1.1') # dhcp server address
)
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
pydhcp3-0.0.6.tar.gz
(24.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pydhcp3-0.0.6-py3-none-any.whl
(30.2 kB
view details)
File details
Details for the file pydhcp3-0.0.6.tar.gz.
File metadata
- Download URL: pydhcp3-0.0.6.tar.gz
- Upload date:
- Size: 24.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40bfcafe7b2e2eb08231b0591bfaa55af65be8185454d6a223705565176e4190
|
|
| MD5 |
5528c39351667bed6b5fc989844d48ab
|
|
| BLAKE2b-256 |
ac69af25aabc146ee88232428db53c3758ef8778ca8fa181a384b71059f97547
|
File details
Details for the file pydhcp3-0.0.6-py3-none-any.whl.
File metadata
- Download URL: pydhcp3-0.0.6-py3-none-any.whl
- Upload date:
- Size: 30.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.8.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ae118b340828a675af18beb31ba2f14459e3abddb10ddaad3c205d1becbae53
|
|
| MD5 |
2aff19bacb7fada2992339841d92a2f4
|
|
| BLAKE2b-256 |
cf4bfa2ee4a9a1caade1a979bfb6eefc2439ec8932e92cb923f0ad7c829d78f1
|