Skip to main content

Simple Python DHCP Library. DHCP Packet-Parsing/Client/Server

Project description

pydhcp

PyPI version Python versions License: MIT Made with Love

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydhcp3-0.0.6-py3-none-any.whl (30.2 kB view details)

Uploaded Python 3

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

Hashes for pydhcp3-0.0.6.tar.gz
Algorithm Hash digest
SHA256 40bfcafe7b2e2eb08231b0591bfaa55af65be8185454d6a223705565176e4190
MD5 5528c39351667bed6b5fc989844d48ab
BLAKE2b-256 ac69af25aabc146ee88232428db53c3758ef8778ca8fa181a384b71059f97547

See more details on using hashes here.

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

Hashes for pydhcp3-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 9ae118b340828a675af18beb31ba2f14459e3abddb10ddaad3c205d1becbae53
MD5 2aff19bacb7fada2992339841d92a2f4
BLAKE2b-256 cf4bfa2ee4a9a1caade1a979bfb6eefc2439ec8932e92cb923f0ad7c829d78f1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page