首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查看端口与哪个外部IP通信- Python

如何查看端口与哪个外部IP通信- Python
EN

Stack Overflow用户
提问于 2017-10-03 08:37:23
回答 1查看 666关注 0票数 0

我有一个端口扫描器脚本,它可以扫描端口并告诉您它们是打开的还是关闭的。有没有一种方法可以让我看到端口与之通信的IP地址?脚本:

代码语言:javascript
复制
from threading import Thread
import socket
host = str(input('host > '))
from_port = int(input('start scan from port > '))
to_port = int(input('finish scan to port > '))
counting_open = []
counting_close = []
threads = []

def scan(port):
    s = socket.socket()
    result = s.connect_ex((str(host),port))
    print(('checking ports > '+(str(port))))
    if result == 0:
        counting_open.append(port)
        print((str(port))+' -> is open')
        peer = s.getpeername()
        print(peer)
        s.close()
    else:
        counting_close.append(port)
        #print((str(port))+' -> is closed')
        s.close()

for i in range(from_port, to_port+1):
    t = Thread(target=scan, args=(i,))
    threads.append(t)
    t.start()

[x.join() for x in threads]

print(counting_open)

编辑:为了清楚起见,我并没有询问用户输入的本地主机的IP地址。我是问,有没有办法知道哪些外部公网IP正在通过脚本运行后找到的端口与主机通信。

EN

回答 1

Stack Overflow用户

发布于 2017-10-03 08:47:45

使用getpeername

代码语言:javascript
复制
>>> s.getpeername()
('207.38.86.25', 80)

对于其他想要获取网站ip地址而不想先创建socket对象的人,您也可以像这样使用socket.gethostbyname(hostname)

代码语言:javascript
复制
def get_ip_address(host):
    try:
        return socket.gethostbyname(host)
    except:
         return None
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46535602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档