Simple Secure and Lightweight Python Service Discovery
PyDiscover: Simple Secure and Lightweight Python Service Discovery
|Python version:||Python 3.4 and above|
|Author:||Daniel Garcia (cr0hn) - @ggdaniel|
PyDiscover is a simple service discovery client and server, designed with simplicity, performance and security in mind. Instead of implement SSDP protocol or any else, use a very simple mechanism: send to the clients information as a JSON format.
PyDiscover is very flexible and lightweight, and incorporates a cypher mechanism to secure (password based) the communication between server and clients.
Install is so easy:
# python3.4 -m pip install pydiscover
PyDiscover is composed by client and server:
Virtual Channels (or magic):
Client and server must transmit information in the same virtual channel (or magic). The magic is a pre-shared word that server/client known. Only messages with this word will be attended, performing the “virtual channel”.
By default (per security reasons) server runs as hidden mode. This is: if server receives a messages without the correct magic or with wrong password, doesn’t answer nothing to the client request. If we want that server answer with error message, we’ll activate explicitly.
We can set a password for the server. When it’s set, the information will be sent cyphered using AES to the clients. Only in the clients known the password could be understand the messages.
Server must be started with -d param. This param referees to a .cfg file. This file must have the format:
[DEFAULT] services = 10.0.0.1 net_password = asfi0j9ask123
The DEFAULT section content will be sent as a JSON format to the clients.
Starting server in port 40000, with a password an the virtual channel is build by word: “askskAls828”:
# pydiscover-server -p 40000 --password 1238d8KKls_jj -m askskAls828 -d example.cfg
Disablind hidden mode:
# pydiscover-server -p 40000 --password 1238d8KKls_jj -m askskAls828 -d example.cfg --disable-hidden
You can see more examples typing:
# pydiscover-server -h
Connecting to the server with the above configuration:
# pydiscover-client -p 40000 --password 1238d8KKls_jj -m askskAls828 -v
PyDiscover is released under BSD licence.