Node nmap: Scan a network for computers using nmap

Recommend this page to a friend!
     
  Info   Example   View files Files   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 200 All time: 249 This week: 1Up
Version License JavaScript version Categories
node-libnmap 0.2.53MIT/X Consortium ...1.0Node.js, Security
Description 

Author

This is a Node.js module that can scan a network for computers using nmap.

It uses the nmap program to either discover local computers in the same network address range or scan a network of remote computers within a given range.

It outputs a listing of details computers found including IP addresses as well opened ports that were found.

Innovation Award
JavaScript Programming Innovation award winner
January 2014
Winner


Prize: One book of choice by Packt
nmap is a popular security tool for scanning networks and computers.

This is a Node.js module that can invoke the nmap program to perform security scans from JavaScript code.

Manuel Lemos
Picture of Jason Gerfen
  Performance   Level  
Name: Jason Gerfen <contact>
Classes: 7 packages by
Country: United States United States
Age: 49
All time rank: 122 in United States United States
Week rank: 6 Up2 in United States United States Equal
Innovation award
Innovation award
Nominee: 4x

Winner: 2x

Example

/*! * libnmap * Copyright(c) 2013-2019 Jason Gerfen <jason.gerfen@gmail.com> * License: MIT */ 'use strict' const nmap = require('../'); const opts = { timeout: 900, // 900s = 15m and increases the reliability of scan results flags: [ '-T0', // Paranoid scan type; very slow but accurate '--max-retries 10', // Don't give up on slow responding hosts '--ttl 200ms', // Accomodate for slow connections by setting the packets TTL value higher '--scan-delay 10s', // Account for host 'rate limiting' '--max-rate 30', // Slows down packet spewing to account for IDS protections ], range: ['scanme.nmap.org', '172.17.0.0/24'], }; nmap.scan(opts, function(err, report) { if (err) throw new Error(err); for (let item in report) { console.log(JSON.stringify(report[item], null, 2)); } });

Details

# libnmap API to access nmap from node.js [![npm](https://img.shields.io/npm/v/libnmap.svg)](https://npmjs.com/package/libnmap) [![Build Status](https://travis-ci.org/jas-/node-libnmap.png?branch=master)](https://travis-ci.org/jas-/node-libnmap) [![Dependencies](https://img.shields.io/david/jas-/node-libnmap.svg)](https://david-dm.org/jas-/node-libnmap) ![Downloads](https://img.shields.io/npm/dm/libnmap.svg) [![Known Vulnerabilities](https://snyk.io/test/github/jas-/node-libnmap/badge.svg?targetFile=package.json)](https://snyk.io/test/github/jas-/node-libnmap?targetFile=package.json) ## install ## To install `npm install libnmap` ## methods ## * `scan` Performs scan given available range & optional port * `discover` Retrieves list of online network neighbors ## options ## * `nmap` {String} Path to NMAP binary * `verbose` {Boolean} Turn on verbosity during scan(s) * `ports` {String} Range of ports to scan * `range` {Array} An array of hostnames/ipv4/ipv6, CIDR or ranges * `timeout` {Number} Number of seconds to wait for host/port response * `blocksize` {Number} Number of hosts per network scanning block * `threshold` {Number} Max number of spawned process * `flags` {Array} Array of flags for .spawn() * `udp` {Boolean} UDP scan mode enabled * `json` {Boolean} JSON object as output, false produces XML ## tests ## To test `npm test` ## examples ## A default usage example. For more advanced and possible options please see [here](https://github.com/jas-/node-libnmap/tree/master/examples) or simply look in the included `examples/` folder. ### scan ### The example show shows the types of host ranges supported. In this example the default IANA range of reserved ports is scanned per host in each range (1024). ```javascript const nmap = require('libnmap'); const opts = { range: [ 'scanme.nmap.org', '10.0.2.0/25', '192.168.10.80-120', 'fe80::42:acff:fe11:fd4e/64' ] }; nmap.scan(opts, function(err, report) { if (err) throw new Error(err); for (let item in report) { console.log(JSON.stringify(report[item])); } }); ``` ### discover ### The discover method requires nodejs < `v0.11.2` and can be used to aquire information about neighbors per network interface. ```javascript const nmap = require('libnmap'); nmap.discover(function(err, report) { if (err) throw new Error(err); for (let item in report) { console.log(JSON.stringify(report[item])); } }); ``` ### sample reports ### To see some output examples please take a look at the [json (default) & xml reports](https://gist.github.com/jas-/23e2a32110562388bef5). ## contributing ## Contributions are welcome & appreciated. Refer to the [contributing document](https://github.com/jas-/node-libnmap/blob/master/CONTRIBUTING.md) to help facilitate pull requests. ## license ## This software is licensed under the [MIT License](https://github.com/jas-/node-libnmap/blob/master/LICENSE). Copyright Jason Gerfen, 2013-2019.

  Files folder image Files (28)  
File Role Description
Files folder imageexamples (12 files)
Files folder imagelib (1 file, 1 directory)
Files folder imagetest (2 files)
Accessible without login Plain text file .gitignore Data Auxiliary data
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file CHANGELOG Data Auxiliary data
Accessible without login Plain text file CONTRIBUTING.md Data Auxiliary data
Accessible without login Plain text file index.js Aux. Application script
Accessible without login Plain text file LICENSE Lic. Auxiliary data
Accessible without login Plain text file package.json Data Auxiliary data
Accessible without login Plain text file README.md Doc. Auxiliary data
Accessible without login Plain text file _config.yml Data Auxiliary data

  Files folder image Files (28)  /  examples  
File Role Description
  Accessible without login Plain text file accuracy.js Example Example script
  Accessible without login Plain text file blocksize.js Example Example script
  Accessible without login Plain text file default.js Example Example script
  Accessible without login Plain text file default2io.js Example Example script
  Accessible without login Plain text file discover.js Example Example script
  Accessible without login Plain text file flags.js Example Example script
  Accessible without login Plain text file ipv6.js Example Example script
  Accessible without login Plain text file ports.js Example Example script
  Accessible without login Plain text file threshold.js Example Example script
  Accessible without login Plain text file timeout.js Example Example script
  Accessible without login Plain text file udp.js Example Example script
  Accessible without login Plain text file xml.js Example Example script

  Files folder image Files (28)  /  lib  
File Role Description
Files folder imageclasses (4 files)
  Plain text file libnmap.js Class Class source

  Files folder image Files (28)  /  lib  /  classes  
File Role Description
  Plain text file networking.js Class Class source
  Plain text file reporting.js Class Class source
  Plain text file tools.js Class Class source
  Plain text file validation.js Class Class source

  Files folder image Files (28)  /  test  
File Role Description
  Accessible without login Plain text file discover.js Example Example script
  Accessible without login Plain text file scan.js Example Example script

 Version Control Unique User Downloads Download Rankings  
 100%
Total:200
This week:0
All time:249
This week:1Up