ruby-nmap 0.9.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +5 -5
  2. data/.document +1 -0
  3. data/.editorconfig +11 -0
  4. data/.github/workflows/ruby.yml +31 -0
  5. data/ChangeLog.md +122 -67
  6. data/Gemfile +11 -5
  7. data/LICENSE.txt +1 -1
  8. data/README.md +88 -50
  9. data/Rakefile +8 -3
  10. data/UPGRADING.md +47 -0
  11. data/gemspec.yml +6 -6
  12. data/lib/nmap/command.rb +765 -0
  13. data/lib/nmap/version.rb +1 -1
  14. data/lib/nmap/xml/address.rb +38 -0
  15. data/lib/nmap/xml/cpe/url.rb +80 -0
  16. data/lib/nmap/xml/cpe.rb +47 -0
  17. data/lib/nmap/xml/hop.rb +22 -0
  18. data/lib/nmap/xml/host.rb +546 -0
  19. data/lib/nmap/xml/host_script.rb +26 -0
  20. data/lib/nmap/xml/hostname.rb +44 -0
  21. data/lib/nmap/xml/ip_id_sequence.rb +26 -0
  22. data/lib/nmap/xml/os.rb +131 -0
  23. data/lib/nmap/xml/os_class.rb +86 -0
  24. data/lib/nmap/xml/os_match.rb +22 -0
  25. data/lib/nmap/xml/port.rb +114 -0
  26. data/lib/nmap/xml/postscript.rb +26 -0
  27. data/lib/nmap/xml/prescript.rb +26 -0
  28. data/lib/nmap/xml/run_stat.rb +22 -0
  29. data/lib/nmap/xml/scan.rb +38 -0
  30. data/lib/nmap/xml/scan_task.rb +55 -0
  31. data/lib/nmap/xml/scanner.rb +22 -0
  32. data/lib/nmap/xml/script.rb +110 -0
  33. data/lib/nmap/xml/scripts.rb +33 -0
  34. data/lib/nmap/xml/sequence.rb +52 -0
  35. data/lib/nmap/xml/service.rb +172 -0
  36. data/lib/nmap/xml/status.rb +22 -0
  37. data/lib/nmap/xml/tcp_sequence.rb +48 -0
  38. data/lib/nmap/xml/tcp_ts_sequence.rb +26 -0
  39. data/lib/nmap/xml/traceroute.rb +73 -0
  40. data/lib/nmap/xml/uptime.rb +22 -0
  41. data/lib/nmap/xml.rb +46 -44
  42. data/ruby-nmap.gemspec +38 -83
  43. data/spec/command_spec.rb +726 -0
  44. data/spec/fixtures/down_host_scan.xml +16 -0
  45. data/spec/{local_scan.xml → fixtures/local_scan.xml} +1 -1
  46. data/spec/{scan.xml → fixtures/scan.xml} +1 -1
  47. data/spec/spec_helper.rb +2 -2
  48. data/spec/{address_spec.rb → xml/address_spec.rb} +2 -2
  49. data/spec/{cpe → xml/cpe}/url_spec.rb +1 -1
  50. data/spec/{cpe_examples.rb → xml/cpe_examples.rb} +1 -1
  51. data/spec/{hop_spec.rb → xml/hop_spec.rb} +2 -2
  52. data/spec/{host_script_spec.rb → xml/host_script_spec.rb} +2 -2
  53. data/spec/{host_spec.rb → xml/host_spec.rb} +12 -8
  54. data/spec/{hostname_spec.rb → xml/hostname_spec.rb} +2 -2
  55. data/spec/{ip_id_sequence_spec.rb → xml/ip_id_sequence_spec.rb} +3 -3
  56. data/spec/{os_class_spec.rb → xml/os_class_spec.rb} +3 -3
  57. data/spec/{os_match_spec.rb → xml/os_match_spec.rb} +2 -2
  58. data/spec/{os_spec.rb → xml/os_spec.rb} +3 -3
  59. data/spec/{port_spec.rb → xml/port_spec.rb} +10 -5
  60. data/spec/{postscript_spec.rb → xml/postscript_spec.rb} +2 -2
  61. data/spec/{prescript_spec.rb → xml/prescript_spec.rb} +2 -2
  62. data/spec/{run_stat_spec.rb → xml/run_stat_spec.rb} +2 -2
  63. data/spec/{scan_spec.rb → xml/scan_spec.rb} +2 -2
  64. data/spec/{scan_task_spec.rb → xml/scan_task_spec.rb} +6 -6
  65. data/spec/{scanner_spec.rb → xml/scanner_spec.rb} +3 -3
  66. data/spec/xml/script_spec.rb +137 -0
  67. data/spec/xml/scripts_examples.rb +19 -0
  68. data/spec/{sequence_examples.rb → xml/sequence_examples.rb} +1 -0
  69. data/spec/{service_spec.rb → xml/service_spec.rb} +31 -5
  70. data/spec/{status_spec.rb → xml/status_spec.rb} +4 -3
  71. data/spec/{tcp_sequence_spec.rb → xml/tcp_sequence_spec.rb} +3 -3
  72. data/spec/{tcp_ts_sequence_spec.rb → xml/tcp_ts_sequence_spec.rb} +3 -3
  73. data/spec/{traceroute_spec.rb → xml/traceroute_spec.rb} +3 -3
  74. data/spec/{uptime_spec.rb → xml/uptime_spec.rb} +2 -2
  75. data/spec/xml_spec.rb +93 -45
  76. metadata +78 -99
  77. data/.travis.yml +0 -14
  78. data/lib/nmap/address.rb +0 -34
  79. data/lib/nmap/cpe/url.rb +0 -78
  80. data/lib/nmap/cpe.rb +0 -45
  81. data/lib/nmap/hop.rb +0 -20
  82. data/lib/nmap/host.rb +0 -586
  83. data/lib/nmap/host_script.rb +0 -18
  84. data/lib/nmap/hostname.rb +0 -42
  85. data/lib/nmap/ip_id_sequence.rb +0 -24
  86. data/lib/nmap/os.rb +0 -127
  87. data/lib/nmap/os_class.rb +0 -82
  88. data/lib/nmap/os_match.rb +0 -18
  89. data/lib/nmap/port.rb +0 -99
  90. data/lib/nmap/postscript.rb +0 -16
  91. data/lib/nmap/prescript.rb +0 -16
  92. data/lib/nmap/program.rb +0 -102
  93. data/lib/nmap/run_stat.rb +0 -20
  94. data/lib/nmap/scan.rb +0 -34
  95. data/lib/nmap/scan_task.rb +0 -50
  96. data/lib/nmap/scanner.rb +0 -18
  97. data/lib/nmap/scripts.rb +0 -71
  98. data/lib/nmap/sequence.rb +0 -50
  99. data/lib/nmap/service.rb +0 -170
  100. data/lib/nmap/status.rb +0 -18
  101. data/lib/nmap/task.rb +0 -381
  102. data/lib/nmap/tcp_sequence.rb +0 -46
  103. data/lib/nmap/tcp_ts_sequence.rb +0 -22
  104. data/lib/nmap/traceroute.rb +0 -71
  105. data/lib/nmap/uptime.rb +0 -20
  106. data/spec/scripts_examples.rb +0 -35
  107. data/spec/task_spec.rb +0 -150
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE nmaprun>
3
+ <?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
4
+ <!-- Nmap 7.93 scan initiated Thu Nov 3 05:44:42 2022 as: nmap -v -sS -oX spec/fixtures/down_host_scan.xml 225.0.0.1 -->
5
+ <nmaprun scanner="nmap" args="nmap -v -sS -oX spec/fixtures/down_host_scan.xml 225.0.0.1" start="1667479482" startstr="Thu Nov 3 05:44:42 2022" version="7.93" xmloutputversion="1.05">
6
+ <scaninfo type="syn" protocol="tcp" numservices="1000" services="1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-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-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-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-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-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-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-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-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-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-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-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,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-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"/>
7
+ <verbose level="1"/>
8
+ <debugging level="0"/>
9
+ <taskbegin task="ARP Ping Scan" time="1667479482"/>
10
+ <taskend task="ARP Ping Scan" time="1667479484" extrainfo="1 total hosts"/>
11
+ <host><status state="down" reason="no-response" reason_ttl="0"/>
12
+ <address addr="225.0.0.1" addrtype="ipv4"/>
13
+ </host>
14
+ <runstats><finished time="1667479484" timestr="Thu Nov 3 05:44:44 2022" summary="Nmap done at Thu Nov 3 05:44:44 2022; 1 IP address (0 hosts up) scanned in 1.47 seconds" elapsed="1.47" exit="success"/><hosts up="0" down="1" total="1"/>
15
+ </runstats>
16
+ </nmaprun>
@@ -2,7 +2,7 @@
2
2
  <!DOCTYPE nmaprun PUBLIC "-//IDN nmap.org//DTD Nmap XML 1.04//EN" "https://svn.nmap.org/nmap/docs/nmap.dtd">
