websec80

  博客园  :: 首页  :: 新随笔  :: 联系 ::  :: 管理
  97 随笔 :: 50 文章 :: 3 评论 :: 14万 阅读

主要用到的模块包括:

  •   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()

复制代码
posted on   websec80  阅读(101)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示