There's a perfectly good dnstap dissector here. You'll find it in shodohflo/
, with an example: examples/tap_example.py
.
Look in app/
for screenshots from the web reporting interface.
This a DNS and netflow (IP address) correlator. DNS is the service which turns a web site name into an address which your computer can connect to (it also does other things, and has indirection). A netflow is the observed fact of two computers at different addresses exchanging data. Typically a DNS lookup is done to find the address, and then a connection with the address is created and data is exchanged. It's possible for an application to explicitly connect with an address without performing a DNS lookup.
It also includes pure Python implementations of Frame Streams and Protobuf, useful in their own right.
Dnstap is a technology for DNS traffic capture within a DNS server, therefore capturing both UDP and TCP queries and responses with fidelity. http://dnstap.info/
Aside from standard libraries the only dependencies for the core shodohflo
package components are:
Dependencies for the agents are:
Dependencies for the app/
at the present time (may change in the future) are:
It is developed and tested on Linux. In particular the agents will likely not run except on Linux.
shodohflo
package (Dnstap listener)This is a pure python dnstap protocol implementation for Linux, with potentially reusable frame streams and protocol buffer implementations.
CLIENT_RESPONSE
messages to a unix domain socket.SOCKET_ADDRESS
in tap_example.py
references the socket location.tap_example.py
program.shodohflo
package wherever you wish.You can find additional pointers in the install/
directory.
There are two agents, one for packet capture and one for DNS traffic (using dnstap). Both of them write to Redis.
install/
directory.agents/
directory and copy configuration_sample.py
to configuration.py
.install/systemd/
for service scripts and review the README there.This is a browser-based DNS and netflow correlator.
install/
directoryapp/
directory and copy configuration_sample.py
to configuration.py
.app.py
with Python 3.tap_example.py
is a working example of listening to a Unix domain socket receiving dnstap data and
has no dependencies beyond those for core components.dnstap2json.py
is a "ready to eat" customizable example of converting selected Dnstap data to JSON and writing that to STDOUT / a UDP socket asynchronously.Look in the examples/
directory.
Send me an email, or file an issue or PR.
Please look at proposed issues and give feedback, vote them up or down (+1 / -1), or submit one of your own. Proposals won't be worked on without some third party expression of interest.