3
3
  <?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
4
4
  <!-- Nmap 6.45 scan initiated Thu Apr 16 20:12:47 2015 as: nmap -v -sS -A -O -&#45;script ssh2-enum-algos -oX spec/local_scan.xml 10.0.0.2 -->
5
- <nmaprun scanner="nmap" args="nmap -v -sS -A -O -&#45;script ssh2-enum-algos -oX spec/local_scan.xml 10.0.0.2" start="1429240367" startstr="Thu Apr 16 20:12:47 2015" version="6.45" xmloutputversion="1.04">
5
+ <nmaprun scanner="nmap" args="nmap -v -sS -A -O -&#45;script ssh2-enum-algos -oX spec/fixtures/local_scan.xml 10.0.0.2" start="1429240367" startstr="Thu Apr 16 20:12:47 2015" version="6.45" xmloutputversion="1.04">
6
6
  <scaninfo type="syn" protocol="tcp" numservices="1000" services="1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-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-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-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-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-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-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-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-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-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-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-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,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-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"/>
7
7
  <verbose level="1"/>
8
8
  <debugging level="0"/>
@@ -2,7 +2,7 @@
2
2
  <!DOCTYPE nmaprun PUBLIC "-//IDN nmap.org//DTD Nmap XML 1.04//EN" "https://svn.nmap.org/nmap/docs/nmap.dtd">
3
3
  <?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
4
4
  <!-- Nmap 6.45 scan initiated Fri Apr 17 13:23:10 2015 as: nmap -v -sS -sU -A -O -&#45;script ssh2-enum-algos,ssh-hostkey -oX spec/scan.xml scanme.nmap.org -->
