Skip to main content

Dnstap Protocol Buffers implementation in Python

Project description

Dnstap Protocol Buffers implementation in Python

Dnstap Protocol Buffers implementation in Python, more informations on dnstap http://dnstap.info/. This library is based on the following protocol buffers schema from github https://github.com/dnstap/dnstap.pb

Installation

This module can be installed from pypi website

pip install dnstap_pb

Decoder

Example to use the Dnstap decoder

import dnstap_pb

# dnstap decoder
dnstap = dnstap_pb.Dnstap()

payload = b'\n\x08dnsdist1\x12\rdnsdist 1.5.0r[\x08\x05\x10\x01\x18\x01"\x04\n\x00'
payload += b'\x00\xd2*\x04\n\x00\x00\xd20\xe6\xae\x0385@\x8e\x8f\xc6\xff\x05M\x1cf,'
payload += b'\x15R6\xda\xba\x01 \x00\x01\x00\x00\x00\x00\x00\x01\x03www\x06google\x02'
payload += b'fr\x00\x00\x01\x00\x01\x00\x00)\x10\x00\x00\x00\x00\x00\x00\x0c\x00\n\x00'
payload += b'\x08\xe68\xe3\x8e\x7f\x01\xdexx\x01'

dnstap.ParseFromString(payload)

dm = dnstap.message
print(dm)
type: CLIENT_QUERY
socket_family: INET
socket_protocol: UDP
query_address: "\n\000\000\322"
response_address: "\n\000\000\322"
query_port: 60218
response_port: 53
query_time_sec: 1609664434
query_time_nsec: 533617553
query_message: "\221W\001 \000\001\000\000\000\000\000\001\003www\006google\002fr\000\000\001
\000\001\000\000)\020\000\000\000\000\000\000\014\000\n\000\010\273\257\370\014_\001\341-"

Encoder

Example to use the Dnstap encoder

import dnstap_pb

# dnstap encoder
dnstap = dnstap_pb.Dnstap()

# clear all fields
dnstap.Clear()

# constructs the message
dnstap.type = 1
dnstap.version = b"0.1.0"
dnstap.identity = b"dnstap_python"

dnstap.message.type = dnstap_pb.dnstap_pb2._MESSAGE_TYPE.values_by_name["CLIENT_QUERY"].number
dnstap.message.socket_protocol = dnstap_pb.dnstap_pb2._SOCKETPROTOCOL.values_by_name["UDP"].number
dnstap.message.socket_family = dnstap_pb.dnstap_pb2._SOCKETFAMILY.values_by_name["INET"].number

# serialize the dnstap message to binary
payload = dnstap.SerializeToString()

Development

dnstap_pb2 file generation guideline

Download dnstap.proto from https://github.com/dnstap/dnstap.pb

wget https://raw.githubusercontent.com/dnstap/dnstap.pb/master/dnstap.proto

Download protoc

export VER=21.5
wget https://github.com/protocolbuffers/protobuf/releases/download/v$VER/protoc-$VER-linux-x86_64.zip
unzip protoc-$VER-linux-x86_64.zip

Generate proto

python3 -m pip install protobuf
bin/protoc --python_out=. dnstap.proto

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

dnstap_pb-0.9.0.tar.gz (4.6 kB view details)

Uploaded Source

Built Distribution

dnstap_pb-0.9.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file dnstap_pb-0.9.0.tar.gz.

File metadata

  • Download URL: dnstap_pb-0.9.0.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for dnstap_pb-0.9.0.tar.gz
Algorithm Hash digest
SHA256 901d0f3bf9901301c8c298dd4c1c64d96c0ba5a6d251e6d9487130906b014076
MD5 c59f80ef818ccad1cfe095c7dfcd7496
BLAKE2b-256 09ef62a5aa4c39dae3087e8316a65a8bb71e0ebd273845b5e0fc56f4ae7a22b1

See more details on using hashes here.

File details

Details for the file dnstap_pb-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: dnstap_pb-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for dnstap_pb-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cfcbfc029c7df88a08e81ca34ffdb266bf2e077cf25df5e2ef29f4869a12e074
MD5 e92e91503fc55752c526e512bae085ca
BLAKE2b-256 d4f5794829387535a94f3ad57caa0bd725f6ac771be53abae9d2207c63e5bdbe

See more details on using hashes here.

Supported by

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