此处记录一些NodeJS学习过程中的笔记,并非是完整的入门教程,入门教程可以参照菜鸟教程
net模块
net模块用于tcp请求的客户端与服务端创建,在渗透测试的脚本编写中起着很重要的作用
client
加载net模块
1
| var net = require('net');
|
连接到指定地址
注意此时执行完此条代码将会直接发起连接,连接成功将会调用回调函数
1 2 3
| var client = net.connect({host:"192.168.100.3",port:6666},function(){ console.log("连接到服务器") })
|
绑定数据接收回调函数
这里需要注意,由于网络数据包长度限制,在数据接收中可能会将数据包进行分包传输,因此如果需要进行大数据量的传输,需要在接收回调函数中设计一个接收缓冲区,将接收数据进行拼接。
1 2 3
| client.on("data",function(data){ console.log(data) })
|
绑定连接断开回调函数
1 2 3
| client.on("finish",function(){ console.log('与服务器断开连接') })
|
server
加载net模块
1
| var net = require('net');
|
绑定连接传入回调事件
注意在此处先行进行了对于客户端接入的回调处理函数,因为后续一旦调用了listen函数,将会直接开启监听。当执行完当前函数,将会直接回传此监听事件的对象
1 2 3 4 5 6 7 8 9 10 11
| var server = net.createServer(function(cli_sock){ console.log("客户端设备接入") cli_sock.on("finish",function(){ console.log("客户端断开连接") }) cli_sock.write('Hello World!\r\n'); cli_sock.pipe(cli_sock); cli_sock.on("data",function(data){ console.log(data.toString()) }) })
|
上述代码会在客户端接入时,绑定客户端对应连接cli_sock的finish事件,并向客户端发送’Hello World!\r\n’,随后通过pipe直接将套接字cli_sock的输入直接定向到输出,最后绑定data事件,在接收到客户端消息时打印消息
开启监听
1 2 3
| server.listen(8080, function() { console.log('server is listening'); });
|
http模块
http客户端
加载http模块
1
| var http = require('http');
|
指定连接请求
1 2 3 4 5 6
| var options = { method: 'GET', host: 'www.baidu.com', port: '80', path: '/' };
|
设置回调函数
1 2 3 4 5 6 7 8 9 10 11 12
| var callback = function(response){ var body = ''; response.on('data', function(data) { body += data; }); response.on('end', function() { console.log(body); }); }
|
发起请求
1 2 3 4 5
| var req = http.request(options, callback); req.end();
或者直接 http.request(options, callback).end();
|
child_process模块
执行系统命令
最简洁不带回显
1
| require("child_process").exec("ipconfig")
|
最简洁带回显
1
| require("child_process").exec("ipconfig",function(err,stdout,stderr){console.log(stdout)})
|
正常使用
1 2 3 4
| var exec = require("child_process").exec; require("child_process").exec("ipconfig",function(err,stdout,stderr){ console.log(stdout) })
|
数据库连接
MySQL
安装依赖包mysql
连接数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', database : 'test' }); connection.connect(); connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); });
|
其他所有增删改查都依赖于函数
因此不再做更多的赘述。
MongoDB
安装依赖包mongodb
SQLite3
1 2 3 4 5 6 7 8
| const sqlite3 = require("sqlite3") var db = new sqlite3.Database("./nekodb.db",sqlite3.OPEN_READONLY) db.all(sql_js, function(err,res){ if(res != undefined && res.length>0) callback(err,res) else callback(0,[]) })
|