5
- <nmaprun scanner="nmap" args="nmap -v -sS -sU -A -O -&#45;script ssh2-enum-algos,ssh-hostkey -oX spec/scan.xml scanme.nmap.org" start="1429302190" startstr="Fri Apr 17 13:23:10 2015" version="6.45" xmloutputversion="1.04">
5
+ <nmaprun scanner="nmap" args="nmap -v -sS -sU -A -O -&#45;script ssh2-enum-algos,ssh-hostkey -oX spec/fixtures/scan.xml scanme.nmap.org" start="1429302190" startstr="Fri Apr 17 13:23:10 2015" version="6.45" xmloutputversion="1.04">
6
6
  <scaninfo type="syn" protocol="tcp" numservices="1000" services="1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-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-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-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-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-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-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-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-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-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-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-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,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-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"/>
7
7
  <scaninfo type="udp" protocol="udp" numservices="1000" services="2-3,7,9,13,17,19-23,37-38,42,49,53,67-69,80,88,111-113,120,123,135-139,158,161-162,177,192,199,207,217,363,389,402,407,427,434,443,445,464,497,500,502,512-515,517-518,520,539,559,593,623,626,631,639,643,657,664,682-689,764,767,772-776,780-782,786,789,800,814,826,829,838,902-903,944,959,965,983,989-990,996-1001,1007-1008,1012-1014,1019-1051,1053-1060,1064-1070,1072,1080-1081,1087-1088,1090,1100-1101,1105,1124,1200,1214,1234,1346,1419,1433-1434,1455,1457,1484-1485,1524,1645-1646,1701,1718-1719,1761,1782,1804,1812-1813,1885-1886,1900-1901,1993,2000,2002,2048-2049,2051,2148,2160-2161,2222-2223,2343,2345,2362,2967,3052,3130,3283,3296,3343,3389,3401,3456-3457,3659,3664,3702-3703,4000,4008,4045,4444,4500,4666,4672,5000-5003,5010,5050,5060,5093,5351,5353,5355,5500,5555,5632,6000-6002,6004,6050,6346-6347,6970-6971,7000,7938,8000-8001,8010,8181,8193,8900,9000-9001,9020,9103,9199-9200,9370,9876-9877,9950,10000,10080,11487,16086,16402,16420,16430,16433,16449,16498,16503,16545,16548,16573,16674,16680,16697,16700,16708,16711,16739,16766,16779,16786,16816,16829,16832,16838-16839,16862,16896,16912,16918-16919,16938-16939,16947-16948,16970,16972,16974,17006,17018,17077,17091,17101,17146,17184-17185,17205,17207,17219,17236-17237,17282,17302,17321,17331-17332,17338,17359,17417,17423-17424,17455,17459,17468,17487,17490,17494,17505,17533,17549,17573,17580,17585,17592,17605,17615-17616,17629,17638,17663,17673-17674,17683,17726,17754,17762,17787,17814,17823-17824,17836,17845,17888,17939,17946,17989,18004,18081,18113,18134,18156,18228,18234,18250,18255,18258,18319,18331,18360,18373,18449,18485,18543,18582,18605,18617,18666,18669,18676,18683,18807,18818,18821,18830,18832,18835,18869,18883,18888,18958,18980,18985,18987,18991,18994,18996,19017,19022,19039,19047,19075,19096,19120,19130,19140-19141,19154,19161,19165,19181,19193,19197,19222,19227,19273,19283,19294,19315,19322,19332,19374,19415,19482,19489,19500,19503-19504,19541,19600,19605,19616,19624-19625,19632,19639,19647,19650,19660,19662-19663,19682-19683,19687,19695,19707,19717-19719,19722,19728,19789,19792,19933,19935-19936,19956,19995,19998,20003-20004,20019,20031,20082,20117,20120,20126,20129,20146,20154,20164,20206,20217,20249,20262,20279,20288,20309,20313,20326,20359-20360,20366,20380,20389,20409,20411,20423-20425,20445,20449,20464-20465,20518,20522,20525,20540,20560,20665,20678-20679,20710,20717,20742,20752,20762,20791,20817,20842,20848,20851,20865,20872,20876,20884,20919,21000,21016,21060,21083,21104,21111,21131,21167,21186,21206-21207,21212,21247,21261,21282,21298,21303,21318,21320,21333,21344,21354,21358,21360,21364,21366,21383,21405,21454,21468,21476,21514,21524-21525,21556,21566,21568,21576,21609,21621,21625,21644,21649,21655,21663,21674,21698,21702,21710,21742,21780,21784,21800,21803,21834,21842,21847,21868,21898,21902,21923,21948,21967,22029,22043,22045,22053,22055,22105,22109,22123-22124,22341,22692,22695,22739,22799,22846,22914,22986,22996,23040,23176,23354,23531,23557,23608,23679,23781,23965,23980,24007,24279,24511,24594,24606,24644,24854,24910,25003,25157,25240,25280,25337,25375,25462,25541,25546,25709,25931,26407,26415,26720,26872,26966,27015,27195,27444,27473,27482,27707,27892,27899,28122,28369,28465,28493,28543,28547,28641,28840,28973,29078,29243,29256,29810,29823,29977,30263,30303,30365,30544,30656,30697,30704,30718,30975,31059,31073,31109,31189,31195,31335,31337,31365,31625,31681,31731,31891,32345,32385,32528,32768-32780,32798,32815,32818,32931,33030,33249,33281,33354-33355,33459,33717,33744,33866,33872,34038,34079,34125,34358,34422,34433,34555,34570,34577-34580,34758,34796,34855,34861-34862,34892,35438,35702,35777,35794,36108,36206,36384,36458,36489,36669,36778,36893,36945,37144,37212,37393,37444,37602,37761,37783,37813,37843,38037,38063,38293,38412,38498,38615,39213,39217,39632,39683,39714,39723,39888,40019,40116,40441,40539,40622,40708,40711,40724,40732,40805,40847,40866,40915,41058,41081,41308,41370,41446,41524,41638,41702,41774,41896,41967,41971,42056,42172,42313,42431,42434,42508,42557,42577,42627,42639,43094,43195,43370,43514,43686,43824,43967,44101,44160,44179,44185,44190,44253,44334,44508,44923,44946,44968,45247,45380,45441,45685,45722,45818,45928,46093,46532,46836,47624,47765,47772,47808,47915,47981,48078,48189,48255,48455,48489,48761,49152-49163,49165-49182,49184-49202,49204-49205,49207-49216,49220,49222,49226,49259,49262,49306,49350,49360,49393,49396,49503,49640,49968,50099,50164,50497,50612,50708,50919,51255,51456,51554,51586,51690,51717,51905,51972,52144,52225,52503,53006,53037,53571,53589,53838,54094,54114,54281,54321,54711,54807,54925,55043,55544,55587,56141,57172,57409-57410,57813,57843,57958,57977,58002,58075,58178,58419,58631,58640,58797,59193,59207,59765,59846,60172,60381,60423,61024,61142,61319,61322,61370,61412,61481,61550,61685,61961,62154,62287,62575,62677,62699,62958,63420,63555,64080,64481,64513,64590,64727,65024"/>
