📜  本地网络扫描 - Javascript (1)

📅  最后修改于: 2023-12-03 15:26:32.557000             🧑  作者: Mango

本地网络扫描 - Javascript

介绍

在计算机网络中,扫描是指在指定的 IP 地址和端口范围内寻找开放的目标主机。本地网络扫描是指在本地网络范围内进行扫描,通常用于检测本地网络中的活动主机和开放端口。本文将使用 Javascript 编写一个本地网络扫描工具。

实现

我们将使用 node.jsdgram 模块来实现 UDP 扫描。UDP 是一种无连接的传输协议,它提供了对数据报文的非可靠传输。我们将向本地网络中的每个 IP 地址发送一个 UDP 数据报文,如果接收方未能响应,则说明该 IP 地址空闲。

代码如下:

const dgram = require('dgram');

function scanLocalNetwork(start, end) {
  const socket = dgram.createSocket('udp4');
  const results = [];

  for (let i = start; i <= end; i++) {
    const address = `192.168.1.${i}`;

    socket.send(Buffer.from('Hello'), 0, 5, 1234, address);

    socket.on('message', (message, rinfo) => {
      results.push(address);
    });
  }

  socket.on('listening', () => {
    socket.setBroadcast(true);
  });

  setTimeout(() => {
    socket.close();
    console.log(`Results: ${results.join(', ')}`);
  }, 1000);
}

scanLocalNetwork(1, 254);

此代码使用 dgram.createSocket 创建一个 udp4 类型的 socket 对象。然后,它循环遍历指定的 IP 地址范围,并将 Hello 数据报文发送到每个 IP 地址的 1234 端口。如果接收方收到该数据报文,则将该 IP 地址添加到结果数组中。最后,它在 1000 毫秒后关闭 socket 并输出结果。

总结

本文介绍了使用 Javascript 编写一个本地网络扫描工具的方法。我们使用 node.jsdgram 模块和 UDP 协议实现了本地网络的快速扫描,并输出扫描结果。您可以根据需要修改代码来适应您的应用程序。