python stun客户端,用于获取nat类型和外部ip(rfc 3489)

pystun3的Python项目详细描述


python stun客户端,用于获取nat类型和外部ip。支持python 版本2和3。

这个项目已经被分了好几次了: -original project by gaohawk -taken over by jtriley -forked and patched to support py3 by zoumi -最后,由TalkIQ

pystun跟在RFC 3489后面。在上找不到跟踪stun bis的服务器 互联网所以RFC3489是唯一的实现。

安装

要安装最新版本:

$ pip install pystun3

或下载/克隆源并使用以下命令手动安装:

$ cd /path/to/pystun3/src
$ python setup.py install

如果您正在攻击pystun3,则应改用“develop”命令:

$ python setup.py develop

这将链接到站点包目录中的源,以便 任何更改都可以立即进行测试。

用法

从命令行:

$ pystun3
NAT Type: Full Cone
External IP: <your-ip-here>
External Port: 54320

通过–更多选项的帮助:

% pystun3 --help
usage: pystun3 [-h] [-d] [-H STUN_HOST] [-P STUN_PORT] [-i SOURCE_IP]
               [-p SOURCE_PORT] [--version]

optional arguments:
  -h, --help            show this help message and exit
  -d, --debug           Enable debug logging (default: False)
  -H STUN_HOST, --host STUN_HOST
                        STUN host to use (default: None)
  -P STUN_PORT, --host-port STUN_PORT
                        STUN host port to use (default: 3478)
  -i SOURCE_IP, --interface SOURCE_IP
                        network interface for client (default: 0.0.0.0)
  -p SOURCE_PORT, --port SOURCE_PORT
                        port to listen on for client (default: 54320)
  --version             show program's version number and exit

来自python:

import stun
nat_type, external_ip, external_port = stun.get_ip_info()

这将在stun服务器的内部列表中循环,直到响应为 找到了。如果没有找到响应,您将得到"Blocked"作为nat_type 以及None用于external_ipexternal_port

如果您喜欢使用特定的stun服务器:

nat_type, external_ip, external_port = stun.get_ip_info(stun_host='stun.ekiga.net')

如果您喜欢使用特定的stun服务器端口:

nat_type, external_ip, external_port = stun.get_ip_info(stun_port=3478)

您还可以指定使用的客户机接口和端口,尽管 不需要:

sip = "0.0.0.0" # interface to listen on (all)
port = 54320 # port to listen on
nat_type, external_ip, external_port = stun.get_ip_info(sip, port)

阅读代码了解更多详细信息…

许可证

麻省理工学院

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij和Eclipse无法找到库工件   java Mapbox Android Symbolayer重置筛选器   java如何在顶部显示特定的recyclerview项?   java如何在Hibernate中使用@Qualifier   我想计算特定文本webdriver java在多个页面上可用的HTML表中的数据   java捕获Spring MVC REST服务抛出的Jersey REST客户端的异常   java Hibernate flush()影响事务   密钥绑定Java密钥绑定   sonarqube java,sonar,圈复杂度   使用3DES在Java中加密,在SQL Oracle中解密   regex正则表达式在regex101上工作。com,但不是prod   JAVAsql。SQLException:ORA00600:内部错误代码,参数:[12811],[93233]   java H2数据库存储在哪里?   java如何避免在使用Jackson时从JSON字符串反序列化空JSON数组元素