8
8
  <verbose level="1"/>
data/spec/spec_helper.rb CHANGED
@@ -8,7 +8,7 @@ include Nmap
8
8
 
9
9
  RSpec.configure do |spec|
10
10
  spec.before(:all) do
11
- @xml = XML.open('spec/scan.xml')
12
- @local_xml = XML.open('spec/local_scan.xml')
11
+ @xml = XML.open('spec/fixtures/scan.xml')
12
+ @local_xml = XML.open('spec/fixtures/local_scan.xml')
13
13
  end
14
14
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'nmap/address'
2
+ require 'nmap/xml/address'
3
3
 
4
- describe Address do
4
+ describe Nmap::XML::Address do
5
5
  describe "#to_s" do
6
6
  let(:addr) { '127.0.0.1' }
7
7
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe CPE::URL do
3
+ describe Nmap::XML::CPE::URL do
4
4
  describe "parse" do
5
5
  context "when the URL does not start with 'cpe:'" do
6
6
  it "should raise an ArgumentError" do
@@ -6,6 +6,6 @@ shared_examples_for "CPE" do
6
6
  it { is_expected.not_to be_empty }
7
7
 
8
8
  it "should contain CPE URLs" do
9
- expect(subject).to all(be_kind_of(CPE::URL))
9
+ expect(subject).to all(be_kind_of(Nmap::XML::CPE::URL))
10
10
  end
11
11
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'nmap/hop'
2
+ require 'nmap/xml/hop'
3
3
 
4
- describe Hop do
4
+ describe Nmap::XML::Hop do
5
5
  describe "#to_s" do
6
6
  subject do
7
7
  described_class.new('10.0.0.1', nil, '1', '3.38')
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
- require 'nmap/host_script'
2
+ require 'nmap/xml/host_script'
3
3
 
4
- describe HostScript do
4
+ describe Nmap::XML::HostScript do
5
5
  pending "need to generate nmap XML output containing hostscript elements"
6
6
  end
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
- require 'scripts_examples'
2
+ require 'xml/scripts_examples'
3
3
 
4
4
  require 'nmap/xml'
5
- require 'nmap/host'
5
+ require 'nmap/xml/host'
6
6
 
7
- describe Host do
7
+ describe Nmap::XML::Host do
8
8
  subject { @xml.hosts.first }
9
9
 
10
10
  describe "#start_time" do
@@ -24,7 +24,7 @@ describe Host do
24
24
  subject { super().uptime }
25
25
 
26
26
  it "should return an Uptime object" do
27
- expect(subject).to be_kind_of(Uptime)
27
+ expect(subject).to be_kind_of(Nmap::XML::Uptime)
28
28
  end
29
29
 
30
30
  it "should parse the seconds attribute" do
@@ -39,19 +39,19 @@ describe Host do
39
39
  describe "#tcp_sequence" do
40
40
  subject { super().tcp_sequence }
41
41
 
42
- it { is_expected.to be_kind_of(TcpSequence) }
42
+ it { is_expected.to be_kind_of(Nmap::XML::TcpSequence) }
43
43
  end
44
44
 
45
45
  describe "#ip_ip_sequence" do
46
46
  subject { super().ip_id_sequence }
47
47
 
48
- it { is_expected.to be_kind_of(IpIdSequence) }
48
+ it { is_expected.to be_kind_of(Nmap::XML::IpIdSequence) }
49
49
  end
50
50
 
51
51
  describe "#tcp_ts_sequence" do
52
52
  subject { super().tcp_ts_sequence }
53
53
 
54
- it { is_expected.to be_kind_of(TcpTsSequence) }
54
+ it { is_expected.to be_kind_of(Nmap::XML::TcpTsSequence) }
55
55
  end
56
56
 
57
57
  describe "#status" do
@@ -67,6 +67,10 @@ describe Host do
67
67
  eq('echo-reply').or \
68
68
  eq('reset')
69
69
  end
