aiqianqian 发表于 2019-6-18 17:41

python实现端口扫描low版本

本帖最后由 wushaominkk 于 2019-6-18 21:36 编辑

一次偶然的机会:写一个脚本 扫描主机端口 low

代码如下:
#! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import socket

# 端口扫描py脚本<主机>,开始端口至末尾端口

class scan():
   
    #定义打开、关闭的端口list
    host_port_open = list()
    host_port_close = list()

    def __init__(self, host_str, start_port, end_port):
      self.host_str = host_str
      self.start_port = int(start_port)
      self.end_port = int(end_port)

    def main_head(self):
      ## 遍历 用户传入的参数 起止端口
      for tmp in range(self.start_port, self.end_port):
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            try:
                # 如果检测端口打开,则执行
                s.connect((self.host_str, tmp))
                s.shutdown(2)
                print('%s:%d is open ' % (self.host_str, tmp))
                #host_port_open.append("%s %s open" % (self.host_str, tmp))
                #print("list %s"%host_port_open)
            except:
                # 如果检测端口关闭,则执行
                print('%s:%d is close ' % (self.host_str, tmp))
                #host_port_close.append(" %s %s close" % (self.host_str, tmp))
                #print("list %s" %host_port_close)


def main():
    # 获取用户输入的字符长度
    if len(sys.argv) == 4:
      ## 捕获异常
      try:
            host_ip = sys.argv
            start_port = int(sys.argv)
            end_port = int(sys.argv)

      except Exception as ret:
            print("端口输入错误。。。。。")
            return
    else:
      print("请按照以下方式运行:")
      print("python3 xxxx.py host_ip start_port end_port")
      return

    # 打印传入的参数
    print(host_ip, start_port, end_port)
    ## 执行 scan 类,传入参数
    scaning = scan(host_ip, start_port, end_port)
    # 执行scan类 main_head 方法
    scaning.main_head()


if __name__ == "__main__":
    main()


使用方法python xxx.py ip 起端口 结尾端口
例如: python 脚本名称.py 192.168.1.1 20 80 扫描主机192.168.1.1 20-80端口
闲的无聊,勿喷!

cyhcuichao 发表于 2019-6-18 18:20

学习了谢谢楼主

天使3号 发表于 2019-6-18 18:46

不错哦,感谢分享!{:1_899:}

skye_hell 发表于 2020-7-21 14:16

哈哈提示那里 你可以用optparse模块来写

Snowz 发表于 2020-7-21 14:28

可以再加上线程池来加快速度。
上次自己写也过一个类似的,
还测试连接上后,获取数据来判断端口情况。
还要设置timeout等。
页: [1]
查看完整版本: python实现端口扫描low版本