Skip to content

a opensource, asynchronized, napi-based, business friendly tuntap device addon for nodejs.

License

Notifications You must be signed in to change notification settings

xiaobaidadada/node-tuntap2-wintun

 
 

Repository files navigation

node-tuntap2-wintun

The fork supporting WinTun for node-tuntap2.

a opensource, asynchronized, napi-based, business friendly tuntap device driver addon for nodejs.

install

npm install @xiaobaidadada/node-tuntap2-wintun

// widnwos 
const {Wintun} = require("@xiaobaidadada/node-tuntap2-wintun")

const p2 = Wintun.get_wintun_dll_path(); // dll downloaded from https://www.wintun.net/
Wintun.wintunSetPath(p2);
Wintun.wintunInit();
Wintun.wintunSetIpv4("tuntap2","10.6.7.7",24);
Wintun.wintunUpOn((buf)=>{
    // 解析 IP 头部
    const version = buf[0] >> 4;
    const headerLength = (buf[0] & 0x0f) * 4;
    const protocol = buf[9];
    if (version !== 4) {
        console.log('不是 IPv4');
        return;
    }
    const sourceIP = buf.slice(12, 16).join('.');
    const destIP = buf.slice(16, 20).join('.');
    console.log(`Source IP: ${sourceIP}`);
    console.log(`Destination IP: ${destIP}`);

    // console.log("数据:"+buf);
});
// Wintun.wintunSend(sessionHandle,buffer);
// linux
const {Tun, Tap} = require('@xiaobaidadada/node-tuntap2-wintun');

try {
    const tun = new Tun();
    tun.mtu = 1400;
    tun.ipv4 = '10.0.0.100/24';
    tun.ipv6 = 'abcd:1:2:3::/64';
    tun.on('data', (buf) => {
        console.log('received:', buf);
    })
    tun.isUp = true;
    console.log(`created tun: ${tun.name}, ip: ${tun.ipv4}, ${tun.ipv6}, mtu: ${tun.mtu}`);
    tun.release();

}
catch(e) {
	console.log('error: ', e);
	process.exit(0);
}

Note: 目前仅支持linux和windows ;本项目使用了预构建,建议使用Node18,不需要编译而是从github下载编译好的文件,如果你电脑上的网络安装的时候无法访问github则会退化成编译。请安装项目中devDependencies依赖,在windows上编译可能遇到的问题可以参考这个链接https://blog.csdn.net/jjocwc/article/details/134152602

Note: windows requires wintun.dll If you do not trust this project Wintun.get_wintun_dll_path() provided dll can be downloaded to https://www.wintun.net/

About

a opensource, asynchronized, napi-based, business friendly tuntap device addon for nodejs.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 45.5%
  • C++ 35.2%
  • C 14.6%
  • JavaScript 2.7%
  • Python 2.0%