70
+
71
+ it "should parse the reason_ttl" do
72
+ expect(subject.reason_ttl).to be_kind_of(Integer)
73
+ end
70
74
  end
71
75
 
72
76
  let(:ipv4) { '45.33.32.156' }
@@ -145,7 +149,7 @@ describe Host do
145
149
  subject { super().os }
146
150
 
147
151
  it { is_expected.not_to be_nil }
148
- it { is_expected.to be_kind_of(OS) }
152
+ it { is_expected.to be_kind_of(Nmap::XML::OS) }
149
153
  end
150
154
 
151
155
  describe "#ports" do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'nmap/hostname'
2
+ require 'nmap/xml/hostname'
3
3
 
4
- describe Hostname do
4
+ describe Nmap::XML::Hostname do
5
5
  let(:name) { 'scanme.nmap.org' }
6
6
 
7
7
  describe "#user?" do
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
- require 'sequence_examples'
2
+ require 'xml/sequence_examples'
3
3
 
4
- require 'nmap/ip_id_sequence'
4
+ require 'nmap/xml/ip_id_sequence'
5
5
 
6
- describe IpIdSequence do
6
+ describe Nmap::XML::IpIdSequence do
7
7
  subject { @xml.hosts.first.ip_id_sequence }
8
8
 
9
9
  describe "#description" do
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
- require 'cpe_examples'
2
+ require 'xml/cpe_examples'
3
3
 
4
- require 'nmap/os'
4
+ require 'nmap/xml/os'
5
5
  require 'cgi'
6
6
 
7
- describe OS do
7
+ describe Nmap::XML::OS do
8
8
  subject { @xml.hosts.first.os.classes.first }
9
9
 
10
10
  describe "#type" do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'nmap/os_match'
2
+ require 'nmap/xml/os_match'
3
3
 
4
- describe OSMatch do
4
+ describe Nmap::XML::OSMatch do
5
5
  describe "#to_s" do
6
6
  let(:name) { 'Linux 2.6.39' }
7
7
  let(:accuracy) { 97 }
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'nmap/os'
3
+ require 'nmap/xml/os'
4
4
  require 'cgi'
5
5
 
6
- describe OS do
6
+ describe Nmap::XML::OS do
7
7
  subject { @xml.hosts.first.os }
8
8
 
9
9
  describe "#classes" do
@@ -12,7 +12,7 @@ describe OS do
12
12
  it { is_expected.not_to be_empty }
13
13
 
14
14
  it "should return OSClass objects" do
15
- expect(subject).to all(be_kind_of(OSClass))
15
+ expect(subject).to all(be_kind_of(Nmap::XML::OSClass))
16
16
  end
17
17
  end
18
18
 
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
- require 'scripts_examples'
2
+ require 'xml/scripts_examples'
3
3
 
4
- require 'nmap/port'
4
+ require 'nmap/xml/port'
5
5
 
6
- describe Port do
6
+ describe Nmap::XML::Port do
7
7
  subject { @xml.hosts.first.ports.first }
8
8
 
9
9
  describe "#protocol" do
@@ -30,16 +30,21 @@ describe Port do
30
30
  end
31
31
  end
32
32
 
33
+ describe "#reason_ttl" do
34
+ it "should parse the reason_ttl attribute" do
35
+ expect(subject.reason_ttl).to be_kind_of(Integer)
36
+ end
37
+ end
38
+
33
39
  describe "#service" do
34
40
  subject { super().service }
35
41
 
36
42
  it "should return a Service object" do
37
- expect(subject).to be_kind_of(Service)
43
+ expect(subject).to be_kind_of(Nmap::XML::Service)
38
44
  end
39
45
  end
40
46
 
41
47
  include_examples "#scripts"
42
- include_examples "#script_data"
43
48
 
44
49
  describe "#inspect" do
45
50
  it "should include the number" do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
- require 'nmap/postscript'
2
+ require 'nmap/xml/postscript'
3
3
 
4
- describe Postscript do
4
+ describe Nmap::XML::Postscript do
5
5
  pending "need to generate nmap XML output containing postscript elements"
6
6
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
- require 'nmap/prescript'
2
+ require 'nmap/xml/prescript'
3
3
 
4
- describe Prescript do
4
+ describe Nmap::XML::Prescript do
5
5
  pending "need to generate nmap XML output containing prescript elements"
6
6
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'nmap/run_stat'
2
+ require 'nmap/xml/run_stat'
3
3
 
4
- describe RunStat do
4
+ describe Nmap::XML::RunStat do
5
5
  subject { @xml.run_stats.first }
6
6
 
7
7
  describe "#to_s" do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'nmap/scan'
2
+ require 'nmap/xml/scan'
3
3
 
4
- describe Scan do
4
+ describe Nmap::XML::Scan do
5
5
  let(:type) { :syn }
6
6
  let(:protocol) { :tcp }
7
7
 
@@ -1,19 +1,19 @@
1
1
  require 'spec_helper'
2
- require 'nmap/scan_task'
2
+ require 'nmap/xml/scan_task'
3
3
 
4
- describe ScanTask do
4
+ describe Nmap::XML::ScanTask do
5
5
  let(:name) { 'SYN Stealth Scan' }
6
6
  let(:end_time) { Time.now }
7
7
  let(:duration) { 10 }
8
8
  let(:start_time) { end_time - duration }
9
- let(:extrainfo) { '1000 total ports' }
9
+ let(:extra_info) { '1000 total ports' }
10
10
 
11
11
  subject do
