首页 > 编程语言 >利用Python实现批量获取端口Banner的工具

利用Python实现批量获取端口Banner的工具

时间:2023-03-08 20:14:33浏览次数:39  
标签:__ target Python banner self 端口 print Banner port

主要用到的模块包括:

  •   Socket 通讯模块
  •   threading多线程模块
  •   ipaddress ip地址模块
  •   optparse 命令行参数处理模块
 

import socket
import sys
import optparse
import ipaddress
import threading

 

class BannerGrab:
def __init__(self) -> None:
self.target = self.get_params()

def get_params(self):
parser = optparse.OptionParser('Usage: <Program> -t target ')
parser.add_option('-t','--target', dest='target', type='string', help='Specify target IP address')
options, args = parser.parse_args()
if options.target is None:
print(parser.usage)
sys.exit(0)
try:
ipaddress.ip_address(options.target) #判断用户输入的IP地址是否合法,如果不是,则退出程序
except:
print('[-] Please enter IP address')
sys.exit(0)

return options.target

def banner_grab(self, port):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
s.connect((self.target, port))
banner = s.recv(1024).decode('utf-8')
print("Port %d is open \t %s" % (port, banner))
except:
pass                  #如果连接出错,则表明端口关闭等,直接忽略即可

def run(self):
try:
for port in range(1,65535):
t = threading.Thread(target=self.banner_grab, args=(port, ))
t.start()

except KeyboardInterrupt:
print("[-] Exit the program now!")
sys.exit(0)

if __name__ == "__main__":
banner = BannerGrab()
banner.run()

标签:__,target,Python,banner,self,端口,print,Banner,port
From: https://www.cnblogs.com/websec80/p/17195919.html

相关文章

  • python的基本认识
    python的基本认识 初识python:python是一种跨平台的、开源的、免费的、解释型的高级编程语言;python的应用领域十分广泛、如web编程、图像处理、黑客编程、网络爬虫和......
  • 实验1 python开发环境使用和编程初体验
    #task1_1.pyprint('hey,u')print('hey','u')x,y,z=1,2,3print(x,y,z)print('x=%d,y=%d,z=%d'%(x,y,z))print('x={},y={},z={}'.format(x,......
  • python 提取列表元素打印不带中括号
    目录python提取列表元素打印不带中括号python提取列表元素打印不带中括号有个需求,需要对python3的列表切片,获取得到用户名后和手动输入的用户名比对,如果一致就打印true......
  • Python实战项目-9 Redis/celery-基础使用
    Redis介绍与安装Redis->缓存数据库【大部分时间用来做缓存,不仅仅可以做缓存】也是称为非关系型数据库,区别与Mysql关系型数据库-noSql:泛指非关系型数据库,notonlySql......
  • 1. python+Django开发前的程序环境搭建
    程序环境的搭建1.Python3.9的安装下载地址:https://www.python.org/downloads/,最好是下载安装版的。安装过程勾选环境变量为了使用pip下载器,在环境变量添加Pyth......
  • Python第六天
    append()在列表的末尾添加一个元素extend()在列表的末尾为至少添加一个元素insert()在列表的任意位置添加一个元素remove()一次删除一个元素,重复元素只删除第一个 pop()......
  • python单例模式处理多线程问题
    #单例模式处理多线程的问题importthreadingimporttimeclassSingle:instance=Nonedef__init__(self,name):self.name=namedef__new__(cls,......
  • python FastAPI sqlalchemy 数据库模型基类通用模型
    作用用于所有表都需要使用的字段或者方法实现代码base.py#!/usr/bin/python#-*-coding:utf-8-*-#@time:2023/2/1317:43#@author:pugongying#@de......
  • python 通过API操作阿里云oss
    catpython_oss.py#!/usr/bin/python#-*-coding:utf-8-*-#@time:2023/2/2314:29#@author:pugongying#@description:#pipinstallalibabacloud_os......
  • python 生成器
    生成器生成器是用来生成数据的一个办法yield关键字yield相当于是return,当函数运行到这里之后会暂停,并且返回后面的变量给调用的位置yield是没有返回值的,所以num=yie......