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

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}")

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}"

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)

}

java

import java.io.IOException;

import java.net.Socket;

import java.util.ArrayList;

import java.util.List;

public class PortScanner {

public static List scanPorts(String host, int startPort, int endPort) {

List 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 openPorts = scanPorts(host, 1, 1024);

System.out.println("Open ports on " + host + ": " + openPorts);

}

}

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。