12
12
  described_class.new(
13
13
  name,
14
14
  start_time,
15
15
  end_time,
16
- extrainfo
16
+ extra_info
17
17
  )
18
18
  end
19
19
 
@@ -28,8 +28,8 @@ describe ScanTask do
28
28
  end
29
29
 
30
30
  describe "#to_s" do
31
- it "should include the start_time, name and extrainfo" do
32
- expect(subject.to_s).to eq("#{start_time}: #{name} (#{extrainfo})")
31
+ it "should include the start_time, name and extra_info" do
32
+ expect(subject.to_s).to eq("#{start_time}: #{name} (#{extra_info})")
33
33
  end
34
34
  end
35
35
  end
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
- require 'nmap/scanner'
2
+ require 'nmap/xml/scanner'
3
3
 
4
- describe Scanner do
4
+ describe Nmap::XML::Scanner do
5
5
  describe "#to_s" do
6
6
  let(:name) { 'nmap' }
7
7
  let(:version) { '6.01' }
8
8
  let(:args) { 'nmap -v -sS -sU -A -O -oX spec/scan.xml scanme.nmap.org' }
9
- let(:start_time) { Time.new('Sat Jul 20 23:55:27 2013') }
9
+ let(:start_time) { Time.parse('Sat Jul 20 23:55:27 2013') }
10
10
 
11
11
  subject do
