简单安全轻量级的python服务发现
pydiscover的Python项目详细描述
pydiscover:简单安全轻量级的python服务发现
Codename: | ZaRZaner0 |
---|---|
Version: | 1.0 |
Code: | https://github.com/cr0hn/pydiscover |
Issues: | https://github.com/cr0hn/pydiscover/issues/ |
Python version: | Python 3.4 and above |
Author: | Daniel Garcia (cr0hn) - @ggdaniel |
什么是pydiscover
pydiscover是一个简单的服务发现客户机和服务器,设计时考虑到了简单性、性能和安全性。与实现ssdp协议或其他协议不同,使用一种非常简单的机制:将信息作为json格式发送给客户机。
PyDiscover是非常灵活和轻量级的,并采用了密码机制来确保服务器和客户端之间的通信(基于密码)。
功能
- 简单的用法。
- 可配置的多播服务发现。
- 对服务器信息的密码保护访问(可选)。
- AES加密(如果定义了密码)。
- 自定义频道定义。
- 高服务器性能,基于新的python异步模块。
- 服务器可以向客户端传播任何信息。此信息以json格式发送/接收。
- 简单配置文件
安装
安装非常简单:
# python3.4 -m pip install pydiscover
它是怎么工作的?
架构:
pydiscover由客户机和服务器组成:
- 服务器在端口50000中侦听多播客户端请求(默认情况下)。
- 客户端使用多播地址向端口50000发送请求。
虚拟频道(或魔术):
客户机和服务器必须在同一个虚拟通道(或magic)中传输信息。magic是服务器/客户端已知的预共享单词。只有带有这个词的消息才会被关注,执行“虚拟通道”。
隐藏模式:
默认情况下(根据安全原因),服务器以隐藏模式运行。这是:如果服务器接收到没有正确魔法或密码错误的消息,则不会对客户端请求作出任何响应。如果希望服务器应答时显示错误消息,我们将显式激活。
保护通信
我们可以为服务器设置密码。设置好后,信息将使用aes加密发送到客户端。只有在知道密码的客户端才能理解消息。
发送/接收信息
服务器必须用-d参数启动。此参数引用.cfg文件。此文件的格式必须为:
[DEFAULT]services=10.0.0.1net_password=asfi0j9ask123
- 一个[默认值]部分。
- 任何信息如下:key=value。
默认节内容将以json格式发送给客户端。
用法
服务器
在端口40000中启动服务器,使用密码,虚拟通道由单词“askskals828”构建:
# pydiscover-server -p 40000 --password 1238d8KKls_jj -m askskAls828 -d example.cfg
取消隐藏模式:
# pydiscover-server -p 40000 --password 1238d8KKls_jj -m askskAls828 -d example.cfg --disable-hidden
您可以看到更多输入示例:
# pydiscover-server -h
客户端
使用上述配置连接到服务器:
# pydiscover-client -p 40000 --password 1238d8KKls_jj -m askskAls828 -v
实际示例
有什么新消息?
版本1.0.0
- 第一版发布
许可证
PyDiscover是根据BSD许可证发布的。