khanzajir1212-netizen/portScannerLite.js
GitHub: khanzajir1212-netizen/portScannerLite.js
一个基于 Node.js 的轻量级 TCP 端口扫描器,通过异步检测常见服务端口的开放状态来演示网络侦察基础知识。
Stars: 0 | Forks: 0
# portScannerLite.js
portScannerLite.js 一个轻量级的 TCP 端口扫描器,它异步检查目标主机的常见开放端口(FTP、SSH、Telnet、SMTP、DNS、HTTP、HTTPS、RDP)。它使用 Node 内置的 net 模块结合 socket 超时来确定端口状态,演示了网络侦察的基础知识。仅供授权测试使用。
// portScannerLite.js
// 检查目标主机上的常见 TCP 端口是否开放。
// 仅供教育用途 — 请仅扫描您拥有或获得测试权限的主机。
const net = require("net");
const COMMON_PORTS = {
21: "FTP", 22: "SSH", 23: "Telnet", 25: "SMTP",
53: "DNS", 80: "HTTP", 443: "HTTPS", 3389: "RDP",
};
function checkPort(host, port, timeout = 1000) {
return new Promise((resolve) => {
const socket = new net.Socket();
socket.setTimeout(timeout);
```
socket.on("connect", () => {
socket.destroy();
resolve({ port, open: true });
});
socket.on("timeout", () => {
socket.destroy();
resolve({ port, open: false });
});
socket.on("error", () => {
resolve({ port, open: false });
});
socket.connect(port, host);
```
});
}
async function scan(host) {
console.log(`正在扫描 ${host}...\n`);
const results = await Promise.all(
Object.keys(COMMON_PORTS).map((p) => checkPort(host, parseInt(p)))
);
results.forEach(({ port, open }) => {
const status = open ? "开放" : "关闭";
console.log(`端口 ${port} (${COMMON_PORTS[port]}): ${status}`);
});
}
const target = process.argv[2];
if (!target) {
console.log("用法: node portScannerLite.js ");
console.log("示例: node portScannerLite.js scanme.nmap.org");
} else {
scan(target);
}
标签:GNU通用公共许可证, MITM代理, Node.js, TCP/IP, 异步编程, 插件系统, 数据可视化, 数据统计, 端口扫描, 网络工具