12
12
  described_class.new(
@@ -0,0 +1,137 @@
1
+ require 'spec_helper'
2
+ require 'nmap/xml/script'
3
+
4
+ describe Nmap::XML::Script do
5
+ let(:id) { 'ssh-hostkey' }
6
+
7
+ subject { @xml.hosts.first.ports.first.scripts[id] }
8
+
9
+ describe "#id" do
10
+ it "must return the 'id' attribute" do
11
+ expect(subject.id).to eq(id)
12
+ end
13
+ end
14
+
15
+ describe "#output" do
16
+ it "must return the 'output' attribute" do
17
+ expect(subject.output).to eq(
18
+ [
19
+ '',
20
+ ' 1024 ac:00:a0:1a:82:ff:cc:55:99:dc:67:2b:34:97:6b:75 (DSA)',
21
+ 'ssh-dss AAAAB3NzaC1kc3MAAACBAOe8o59vFWZGaBmGPVeJBObEfi1AR8yEUYC/Ufkku3sKhGF7wM2m2ujIeZDK5vqeC0S5EN2xYo6FshCP4FQRYeTxD17nNO4PhwW65qAjDRRU0uHFfSAh5wk+vt4yQztOE++sTd1G9OBLzA8HO99qDmCAxb3zw+GQDEgPjzgyzGZ3AAAAFQCBmE1vROP8IaPkUmhM5xLFta/xHwAAAIEA3EwRfaeOPLL7TKDgGX67Lbkf9UtdlpCdC4doMjGgsznYMwWH6a7Lj3vi4/KmeZZdix6FMdFqq+2vrfT1DRqx0RS0XYdGxnkgS+2g333WYCrUkDCn6RPUWR/1TgGMPHCj7LWCa1ZwJwLWS2KX288Pa2gLOWuhZm2VYKSQx6NEDOIAAACBANxIfprSdBdbo4Ezrh6/X6HSvrhjtZ7MouStWaE714ByO5bS2coM9CyaCwYyrE5qzYiyIfb+1BG3O5nVdDuN95sQ/0bAdBKlkqLFvFqFjVbETF0ri3v97w6MpUawfF75ouDrQ4xdaUOLLEWTso6VFJcM6Jg9bDl0FA0uLZUSDEHL',
22
+ ' 2048 20:3d:2d:44:62:2a:b0:5a:9d:b5:b3:05:14:c2:a6:b2 (RSA)',
23
+ 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6afooTZ9mVUGFNEhkMoRR1Btzu64XXwElhCsHw/zVlIx/HXylNbb9+11dm2VgJQ21pxkWDs+L6+EbYyDnvRURTrMTgHL0xseB0EkNqexs9hYZSiqtMx4jtGNtHvsMxZnbxvVUk2dasWvtBkn8J5JagSbzWTQo4hjKMOI1SUlXtiKxAs2F8wiq2EdSuKw/KNk8GfIp1TA+8ccGeAtnsVptTJ4D/8MhAWsROkQzOowQvnBBz2/8ecEvoMScaf+kDfNQowK3gENtSSOqYw9JLOza6YJBPL/aYuQQ0nJ74Rr5vL44aNIlrGI9jJc2x0bV7BeNA5kVuXsmhyfWbbkB8yGd',
24
+ ' 256 96:02:bb:5e:57:54:1c:4e:45:2f:56:4c:4a:24:b2:57 (ECDSA)',
25
+ 'ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMD46g67x6yWNjjQJnXhiz/TskHrqQ0uPcOspFrIYW382uOGzmWDZCFV8FbFwQyH90u+j0Qr1SGNAxBZMhOQ8pc='
26
+ ].join($/)
27
+ )
28
+ end
29
+
30
+ describe "#data" do
31
+ context "when the <script> contains named <table> XML elements" do
32
+ subject { @xml.hosts.first.ports.first.scripts['ssh2-enum-algos'] }
33
+
34
+ it "must return a Hash of Hashes" do
35
+ expect(subject.data).to eq(
36
+ {
37
+ 'kex_algorithms' => %w[
38
+ curve25519-sha256@libssh.org
39
+ ecdh-sha2-nistp256
40
+ ecdh-sha2-nistp384
41
+ ecdh-sha2-nistp521
42
+ diffie-hellman-group-exchange-sha256
43
+ diffie-hellman-group-exchange-sha1
44
+ diffie-hellman-group14-sha1
45
+ diffie-hellman-group1-sha1
46
+ ],
47
+
48
+ 'server_host_key_algorithms' => %w[
49
+ ssh-rsa
50
+ ssh-dss
51
+ ecdsa-sha2-nistp256
52
+ ssh-ed25519
53
+ ],
54
+
55
+ 'encryption_algorithms' => %w[
56
+ aes128-ctr
57
+ aes192-ctr
58
+ aes256-ctr
59
+ arcfour256
60
+ arcfour128
61
+ aes128-gcm@openssh.com
62
+ aes256-gcm@openssh.com
63
+ chacha20-poly1305@openssh.com
64
+ aes128-cbc
65
+ 3des-cbc
66
+ blowfish-cbc
67
+ cast128-cbc
68
+ aes192-cbc
69
+ aes256-cbc
70
+ arcfour
71
+ rijndael-cbc@lysator.liu.se
72
+ ],
73
+
74
+ 'mac_algorithms' => %w[
75
+ hmac-md5-etm@openssh.com
76
+ hmac-sha1-etm@openssh.com
77
+ umac-64-etm@openssh.com
78
+ umac-128-etm@openssh.com
79
+ hmac-sha2-256-etm@openssh.com
80
+ hmac-sha2-512-etm@openssh.com
81
+ hmac-ripemd160-etm@openssh.com
82
+ hmac-sha1-96-etm@openssh.com
83
+ hmac-md5-96-etm@openssh.com
84
+ hmac-md5
85
+ hmac-sha1
86
+ umac-64@openssh.com
87
+ umac-128@openssh.com
88
+ hmac-sha2-256
89
+ hmac-sha2-512
90
+ hmac-ripemd160
91
+ hmac-ripemd160@openssh.com
92
+ hmac-sha1-96
93
+ hmac-md5-96
94
+ ],
95
+
96
+ 'compression_algorithms' => %w[
97
+ none
98
+ zlib@openssh.com
99
+ ]
100
+ }
101
+ )
102
+ end
103
+ end
104
+
105
+ context "when the <script> contains unnamed <table> XML elements" do
106
+ subject { @xml.hosts.first.ports.first.scripts['ssh-hostkey'] }
107
+
108
+ it "must return an Array of Hashes" do
109
+ expect(subject.data).to eq(
110
+ [
111
+ {
112
+ 'fingerprint' => 'ac00a01a82ffcc5599dc672b34976b75',
113
+ 'key' => 'QUFBQUIzTnphQzFrYzNNQUFBQ0JBT2U4bzU5dkZXWkdhQm1HUFZlSkJPYkVmaTFBUjh5RVVZQy9VZmtrdTNzS2hHRjd3TTJtMnVqSWVaREs1dnFlQzBTNUVOMnhZbzZGc2hDUDRGUVJZZVR4RDE3bk5PNFBod1c2NXFBakRSUlUwdUhGZlNBaDV3ayt2dDR5UXp0T0UrK3NUZDFHOU9CTHpBOEhPOTlxRG1DQXhiM3p3K0dRREVnUGp6Z3l6R1ozQUFBQUZRQ0JtRTF2Uk9QOElhUGtVbWhNNXhMRnRhL3hId0FBQUlFQTNFd1JmYWVPUExMN1RLRGdHWDY3TGJrZjlVdGRscENkQzRkb01qR2dzem5ZTXdXSDZhN0xqM3ZpNC9LbWVaWmRpeDZGTWRGcXErMnZyZlQxRFJxeDBSUzBYWWRHeG5rZ1MrMmczMzNXWUNyVWtEQ242UlBVV1IvMVRnR01QSENqN0xXQ2ExWndKd0xXUzJLWDI4OFBhMmdMT1d1aFptMlZZS1NReDZORURPSUFBQUNCQU54SWZwclNkQmRibzRFenJoNi9YNkhTdnJoanRaN01vdVN0V2FFNzE0QnlPNWJTMmNvTTlDeWFDd1l5ckU1cXpZaXlJZmIrMUJHM081blZkRHVOOTVzUS8wYkFkQktsa3FMRnZGcUZqVmJFVEYwcmkzdjk3dzZNcFVhd2ZGNzVvdURyUTR4ZGFVT0xMRVdUc282VkZKY002Smc5YkRsMEZBMHVMWlVTREVITA==',
114
+ 'type' => 'ssh-dss',
115
+ 'bits' => '1024'
116
+ },
117
+
118
+ {
119
+ 'fingerprint' => '203d2d44622ab05a9db5b30514c2a6b2',
120
+ 'key' => 'QUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQzZhZm9vVFo5bVZVR0ZORWhrTW9SUjFCdHp1NjRYWHdFbGhDc0h3L3pWbEl4L0hYeWxOYmI5KzExZG0yVmdKUTIxcHhrV0RzK0w2K0ViWXlEbnZSVVJUck1UZ0hMMHhzZUIwRWtOcWV4czloWVpTaXF0TXg0anRHTnRIdnNNeFpuYnh2VlVrMmRhc1d2dEJrbjhKNUphZ1NieldUUW80aGpLTU9JMVNVbFh0aUt4QXMyRjh3aXEyRWRTdUt3L0tOazhHZklwMVRBKzhjY0dlQXRuc1ZwdFRKNEQvOE1oQVdzUk9rUXpPb3dRdm5CQnoyLzhlY0V2b01TY2FmK2tEZk5Rb3dLM2dFTnRTU09xWXc5SkxPemE2WUpCUEwvYVl1UVEwbko3NFJyNXZMNDRhTklsckdJOWpKYzJ4MGJWN0JlTkE1a1Z1WHNtaHlmV2Jia0I4eUdk',
121
+ 'type' => 'ssh-rsa',
122
+ 'bits' => '2048'
123
+ },
124
+
125
+ {
126
+ 'fingerprint' => '9602bb5e57541c4e452f564c4a24b257',
127
+ 'key' => 'QUFBQUUyVmpaSE5oTFhOb1lUSXRibWx6ZEhBeU5UWUFBQUFJYm1semRIQXlOVFlBQUFCQkJNRDQ2ZzY3eDZ5V05qalFKblhoaXovVHNrSHJxUTB1UGNPc3BGcklZVzM4MnVPR3ptV0RaQ0ZWOEZiRndReUg5MHUrajBRcjFTR05BeEJaTWhPUThwYz0=',
128
+ 'type' => 'ecdsa-sha2-nistp256',
129
+ 'bits' => '256'
130
+ }
131
+ ]
132
+ )
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,19 @@
1
+ require 'rspec'
2
+ require 'nmap/xml/script'
3
+
4
+ shared_examples_for "#scripts" do
5
+ describe "#scripts" do
6
+ subject { super().scripts }
7
+
8
+ it { is_expected.to be_kind_of(Hash) }
9
+ it { is_expected.not_to be_empty }
10
+
11
+ it "should contain String keys" do
12
+ expect(subject.keys).to all(be_kind_of(String))
13
+ end
14
+
15
+ it "should contain Nmap::XML::Script values" do
16
+ expect(subject.values).to all(be_kind_of(Nmap::XML::Script))
17
+ end
18
+ end
19
+ end
@@ -7,6 +7,7 @@ shared_examples_for "Sequence" do
7
7
  it 'has 6 items' do
8
8
  expect(subject.size).to eq(6)
9
9
  end
10
+
10
11
  it { is_expected.to all(be_between(0,0xFFFFFFFF)) }
11
12
  end
12
13
  end
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
- require 'cpe_examples'
2
+ require 'xml/cpe_examples'
3
3
 
4
4
  require 'nmap/xml'
5
- require 'nmap/service'
5
+ require 'nmap/xml/service'
6
6
 
7
- describe Service do
7
+ describe Nmap::XML::Service do
8
8
  let(:port) { @xml.host.open_ports.find { |port| port.number == 80 } }
9
9
 
10
10
  subject { port.service }
@@ -16,8 +16,18 @@ describe Service do
16
16
  end
17
17
 
18
18
  describe "#ssl?" do
19
- it "should check the tunnel attribute" do
20
- skip "need a service that uses SSL"
19
+ context "when the tunnel attribute equals 'ssl'" do
20
+ let(:port) { @xml.host.open_ports.find { |port| port.number == 31337 } }
21
+
22
+ it "must return true" do
23
+ expect(subject.ssl?).to be(true)
24
+ end
25
+ end
26
+
27
+ context "otherwise" do
28
+ it "must return false" do
29
+ expect(subject.ssl?).to be(false)
30
+ end
21
31
  end
22
32
  end
23
33
 
@@ -69,6 +79,14 @@ describe Service do
69
79
  end
70
80
  end
71
81
 
82
+ describe "#fingerprint" do
83
+ let(:port) { @xml.host.open_ports.find { |port| port.number == 22 } }
84
+
85
+ it "should parse the servicefp attribute" do
86
+ expect(subject.fingerprint).to eq("SF-Port22-TCP:V=6.45%I=7%D=4/17%Time=55316FE1%P=x86_64-redhat-linux-gnu%r(NULL,29,\"SSH-2\\.0-OpenSSH_6\\.6\\.1p1\\x20Ubuntu-2ubuntu2\\r\\n\");")
87
+ end
88
+ end
89
+
72
90
  describe "#confidence" do
73
91
  it "should parse the conf attribute" do
74
92
  expect(subject.confidence).to be_between(0,10)
@@ -81,6 +99,14 @@ describe Service do
81
99
  expect(subject.to_s).to be == "#{subject.product} #{subject.version}"
82
100
  end
83
101
  end
102
+
103
+ context "when #product and #version are nil" do
104
+ let(:port) { @xml.host.ports.find { |port| port.number == 68 } }
105
+
106
+ it "must return #name" do
107
+ expect(subject.to_s).to eq(subject.name)
108
+ end
109
+ end
84
110
  end
85
111
 
86
112
  it_should_behave_like "CPE"
@@ -1,12 +1,13 @@
1
1
  require 'spec_helper'
2
- require 'nmap/status'
2
+ require 'nmap/xml/status'
3
3
 
4
- describe Status do
4
+ describe Nmap::XML::Status do
5
5
  describe "#to_s" do
6
6
  let(:state) { :up }
7
7
  let(:reason) { 'syn-ack' }
8
+ let(:reason_ttl) { 100 }
8
9
 
9
- subject { described_class.new(state,reason) }
10
+ subject { described_class.new(state,reason,reason_ttl) }
10
11
 
11
12
  it "should return the state" do
12
13
  expect(subject.to_s).to eq(state.to_s)