编写的简单端口扫描器的示例代码
python
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
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
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
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);
}
}