installation
==============
npm -g install port-scanner


API
==============

function scanPorts(ip, checkFirewall, startPort:=1, endPort:=65535, option)

option

* logStepCount : at this multiple of number, scanner will print the progress info
* namedPorts : port to name(comment) map, used to show result with remarks


example
==============

```
var scanPorts = require('port-scanner')
	;
scanPorts('noradle.com', false, 8000, 9000, {
  logStepCount : 0,
  namedPorts : {
    80 : 'noradle main website',
    443 : 'noradle main website (https)',

    81 : 'noradle test main website',
    444 : 'noradle test main website (https)',

    8010 : 'psp oracle (test)',
    8011 : 'file http (test)',
    8012 : 'sms oracle(test)',
    8013 : 'sms proxy(p2p) (test)',
    8014 : 'sms proxy(simple) (test)',
    8015 : 'sms proxy(bulk) (test)',
    8016 : 'IM http (test)',
    8017 : 'evac http test',
    8018 : 'exthub oracle (test)',
    8019 : 'IM oracle (test)',
    8021 : 'psp http (test)',
    9008 : 'telen http test',

    8000 : 'psp oracle (prod)',
    8001 : 'file http (prod)',
    8002 : 'sms oracle(prod)',
    8003 : 'sms proxy(p2p) (prod)',
    8004 : 'sms proxy(simple) (prod)',
    8005 : 'sms proxy(bulk) (prod)',
    8006 : 'IM http (prod)',
    8007 : 'evac http prod',
    8008 : 'exthub oracle (prod)',
    8009 : 'IM oracle (prod)',
    8020 : 'psp http (prod)',
    9003 : 'telen http prod'
  }});
```

attacker
==========

如果想要被攻击服务进程数满锁死，就connect该服务的端口，并且不发送数据。
如果对方服务器在接受新的 socket 连接后启动新的服务进程或线程，那么很快它就会到达最大进程数或最大线程数，从而 hung 死，拒绝接受新的请求。

Coyote框架 可能不会在请求发完前就生成新的线程。

如果对方是 ngix/nodejs 的 web server，那么没有形成完整的请求前，是不会调用传统多进程多线程软件的，因此暂时无法攻击他们。
但是，如果对方的 servlet，比如说 java 的，要是有占用进程线程的部分，比如说 sleep 或者调用 db，那么还是可以攻击他们。
如果他们的代码中有延时执行的部分，比如说 sleep 就可以发出大量请求让他们的 sleep 代码的所以大量的线程数进程数。


LAN arp
===========

扫描子网的全部可用IP地址，看看哪些IP可用，哪些IP不可用。
可以使用一台机器占用全部局域网IP地址，进行破坏。

todo
-----
* give ip/prefix for subnet
* automatically get / page, show header "server","x-powered-by" and html "title"