Created
April 6, 2016 08:13
-
-
Save chu1337/bceb5a9d27ac7056081ea90639855cf6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env node | |
| var net = require("net"); | |
| var util = require("util"); | |
| var commander = require("commander"); | |
| var Bagpipe = require("bagpipe"); | |
| var Netmask = require("netmask").Netmask; | |
| var Q = require("q"); | |
| var FS = require("q-io/fs"); | |
| var PORTS = [ | |
| 1, | |
| 3, | |
| 4, | |
| 6, | |
| 7, | |
| 9, | |
| 13, | |
| 17, | |
| 19, | |
| 20, | |
| 21, | |
| 22, | |
| 23, | |
| 24, | |
| 25, | |
| 26, | |
| 30, | |
| 32, | |
| 33, | |
| 37, | |
| 42, | |
| 43, | |
| 49, | |
| 53, | |
| 70, | |
| 79, | |
| 80, | |
| 81, | |
| 82, | |
| 83, | |
| 84, | |
| 85, | |
| 88, | |
| 89, | |
| 90, | |
| 99, | |
| 100, | |
| 106, | |
| 109, | |
| 110, | |
| 111, | |
| 113, | |
| 119, | |
| 125, | |
| 135, | |
| 139, | |
| 143, | |
| 144, | |
| 146, | |
| 161, | |
| 163, | |
| 179, | |
| 199, | |
| 211, | |
| 212, | |
| 222, | |
| 254, | |
| 255, | |
| 256, | |
| 259, | |
| 264, | |
| 280, | |
| 301, | |
| 306, | |
| 311, | |
| 340, | |
| 366, | |
| 389, | |
| 406, | |
| 407, | |
| 416, | |
| 417, | |
| 425, | |
| 427, | |
| 443, | |
| 444, | |
| 445, | |
| 458, | |
| 464, | |
| 465, | |
| 481, | |
| 497, | |
| 500, | |
| 512, | |
| 513, | |
| 514, | |
| 515, | |
| 524, | |
| 541, | |
| 543, | |
| 544, | |
| 545, | |
| 548, | |
| 554, | |
| 555, | |
| 563, | |
| 587, | |
| 593, | |
| 616, | |
| 617, | |
| 625, | |
| 631, | |
| 636, | |
| 646, | |
| 648, | |
| 666, | |
| 667, | |
| 668, | |
| 683, | |
| 687, | |
| 691, | |
| 700, | |
| 705, | |
| 711, | |
| 714, | |
| 720, | |
| 722, | |
| 726, | |
| 749, | |
| 765, | |
| 777, | |
| 783, | |
| 787, | |
| 800, | |
| 801, | |
| 808, | |
| 843, | |
| 873, | |
| 880, | |
| 888, | |
| 898, | |
| 900, | |
| 901, | |
| 902, | |
| 903, | |
| 911, | |
| 912, | |
| 981, | |
| 987, | |
| 990, | |
| 992, | |
| 993, | |
| 995, | |
| 999, | |
| 1000, | |
| 1001, | |
| 1002, | |
| 1007, | |
| 1009, | |
| 1010, | |
| 1011, | |
| 1021, | |
| 1022, | |
| 1023, | |
| 1024, | |
| 1025, | |
| 1026, | |
| 1027, | |
| 1028, | |
| 1029, | |
| 1030, | |
| 1031, | |
| 1032, | |
| 1033, | |
| 1034, | |
| 1035, | |
| 1036, | |
| 1037, | |
| 1038, | |
| 1039, | |
| 1040, | |
| 1041, | |
| 1042, | |
| 1043, | |
| 1044, | |
| 1045, | |
| 1046, | |
| 1047, | |
| 1048, | |
| 1049, | |
| 1050, | |
| 1051, | |
| 1052, | |
| 1053, | |
| 1054, | |
| 1055, | |
| 1056, | |
| 1057, | |
| 1058, | |
| 1059, | |
| 1060, | |
| 1061, | |
| 1062, | |
| 1063, | |
| 1064, | |
| 1065, | |
| 1066, | |
| 1067, | |
| 1068, | |
| 1069, | |
| 1070, | |
| 1071, | |
| 1072, | |
| 1073, | |
| 1074, | |
| 1075, | |
| 1076, | |
| 1077, | |
| 1078, | |
| 1079, | |
| 1080, | |
| 1081, | |
| 1082, | |
| 1083, | |
| 1084, | |
| 1085, | |
| 1086, | |
| 1087, | |
| 1088, | |
| 1089, | |
| 1090, | |
| 1091, | |
| 1092, | |
| 1093, | |
| 1094, | |
| 1095, | |
| 1096, | |
| 1097, | |
| 1098, | |
| 1099, | |
| 1100, | |
| 1102, | |
| 1104, | |
| 1105, | |
| 1106, | |
| 1107, | |
| 1108, | |
| 1110, | |
| 1111, | |
| 1112, | |
| 1113, | |
| 1114, | |
| 1117, | |
| 1119, | |
| 1121, | |
| 1122, | |
| 1123, | |
| 1124, | |
| 1126, | |
| 1130, | |
| 1131, | |
| 1132, | |
| 1137, | |
| 1138, | |
| 1141, | |
| 1145, | |
| 1147, | |
| 1148, | |
| 1149, | |
| 1151, | |
| 1152, | |
| 1154, | |
| 1163, | |
| 1164, | |
| 1165, | |
| 1166, | |
| 1169, | |
| 1174, | |
| 1175, | |
| 1183, | |
| 1185, | |
| 1186, | |
| 1187, | |
| 1192, | |
| 1198, | |
| 1199, | |
| 1201, | |
| 1213, | |
| 1216, | |
| 1217, | |
| 1218, | |
| 1233, | |
| 1234, | |
| 1236, | |
| 1244, | |
| 1247, | |
| 1248, | |
| 1259, | |
| 1271, | |
| 1272, | |
| 1277, | |
| 1287, | |
| 1296, | |
| 1300, | |
| 1301, | |
| 1309, | |
| 1310, | |
| 1311, | |
| 1322, | |
| 1328, | |
| 1334, | |
| 1352, | |
| 1417, | |
| 1433, | |
| 1434, | |
| 1443, | |
| 1455, | |
| 1461, | |
| 1494, | |
| 1500, | |
| 1501, | |
| 1503, | |
| 1521, | |
| 1524, | |
| 1533, | |
| 1556, | |
| 1580, | |
| 1583, | |
| 1594, | |
| 1600, | |
| 1641, | |
| 1658, | |
| 1666, | |
| 1687, | |
| 1688, | |
| 1700, | |
| 1717, | |
| 1718, | |
| 1719, | |
| 1720, | |
| 1721, | |
| 1723, | |
| 1755, | |
| 1761, | |
| 1782, | |
| 1783, | |
| 1801, | |
| 1805, | |
| 1812, | |
| 1839, | |
| 1840, | |
| 1862, | |
| 1863, | |
| 1864, | |
| 1875, | |
| 1900, | |
| 1914, | |
| 1935, | |
| 1947, | |
| 1971, | |
| 1972, | |
| 1974, | |
| 1984, | |
| 1998, | |
| 1999, | |
| 2000, | |
| 2001, | |
| 2002, | |
| 2003, | |
| 2004, | |
| 2005, | |
| 2006, | |
| 2007, | |
| 2008, | |
| 2009, | |
| 2010, | |
| 2013, | |
| 2020, | |
| 2021, | |
| 2022, | |
| 2030, | |
| 2033, | |
| 2034, | |
| 2035, | |
| 2038, | |
| 2040, | |
| 2041, | |
| 2042, | |
| 2043, | |
| 2045, | |
| 2046, | |
| 2047, | |
| 2048, | |
| 2049, | |
| 2065, | |
| 2068, | |
| 2099, | |
| 2100, | |
| 2103, | |
| 2105, | |
| 2106, | |
| 2107, | |
| 2111, | |
| 2119, | |
| 2121, | |
| 2126, | |
| 2135, | |
| 2144, | |
| 2160, | |
| 2161, | |
| 2170, | |
| 2179, | |
| 2190, | |
| 2191, | |
| 2196, | |
| 2200, | |
| 2222, | |
| 2251, | |
| 2260, | |
| 2288, | |
| 2301, | |
| 2323, | |
| 2366, | |
| 2381, | |
| 2382, | |
| 2383, | |
| 2393, | |
| 2394, | |
| 2399, | |
| 2401, | |
| 2492, | |
| 2500, | |
| 2522, | |
| 2525, | |
| 2557, | |
| 2601, | |
| 2602, | |
| 2604, | |
| 2605, | |
| 2607, | |
| 2608, | |
| 2638, | |
| 2701, | |
| 2702, | |
| 2710, | |
| 2717, | |
| 2718, | |
| 2725, | |
| 2800, | |
| 2809, | |
| 2811, | |
| 2869, | |
| 2875, | |
| 2909, | |
| 2910, | |
| 2920, | |
| 2967, | |
| 2968, | |
| 2998, | |
| 3000, | |
| 3001, | |
| 3003, | |
| 3005, | |
| 3006, | |
| 3007, | |
| 3011, | |
| 3013, | |
| 3017, | |
| 3030, | |
| 3031, | |
| 3052, | |
| 3071, | |
| 3077, | |
| 3128, | |
| 3168, | |
| 3211, | |
| 3221, | |
| 3260, | |
| 3261, | |
| 3268, | |
| 3269, | |
| 3283, | |
| 3300, | |
| 3301, | |
| 3306, | |
| 3322, | |
| 3323, | |
| 3324, | |
| 3325, | |
| 3333, | |
| 3351, | |
| 3367, | |
| 3369, | |
| 3370, | |
| 3371, | |
| 3372, | |
| 3389, | |
| 3390, | |
| 3404, | |
| 3476, | |
| 3493, | |
| 3517, | |
| 3527, | |
| 3546, | |
| 3551, | |
| 3580, | |
| 3659, | |
| 3689, | |
| 3690, | |
| 3703, | |
| 3737, | |
| 3766, | |
| 3784, | |
| 3800, | |
| 3801, | |
| 3809, | |
| 3814, | |
| 3826, | |
| 3827, | |
| 3828, | |
| 3851, | |
| 3869, | |
| 3871, | |
| 3878, | |
| 3880, | |
| 3889, | |
| 3905, | |
| 3914, | |
| 3918, | |
| 3920, | |
| 3945, | |
| 3971, | |
| 3986, | |
| 3995, | |
| 3998, | |
| 4000, | |
| 4001, | |
| 4002, | |
| 4003, | |
| 4004, | |
| 4005, | |
| 4006, | |
| 4045, | |
| 4111, | |
| 4125, | |
| 4126, | |
| 4129, | |
| 4224, | |
| 4242, | |
| 4279, | |
| 4321, | |
| 4440, | |
| 4343, | |
| 4443, | |
| 4444, | |
| 4445, | |
| 4446, | |
| 4449, | |
| 4550, | |
| 4567, | |
| 4662, | |
| 4848, | |
| 4899, | |
| 4900, | |
| 4998, | |
| 5000, | |
| 5001, | |
| 5002, | |
| 5003, | |
| 5004, | |
| 5009, | |
| 5030, | |
| 5033, | |
| 5050, | |
| 5051, | |
| 5054, | |
| 5060, | |
| 5061, | |
| 5080, | |
| 5087, | |
| 5100, | |
| 5101, | |
| 5102, | |
| 5120, | |
| 5190, | |
| 5200, | |
| 5214, | |
| 5221, | |
| 5222, | |
| 5225, | |
| 5226, | |
| 5269, | |
| 5280, | |
| 5298, | |
| 5357, | |
| 5405, | |
| 5414, | |
| 5431, | |
| 5432, | |
| 5440, | |
| 5500, | |
| 5510, | |
| 5544, | |
| 5550, | |
| 5555, | |
| 5560, | |
| 5566, | |
| 5631, | |
| 5633, | |
| 5666, | |
| 5678, | |
| 5679, | |
| 5718, | |
| 5730, | |
| 5800, | |
| 5801, | |
| 5802, | |
| 5810, | |
| 5811, | |
| 5815, | |
| 5822, | |
| 5825, | |
| 5850, | |
| 5859, | |
| 5862, | |
| 5877, | |
| 5900, | |
| 5901, | |
| 5902, | |
| 5903, | |
| 5904, | |
| 5906, | |
| 5907, | |
| 5910, | |
| 5911, | |
| 5915, | |
| 5922, | |
| 5925, | |
| 5950, | |
| 5952, | |
| 5959, | |
| 5960, | |
| 5961, | |
| 5962, | |
| 5963, | |
| 5987, | |
| 5988, | |
| 5989, | |
| 5998, | |
| 5999, | |
| 6000, | |
| 6001, | |
| 6002, | |
| 6003, | |
| 6004, | |
| 6005, | |
| 6006, | |
| 6007, | |
| 6009, | |
| 6025, | |
| 6059, | |
| 6082, | |
| 6100, | |
| 6101, | |
| 6106, | |
| 6112, | |
| 6123, | |
| 6129, | |
| 6156, | |
| 6346, | |
| 6379, | |
| 6389, | |
| 6502, | |
| 6510, | |
| 6543, | |
| 6547, | |
| 6565, | |
| 6566, | |
| 6567, | |
| 6580, | |
| 6646, | |
| 6666, | |
| 6667, | |
| 6668, | |
| 6669, | |
| 6689, | |
| 6692, | |
| 6699, | |
| 6779, | |
| 6788, | |
| 6789, | |
| 6792, | |
| 6839, | |
| 6881, | |
| 6901, | |
| 6969, | |
| 7000, | |
| 7001, | |
| 7002, | |
| 7004, | |
| 7007, | |
| 7019, | |
| 7025, | |
| 7070, | |
| 7100, | |
| 7103, | |
| 7106, | |
| 7200, | |
| 7201, | |
| 7402, | |
| 7435, | |
| 7443, | |
| 7496, | |
| 7512, | |
| 7625, | |
| 7627, | |
| 7676, | |
| 7741, | |
| 7777, | |
| 7778, | |
| 7800, | |
| 7911, | |
| 7920, | |
| 7921, | |
| 7937, | |
| 7938, | |
| 7999, | |
| 8000, | |
| 8001, | |
| 8002, | |
| 8007, | |
| 8008, | |
| 8009, | |
| 8010, | |
| 8011, | |
| 8021, | |
| 8022, | |
| 8031, | |
| 8042, | |
| 8045, | |
| 8080, | |
| 8081, | |
| 8082, | |
| 8083, | |
| 8084, | |
| 8085, | |
| 8086, | |
| 8087, | |
| 8088, | |
| 8089, | |
| 8090, | |
| 8093, | |
| 8099, | |
| 8100, | |
| 8180, | |
| 8181, | |
| 8192, | |
| 8193, | |
| 8194, | |
| 8200, | |
| 8222, | |
| 8254, | |
| 8290, | |
| 8291, | |
| 8292, | |
| 8300, | |
| 8333, | |
| 8383, | |
| 8400, | |
| 8402, | |
| 8443, | |
| 8500, | |
| 8600, | |
| 8649, | |
| 8651, | |
| 8652, | |
| 8654, | |
| 8701, | |
| 8800, | |
| 8873, | |
| 8888, | |
| 8899, | |
| 8994, | |
| 9000, | |
| 9001, | |
| 9002, | |
| 9003, | |
| 9009, | |
| 9010, | |
| 9011, | |
| 9040, | |
| 9050, | |
| 9071, | |
| 9080, | |
| 9081, | |
| 9090, | |
| 9091, | |
| 9099, | |
| 9100, | |
| 9101, | |
| 9102, | |
| 9103, | |
| 9110, | |
| 9111, | |
| 9200, | |
| 9207, | |
| 9220, | |
| 9290, | |
| 9415, | |
| 9418, | |
| 9485, | |
| 9500, | |
| 9502, | |
| 9503, | |
| 9527, | |
| 9535, | |
| 9575, | |
| 9593, | |
| 9594, | |
| 9595, | |
| 9618, | |
| 9666, | |
| 9876, | |
| 9877, | |
| 9878, | |
| 9898, | |
| 9900, | |
| 9917, | |
| 9929, | |
| 9943, | |
| 9944, | |
| 9968, | |
| 9998, | |
| 9999, | |
| 10000, | |
| 10001, | |
| 10002, | |
| 10003, | |
| 10004, | |
| 10009, | |
| 10010, | |
| 10012, | |
| 10024, | |
| 10025, | |
| 10082, | |
| 10180, | |
| 10215, | |
| 10243, | |
| 10566, | |
| 10616, | |
| 10617, | |
| 10621, | |
| 10626, | |
| 10628, | |
| 10629, | |
| 10778, | |
| 11110, | |
| 11111, | |
| 11211, | |
| 11967, | |
| 12000, | |
| 12174, | |
| 12265, | |
| 12345, | |
| 13456, | |
| 13722, | |
| 13782, | |
| 13783, | |
| 14000, | |
| 14238, | |
| 14441, | |
| 14442, | |
| 15000, | |
| 15002, | |
| 15003, | |
| 15004, | |
| 15660, | |
| 15742, | |
| 16000, | |
| 16001, | |
| 16012, | |
| 16016, | |
| 16018, | |
| 16080, | |
| 16113, | |
| 16992, | |
| 16993, | |
| 17877, | |
| 17988, | |
| 18040, | |
| 18101, | |
| 18988, | |
| 19101, | |
| 19283, | |
| 19315, | |
| 19350, | |
| 19780, | |
| 19801, | |
| 19842, | |
| 20000, | |
| 20005, | |
| 20031, | |
| 20221, | |
| 20222, | |
| 20828, | |
| 21571, | |
| 22939, | |
| 23502, | |
| 24444, | |
| 24800, | |
| 25734, | |
| 25735, | |
| 26214, | |
| 27000, | |
| 27017, | |
| 27352, | |
| 27353, | |
| 27355, | |
| 27356, | |
| 27715, | |
| 27017, | |
| 28201, | |
| 30000, | |
| 30718, | |
| 30951, | |
| 31038, | |
| 31337, | |
| 32768, | |
| 32769, | |
| 32770, | |
| 32771, | |
| 32772, | |
| 32773, | |
| 32774, | |
| 32775, | |
| 32776, | |
| 32777, | |
| 32778, | |
| 32779, | |
| 32780, | |
| 32781, | |
| 32782, | |
| 32783, | |
| 32784, | |
| 32785, | |
| 33354, | |
| 33899, | |
| 34571, | |
| 34572, | |
| 34573, | |
| 35500, | |
| 38292, | |
| 40193, | |
| 40911, | |
| 41511, | |
| 42510, | |
| 44176, | |
| 44442, | |
| 44443, | |
| 44501, | |
| 45100, | |
| 48080, | |
| 49152, | |
| 49153, | |
| 49154, | |
| 49155, | |
| 49156, | |
| 49157, | |
| 49158, | |
| 49159, | |
| 49160, | |
| 49161, | |
| 49163, | |
| 49165, | |
| 49167, | |
| 49175, | |
| 49176, | |
| 49400, | |
| 49999, | |
| 50000, | |
| 50001, | |
| 50002, | |
| 50003, | |
| 50006, | |
| 50300, | |
| 50389, | |
| 50500, | |
| 50636, | |
| 50800, | |
| 51103, | |
| 51493, | |
| 52673, | |
| 52822, | |
| 52848, | |
| 52869, | |
| 54045, | |
| 54328, | |
| 55055, | |
| 55056, | |
| 55555, | |
| 55600, | |
| 56737, | |
| 56738, | |
| 57294, | |
| 57797, | |
| 58080, | |
| 60020, | |
| 60443, | |
| 61532, | |
| 61900, | |
| 62078, | |
| 63331, | |
| 64623, | |
| 64680, | |
| 65000, | |
| 65129, | |
| 65389 | |
| ]; | |
| var TIMEOUT = 2000; | |
| var bagpipe = new Bagpipe(500); | |
| // 生成 IP 列表 | |
| function generateIPList(ipStr, callback) { | |
| var error = null; | |
| var ipList = []; | |
| if (ipStr.indexOf("/") != -1) { | |
| try { | |
| var block = new Netmask(ipStr); | |
| block.forEach(function (ip) { | |
| ipList.push(ip); | |
| }); | |
| } catch (ex) { | |
| error = ex; | |
| } | |
| } else { | |
| ipList.push(ipStr); | |
| } | |
| callback(error, ipList); | |
| // callback(null, ["www.baidu.com"]); | |
| } | |
| // Promise GenerateIPList | |
| function qGenerateIPList (ipStr) { | |
| var deferred = Q.defer(); | |
| generateIPList(ipStr, deferred.makeNodeResolver()); | |
| return deferred.promise; | |
| } | |
| // TCP 连接 | |
| function connectTCP(host, port, callback) { | |
| var sd = net.connect({host: host, port: port}, function () { | |
| callback(null, util.format("%s:%s", host, port)); | |
| sd.destroy(); | |
| }); | |
| sd.setTimeout(TIMEOUT, function () { | |
| callback(new Error("Timeout"), null); | |
| sd.destroy(); | |
| }); | |
| sd.on("error", function (err) { | |
| callback(err, null); | |
| sd.destroy(); | |
| }); | |
| } | |
| // Promise ConnectTCP | |
| function qConnectTCP(host, port) { | |
| var deferred = Q.defer(); | |
| connectTCP(host, port, deferred.makeNodeResolver()); | |
| return deferred.promise; | |
| } | |
| // Promise bagpipe.push | |
| function qPush(host, port) { | |
| var deferred = Q.defer(); | |
| bagpipe.push(connectTCP, host, port, deferred.makeNodeResolver()); | |
| return deferred.promise; | |
| } | |
| // log | |
| function log(message) { | |
| console.log(message); | |
| return FS.append("portscan.log", message+"\n"); | |
| } | |
| // list | |
| function list(val) { | |
| var ret = []; | |
| val.split(",").forEach(function (i) { | |
| ret.push(parseInt(i)); | |
| }); | |
| return ret; | |
| } | |
| commander | |
| .option("-n, --coroutineNum <n>", "Coroutine num", parseInt) | |
| .option("-t, --timeout <t>", "Timeout", parseInt) | |
| .option("-p, --ports <ports>", "Only scan specified ports, split with [,]", list) | |
| .option("-a, --addition <ports>", "Scan additional ports except default ports, split with [,]", list) | |
| .arguments("<target>", "Target specification") | |
| .action(function (target) { | |
| commander.target = target; | |
| }) | |
| .parse(process.argv); | |
| if (!commander.target) { | |
| console.error("No target given!"); | |
| process.exit(1); | |
| } | |
| if (commander.coroutineNum) bagpipe = new Bagpipe(commander.coroutineNum); | |
| if (commander.timeout) TIMEOUT = commander.timeout * 1000; | |
| if (commander.ports) PORTS = commander.ports; | |
| if (commander.addition) PORTS = PORTS.concat(commander.addition); | |
| qGenerateIPList(commander.target) | |
| .then(function (ipList) { | |
| PORTS.forEach(function (port) { | |
| ipList.forEach(function (host) { | |
| qPush(host, port).then(log); | |
| }); | |
| }); | |
| }, function (err) { | |
| console.error(err); | |
| process.exit(1); | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment