• python、ruby、go、java写的端口扫描工具


    编写的简单端口扫描器的示例代码

    python

    import socket
    
    def scan_ports(host, port_range):
        open_ports = []
        for port in range(*port_range):
            with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
                s.settimeout(1)
                if s.connect_ex((host, port)) == 0:
                    open_ports.append(port)
        return open_ports
    
    host = "127.0.0.1"
    port_range = (1, 1025)
    open_ports = scan_ports(host, port_range)
    print(f"Open ports on {host}: {open_ports}")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    ruby

    require 'socket'
    require 'timeout'
    
    def scan_ports(host, port_range)
      open_ports = []
      port_range.each do |port|
        begin
          Timeout::timeout(1) do
            TCPSocket.new(host, port).close
            open_ports << port
          end
        rescue Errno::ECONNREFUSED, Timeout::Error
        end
      end
      open_ports
    end
    
    host = "127.0.0.1"
    port_range = 1..1024
    open_ports = scan_ports(host, port_range)
    puts "Open ports on #{host}: #{open_ports}"
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    go

    package main
    
    import (
        "fmt"
        "net"
        "strconv"
        "time"
    )
    
    func scanPort(host string, port int) bool {
        address := host + ":" + strconv.Itoa(port)
        conn, err := net.DialTimeout("tcp", address, time.Second)
        if err != nil {
            return false
        }
        defer conn.Close()
        return true
    }
    
    func main() {
        host := "127.0.0.1"
        var openPorts []int
        for port := 1; port <= 1024; port++ {
            if scanPort(host, port) {
                openPorts = append(openPorts, port)
            }
        }
        fmt.Printf("Open ports on %s: %v\n", host, openPorts)
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    java

    import java.io.IOException;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.List;
    
    public class PortScanner {
        public static List<Integer> scanPorts(String host, int startPort, int endPort) {
            List<Integer> openPorts = new ArrayList<>();
            for (int port = startPort; port <= endPort; port++) {
                try (Socket socket = new Socket(host, port)) {
                    openPorts.add(port);
                } catch (IOException ignored) {
                }
            }
            return openPorts;
        }
    
        public static void main(String[] args) {
            String host = "127.0.0.1";
            List<Integer> openPorts = scanPorts(host, 1, 1024);
            System.out.println("Open ports on " + host + ": " + openPorts);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    第10讲:DQL数据查询语句之LIMIT分页查询示例
    torch VS tensorflow 同功能的api
    GPT会统治人类吗
    C语言基于AVL树实现简单的文件数据库
    MNN编译
    【无标题】
    算法(三)
    vite为路径设置别名
    华为机试真题 C++ 实现【迷宫问题】
    python RPC框架
  • 原文地址:https://blog.csdn.net/sinat_17584329/article/details/136327902