Python编写端口扫描器

注:部分内容来自书籍或者网络,如有侵权,请联系删除。

方法一:

socket模块为操作系统socket连接提供了一个Python接口。socket模块有一个socket函数,我们可以给socket函数传递参数,从而创建不同网络协议的socket对象。

#!/usr/bin/python
from __future__ import print_function
from socket import *

def conn_scan(host,port):
    conn = socket(AF_INET,SOCK_STREAM)
    try:
        conn.connect((host,port))
        print(host,port,'is avaliable')
    except Exception as e:
        print(host,port,'is not avaliable')
    finally:
        conn.close()
        
def main():
    host = '192.168.3.72'
    for port in range(20,1000):
        conn_scan(host,port)
        
if __name__ == '__main__'
    main()

方法二:

使用Python的telnet模块,该模块有一个Telnet类,该类的对象表示一个telnet连接,创建一个对象并不会建立到远程主机的连接,需要使用open方法简历连接,open方法接受三个参数,主机名,端口号,超时时间。

#!/usr/bin/python
from __future__ import print_function
import telnetlib

def conn_scan(host,port):
    conn = telnetlib.Telnet()
    try:
        conn.open(host,port,timeout=1)
        print(host,port,'is avaliable')
    except Exception as e:
        print(host,port,'is not avaliable')
    finally:
        conn.close()
        
def main():
    host = '192.168.3.72'
    for port in range(20,1000):
        conn_scan(host,port)
        
if __name__ == '__main__':
    main()

根据实际测试效果,方法二响应效率更高。


「 文章如果对你有帮助,请点个赞哦^^ 」 

0