ruby-nmap 0.9.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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)