ruby-nmap 0.6.0 → 0.7.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.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.travis.yml +13 -0
- data/ChangeLog.md +24 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +1 -1
- data/README.md +11 -9
- data/Rakefile +20 -24
- data/gemspec.yml +1 -3
- data/lib/nmap/cpe.rb +2 -0
- data/lib/nmap/cpe/cpe.rb +45 -0
- data/lib/nmap/cpe/url.rb +78 -0
- data/lib/nmap/hop.rb +20 -0
- data/lib/nmap/host.rb +69 -15
- data/lib/nmap/hostname.rb +20 -0
- data/lib/nmap/os.rb +2 -17
- data/lib/nmap/os_class.rb +65 -1
- data/lib/nmap/port.rb +10 -0
- data/lib/nmap/run_stat.rb +20 -0
- data/lib/nmap/scan_task.rb +4 -19
- data/lib/nmap/sequence.rb +6 -18
- data/lib/nmap/service.rb +76 -0
- data/lib/nmap/tcp_sequence.rb +1 -1
- data/lib/nmap/traceroute.rb +67 -0
- data/lib/nmap/uptime.rb +20 -0
- data/lib/nmap/version.rb +1 -1
- data/lib/nmap/xml.rb +134 -17
- data/spec/address_spec.rb +14 -0
- data/spec/cpe/url_spec.rb +99 -0
- data/spec/cpe_examples.rb +11 -0
- data/spec/hop_spec.rb +14 -0
- data/spec/host_spec.rb +138 -55
- data/spec/hostname_spec.rb +15 -0
- data/spec/ip_id_sequence_spec.rb +24 -10
- data/spec/os_class_spec.rb +31 -0
- data/spec/os_match_spec.rb +15 -0
- data/spec/os_spec.rb +23 -20
- data/spec/port_spec.rb +14 -15
- data/spec/run_stat_spec.rb +21 -0
- data/spec/scan.xml +137 -0
- data/spec/scan_spec.rb +28 -0
- data/spec/scan_task_spec.rb +35 -0
- data/spec/scanner_spec.rb +24 -0
- data/spec/scripts_examples.rb +10 -0
- data/spec/sequence_examples.rb +10 -0
- data/spec/service_spec.rb +55 -18
- data/spec/spec_helper.rb +30 -3
- data/spec/status_spec.rb +15 -0
- data/spec/tcp_sequence_spec.rb +32 -19
- data/spec/tcp_ts_sequence_spec.rb +24 -10
- data/spec/traceroute_spec.rb +31 -0
- data/spec/uptime_spec.rb +15 -0
- data/spec/xml_spec.rb +172 -31
- metadata +50 -54
- data/.gemtest +0 -0
- data/spec/helpers/nse.xml +0 -94
- data/spec/helpers/scan.xml +0 -241
- data/spec/helpers/xml.rb +0 -5
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'nmap/hostname'
|
3
|
+
|
4
|
+
describe Hostname do
|
5
|
+
describe "#to_s" do
|
6
|
+
let(:type) { :user }
|
7
|
+
let(:name) { 'scanme.nmap.org' }
|
8
|
+
|
9
|
+
subject { described_class.new(type, name) }
|
10
|
+
|
11
|
+
it "should return the hostname" do
|
12
|
+
subject.to_s.should == name
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/ip_id_sequence_spec.rb
CHANGED
@@ -1,20 +1,34 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'sequence_examples'
|
3
|
+
|
2
4
|
require 'nmap/ip_id_sequence'
|
3
5
|
|
4
6
|
describe IpIdSequence do
|
5
|
-
|
6
|
-
|
7
|
-
subject { xml.hosts.first.ip_id_sequence }
|
7
|
+
subject { @xml.hosts.first.ip_id_sequence }
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
describe "#description" do
|
10
|
+
it "should parse the description" do
|
11
|
+
subject.description.should == "All zeros"
|
12
|
+
end
|
11
13
|
end
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
15
|
+
describe "#to_s" do
|
16
|
+
let(:description_regexp) do
|
17
|
+
/"[^"]+"/
|
18
|
+
end
|
16
19
|
|
17
|
-
|
18
|
-
|
20
|
+
let(:values_regexp) do
|
21
|
+
/\[\d+(, \d+){5}\]/
|
22
|
+
end
|
23
|
+
|
24
|
+
let(:regexp) do
|
25
|
+
/^description=#{description_regexp} values=#{values_regexp}$/
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should contain the description and values" do
|
29
|
+
subject.to_s.should =~ regexp
|
30
|
+
end
|
19
31
|
end
|
32
|
+
|
33
|
+
it_should_behave_like "Sequence"
|
20
34
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'cpe_examples'
|
3
|
+
|
4
|
+
require 'nmap/os'
|
5
|
+
require 'cgi'
|
6
|
+
|
7
|
+
describe OS do
|
8
|
+
subject { @xml.hosts.first.os.classes.first }
|
9
|
+
|
10
|
+
it "should parse the type" do
|
11
|
+
subject.type.should == :"general purpose"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should parse the vendor" do
|
15
|
+
subject.vendor.should == 'Linux'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should parse the family" do
|
19
|
+
subject.family.should == :Linux
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should parse the gen" do
|
23
|
+
subject.gen.should == :'2.6.X'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should parse the accuracy" do
|
27
|
+
subject.accuracy.should be_between(0,100)
|
28
|
+
end
|
29
|
+
|
30
|
+
it_should_behave_like "CPE"
|
31
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'nmap/os_match'
|
3
|
+
|
4
|
+
describe OSMatch do
|
5
|
+
describe "#to_s" do
|
6
|
+
let(:name) { 'Linux 2.6.39' }
|
7
|
+
let(:accuracy) { 97 }
|
8
|
+
|
9
|
+
subject { described_class.new(name,accuracy) }
|
10
|
+
|
11
|
+
it "should include the name and accuracy" do
|
12
|
+
subject.to_s.should == "#{name} (#{accuracy}%)"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/os_spec.rb
CHANGED
@@ -4,37 +4,40 @@ require 'nmap/os'
|
|
4
4
|
require 'cgi'
|
5
5
|
|
6
6
|
describe OS do
|
7
|
-
|
7
|
+
subject { @xml.hosts.first.os }
|
8
8
|
|
9
|
-
|
9
|
+
describe "#classes" do
|
10
|
+
subject { super().classes }
|
10
11
|
|
11
|
-
|
12
|
-
classes = subject.classes
|
12
|
+
it { should_not be_empty }
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
classes[0].family.should == :embedded
|
18
|
-
classes[0].accuracy.should == 100
|
14
|
+
it "should return OSClass objects" do
|
15
|
+
subject.should all_be_kind_of(OSClass)
|
16
|
+
end
|
19
17
|
end
|
20
18
|
|
21
|
-
|
22
|
-
|
19
|
+
describe "#matches" do
|
20
|
+
subject { super().matches.first }
|
23
21
|
|
24
|
-
|
22
|
+
it "should parse the name" do
|
23
|
+
subject.name.should == 'Linux 2.6.39'
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
matches[1].name.should == 'Netgear WGR614v7 or WPN824v2 wireless broadband router'
|
30
|
-
matches[1].accuracy.should == 100
|
26
|
+
it "should parse the accuracy" do
|
27
|
+
subject.accuracy.should be_between(0,100)
|
28
|
+
end
|
31
29
|
end
|
32
30
|
|
33
|
-
|
34
|
-
subject.ports_used
|
31
|
+
describe "#ports_used" do
|
32
|
+
subject { super().ports_used }
|
33
|
+
|
34
|
+
it { subject.should_not be_empty }
|
35
|
+
it { subject.should all_be_between(0,65535) }
|
35
36
|
end
|
36
37
|
|
37
38
|
it "should parse the OS fingerprints" do
|
38
|
-
|
39
|
+
pending "scan.xml does not currently have an osfingerprint" do
|
40
|
+
subject.fingerprint.should == CGI.unescapeHTML("SCAN(V=4.68%D=8/16%OT=443%CT=21%CU=%PV=Y%DS=1%G=N%M=001D7E%TM=48A77607%P=i686-pc-linux-gnu)
SEQ(SP=19%GCD=FA00%ISR=9E%TI=I%TS=1)
OPS(O1=M5B4NW0NNT11%O2=M5B4NW0NNT11%O3=M5B4NW0NNT11%O4=M5B4NW0NNT11%O5=M5B4NW0NNT11%O6=M5B4NNT11)
WIN(W1=2000%W2=2000%W3=2000%W4=2000%W5=2000%W6=2000)
ECN(R=Y%DF=N%TG=40%W=2000%O=M5B4NW0%CC=N%Q=)
T1(R=Y%DF=N%TG=40%S=O%A=S+%F=AS%RD=0%Q=)
T2(R=N)
T3(R=N)
T4(R=N)
T5(R=Y%DF=N%TG=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)
T6(R=N)
T7(R=N)
U1(R=N)
IE(R=N)
")
|
41
|
+
end
|
39
42
|
end
|
40
43
|
end
|
data/spec/port_spec.rb
CHANGED
@@ -2,38 +2,37 @@ require 'spec_helper'
|
|
2
2
|
require 'nmap/port'
|
3
3
|
|
4
4
|
describe Port do
|
5
|
-
|
6
|
-
|
7
|
-
subject { xml.hosts.first.ports.first }
|
5
|
+
subject { @xml.hosts.first.ports.first }
|
8
6
|
|
9
7
|
it "should parse the protocol" do
|
10
8
|
subject.protocol.should == :tcp
|
11
9
|
end
|
12
10
|
|
13
11
|
it "should parse the port number" do
|
14
|
-
subject.number.should ==
|
12
|
+
subject.number.should == 22
|
15
13
|
end
|
16
14
|
|
17
15
|
it "should parse the state" do
|
18
|
-
subject.state.should == :
|
16
|
+
subject.state.should == :open
|
19
17
|
end
|
20
18
|
|
21
19
|
it "should parse the reason" do
|
22
|
-
subject.reason.should == '
|
20
|
+
subject.reason.should == 'syn-ack'
|
23
21
|
end
|
24
22
|
|
25
|
-
|
26
|
-
subject.service
|
27
|
-
end
|
23
|
+
describe "#service" do
|
24
|
+
subject { super().service }
|
28
25
|
|
29
|
-
|
30
|
-
|
26
|
+
it "should return a Service object" do
|
27
|
+
subject.should be_kind_of(Service)
|
28
|
+
end
|
29
|
+
end
|
31
30
|
|
32
|
-
|
33
|
-
subject.scripts.should_not be_empty
|
31
|
+
include_examples "#scripts"
|
34
32
|
|
35
|
-
|
36
|
-
|
33
|
+
describe "#inspect" do
|
34
|
+
it "should include the number" do
|
35
|
+
subject.inspect.should include(subject.number.to_s)
|
37
36
|
end
|
38
37
|
end
|
39
38
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'nmap/run_stat'
|
3
|
+
|
4
|
+
describe RunStat do
|
5
|
+
subject { @xml.run_stats.first }
|
6
|
+
|
7
|
+
describe "#to_s" do
|
8
|
+
let(:end_time) { Time.parse('2013-07-21 00:14:33 -0700') }
|
9
|
+
let(:elapsed) { '1145.71' }
|
10
|
+
let(:summary) do
|
11
|
+
"Nmap done at Sun Jul 21 00:14:33 2013; 1 IP address (1 host up) scanned in 1145.71 seconds"
|
12
|
+
end
|
13
|
+
let(:exit_status) { 'success' }
|
14
|
+
|
15
|
+
subject { described_class.new(end_time,elapsed,summary,exit_status) }
|
16
|
+
|
17
|
+
it "should convert the RunStat to a String" do
|
18
|
+
subject.to_s.should == "#{end_time} #{elapsed} #{exit_status}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/spec/scan.xml
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<?xml-stylesheet href="file:///usr/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
|
3
|
+
<!-- Nmap 6.01 scan initiated Sat Jul 20 23:55:27 2013 as: nmap -v -sS -sU -A -O -oX spec/scan.xml scanme.nmap.org -->
|
4
|
+
<nmaprun scanner="nmap" args="nmap -v -sS -sU -A -O -oX spec/scan.xml scanme.nmap.org" start="1374389727" startstr="Sat Jul 20 23:55:27 2013" version="6.01" xmloutputversion="1.04">
|
5
|
+
<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"/>
|
6
|
+
<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"/>
|
7
|
+
<verbose level="1"/>
|
8
|
+
<debugging level="0"/>
|
9
|
+
<taskbegin task="Ping Scan" time="1374389727"/>
|
10
|
+
<taskend task="Ping Scan" time="1374389728" extrainfo="1 total hosts"/>
|
11
|
+
<taskbegin task="Parallel DNS resolution of 1 host." time="1374389728"/>
|
12
|
+
<taskend task="Parallel DNS resolution of 1 host." time="1374389728"/>
|
13
|
+
<taskbegin task="SYN Stealth Scan" time="1374389728"/>
|
14
|
+
<taskend task="SYN Stealth Scan" time="1374389730" extrainfo="1000 total ports"/>
|
15
|
+
<taskbegin task="UDP Scan" time="1374389730"/>
|
16
|
+
<taskprogress task="UDP Scan" time="1374389761" percent="4.56" remaining="649" etc="1374390410"/>
|
17
|
+
<taskprogress task="UDP Scan" time="1374389791" percent="5.97" remaining="961" etc="1374390752"/>
|
18
|
+
<taskprogress task="UDP Scan" time="1374389821" percent="9.30" remaining="888" etc="1374390708"/>
|
19
|
+
<taskprogress task="UDP Scan" time="1374389890" percent="16.06" remaining="837" etc="1374390726"/>
|
20
|
+
<taskprogress task="UDP Scan" time="1374389974" percent="23.72" remaining="785" etc="1374390759"/>
|
21
|
+
<taskprogress task="UDP Scan" time="1374390028" percent="29.04" remaining="729" etc="1374390756"/>
|
22
|
+
<taskprogress task="UDP Scan" time="1374390076" percent="34.01" remaining="672" etc="1374390747"/>
|
23
|
+
<taskprogress task="UDP Scan" time="1374390124" percent="38.89" remaining="620" etc="1374390743"/>
|
24
|
+
<taskprogress task="UDP Scan" time="1374390184" percent="44.55" remaining="566" etc="1374390749"/>
|
25
|
+
<taskprogress task="UDP Scan" time="1374390232" percent="49.43" remaining="514" etc="1374390746"/>
|
26
|
+
<taskprogress task="UDP Scan" time="1374390280" percent="54.31" remaining="463" etc="1374390743"/>
|
27
|
+
<taskprogress task="UDP Scan" time="1374390337" percent="59.66" remaining="411" etc="1374390747"/>
|
28
|
+
<taskprogress task="UDP Scan" time="1374390391" percent="64.80" remaining="360" etc="1374390750"/>
|
29
|
+
<taskprogress task="UDP Scan" time="1374390445" percent="69.94" remaining="308" etc="1374390752"/>
|
30
|
+
<taskprogress task="UDP Scan" time="1374390496" percent="75.21" remaining="253" etc="1374390748"/>
|
31
|
+
<taskprogress task="UDP Scan" time="1374390550" percent="80.36" remaining="201" etc="1374390750"/>
|
32
|
+
<taskprogress task="UDP Scan" time="1374390616" percent="85.81" remaining="147" etc="1374390763"/>
|
33
|
+
<taskprogress task="UDP Scan" time="1374390667" percent="91.00" remaining="93" etc="1374390760"/>
|
34
|
+
<taskprogress task="UDP Scan" time="1374390724" percent="96.10" remaining="41" etc="1374390764"/>
|
35
|
+
<taskend task="UDP Scan" time="1374390781" extrainfo="1000 total ports"/>
|
36
|
+
<taskbegin task="Service scan" time="1374390781"/>
|
37
|
+
<taskprogress task="Service scan" time="1374390863" percent="26.32" remaining="230" etc="1374391093"/>
|
38
|
+
<taskend task="Service scan" time="1374390863" extrainfo="19 services on 1 host"/>
|
39
|
+
<taskbegin task="Traceroute" time="1374390867"/>
|
40
|
+
<taskend task="Traceroute" time="1374390867"/>
|
41
|
+
<taskbegin task="Parallel DNS resolution of 11 hosts." time="1374390867"/>
|
42
|
+
<taskend task="Parallel DNS resolution of 11 hosts." time="1374390867"/>
|
43
|
+
<taskbegin task="NSE" time="1374390867"/>
|
44
|
+
<taskend task="NSE" time="1374390873"/>
|
45
|
+
<host starttime="1374389727" endtime="1374390873"><status state="up" reason="reset"/>
|
46
|
+
<address addr="74.207.244.221" addrtype="ipv4"/>
|
47
|
+
<hostnames>
|
48
|
+
<hostname name="scanme.nmap.org" type="user"/>
|
49
|
+
<hostname name="scanme.nmap.org" type="PTR"/>
|
50
|
+
</hostnames>
|
51
|
+
<ports><extraports state="closed" count="1910">
|
52
|
+
<extrareasons reason="port-unreaches" count="984"/>
|
53
|
+
<extrareasons reason="resets" count="926"/>
|
54
|
+
</extraports>
|
55
|
+
<extraports state="filtered" count="71">
|
56
|
+
<extrareasons reason="no-responses" count="71"/>
|
57
|
+
</extraports>
|
58
|
+
<port protocol="tcp" portid="22"><state state="open" reason="syn-ack" reason_ttl="52"/><service name="ssh" product="OpenSSH" version="5.3p1 Debian 3ubuntu7" extrainfo="protocol 2.0" ostype="Linux" method="probed" conf="10"><cpe>cpe:/a:openbsd:openssh:5.3p1</cpe><cpe>cpe:/o:linux:kernel</cpe></service><script id="ssh-hostkey" output="1024 8d:60:f1:7c:ca:b7:3d:0a:d6:67:54:9d:69:d9:b9:dd (DSA)
2048 79:f8:09:ac:d4:e2:32:42:10:49:d3:bd:20:82:85:ec (RSA)"/></port>
|
59
|
+
<port protocol="tcp" portid="80"><state state="open" reason="syn-ack" reason_ttl="52"/><service name="http" product="Apache httpd" version="2.2.14" extrainfo="(Ubuntu)" method="probed" conf="10"><cpe>cpe:/a:apache:http_server:2.2.14</cpe></service><script id="http-methods" output="GET HEAD POST OPTIONS"/><script id="http-title" output="Go ahead and ScanMe!"/><script id="http-favicon" output="Unknown favicon MD5: 156515DA3C0F7DC6B2493BD5CE43F795"/></port>
|
60
|
+
<port protocol="tcp" portid="9929"><state state="open" reason="syn-ack" reason_ttl="52"/><service name="nping-echo" product="Nping echo" method="probed" conf="10"/></port>
|
61
|
+
<port protocol="udp" portid="68"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="dhcpc" method="table" conf="3"/></port>
|
62
|
+
<port protocol="udp" portid="113"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="auth" method="table" conf="3"/></port>
|
63
|
+
<port protocol="udp" portid="123"><state state="open" reason="udp-response" reason_ttl="52"/><service name="ntp" product="NTP" version="v4" method="probed" conf="10"/><script id="ntp-info" output="
 receive time stamp: Sun Jul 21 00:13:03 2013
"/></port>
|
64
|
+
<port protocol="udp" portid="135"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="msrpc" method="table" conf="3"/></port>
|
65
|
+
<port protocol="udp" portid="136"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="profile" method="table" conf="3"/></port>
|
66
|
+
<port protocol="udp" portid="137"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="netbios-ns" method="table" conf="3"/></port>
|
67
|
+
<port protocol="udp" portid="138"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="netbios-dgm" method="table" conf="3"/></port>
|
68
|
+
<port protocol="udp" portid="139"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="netbios-ssn" method="table" conf="3"/></port>
|
69
|
+
<port protocol="udp" portid="161"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="snmp" method="table" conf="3"/><script id="snmp-win32-shares" output="TIMEOUT"/></port>
|
70
|
+
<port protocol="udp" portid="445"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="microsoft-ds" method="table" conf="3"/></port>
|
71
|
+
<port protocol="udp" portid="520"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="route" method="table" conf="3"/></port>
|
72
|
+
<port protocol="udp" portid="1214"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="fasttrack" method="table" conf="3"/></port>
|
73
|
+
<port protocol="udp" portid="4666"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="edonkey" method="table" conf="3"/></port>
|
74
|
+
<port protocol="udp" portid="4672"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="rfa" method="table" conf="3"/></port>
|
75
|
+
<port protocol="udp" portid="5555"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="rplay" method="table" conf="3"/></port>
|
76
|
+
<port protocol="udp" portid="6346"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="gnutella" method="table" conf="3"/></port>
|
77
|
+
</ports>
|
78
|
+
<os><portused state="open" proto="tcp" portid="22"/>
|
79
|
+
<portused state="closed" proto="tcp" portid="1"/>
|
80
|
+
<portused state="closed" proto="udp" portid="2"/>
|
81
|
+
<osmatch name="Linux 2.6.39" accuracy="97" line="39326">
|
82
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="2.6.X" accuracy="97"><cpe>cpe:/o:linux:kernel:2.6</cpe></osclass>
|
83
|
+
</osmatch>
|
84
|
+
<osmatch name="Linux 2.6.32 - 2.6.39" accuracy="96" line="38051">
|
85
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="2.6.X" accuracy="96"><cpe>cpe:/o:linux:kernel:2.6</cpe></osclass>
|
86
|
+
</osmatch>
|
87
|
+
<osmatch name="Linux 2.6.22 - 2.6.36" accuracy="96" line="34886">
|
88
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="2.6.X" accuracy="96"><cpe>cpe:/o:linux:kernel:2.6</cpe></osclass>
|
89
|
+
</osmatch>
|
90
|
+
<osmatch name="Linux 2.6.37" accuracy="96" line="38761">
|
91
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="2.6.X" accuracy="96"><cpe>cpe:/o:linux:kernel:2.6.37</cpe></osclass>
|
92
|
+
</osmatch>
|
93
|
+
<osmatch name="Linux 3.0 - 3.1" accuracy="95" line="41380">
|
94
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="3.X" accuracy="95"><cpe>cpe:/o:linux:kernel:3</cpe></osclass>
|
95
|
+
</osmatch>
|
96
|
+
<osmatch name="Linux 2.6.38 - 3.0" accuracy="94" line="39203">
|
97
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="2.6.X" accuracy="94"><cpe>cpe:/o:linux:kernel:2.6</cpe></osclass>
|
98
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="3.X" accuracy="94"><cpe>cpe:/o:linux:kernel:3</cpe></osclass>
|
99
|
+
</osmatch>
|
100
|
+
<osmatch name="HP P2000 G3 NAS device" accuracy="93" line="22329">
|
101
|
+
<osclass type="storage-misc" vendor="HP" osfamily="embedded" accuracy="93"/>
|
102
|
+
</osmatch>
|
103
|
+
<osmatch name="Linux 2.6.23 - 2.6.38" accuracy="93" line="35090">
|
104
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="2.6.X" accuracy="93"><cpe>cpe:/o:linux:kernel:2.6</cpe></osclass>
|
105
|
+
</osmatch>
|
106
|
+
<osmatch name="Linux 2.6.31 - 2.6.35" accuracy="93" line="37093">
|
107
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="2.6.X" accuracy="93"><cpe>cpe:/o:linux:kernel:2.6</cpe></osclass>
|
108
|
+
</osmatch>
|
109
|
+
<osmatch name="Linux 2.6.9 - 2.6.27" accuracy="93" line="40224">
|
110
|
+
<osclass type="general purpose" vendor="Linux" osfamily="Linux" osgen="2.6.X" accuracy="93"><cpe>cpe:/o:linux:kernel:2.6</cpe></osclass>
|
111
|
+
</osmatch>
|
112
|
+
</os>
|
113
|
+
<uptime seconds="920430" lastboot="Wed Jul 10 08:34:03 2013"/>
|
114
|
+
<distance value="11"/>
|
115
|
+
<tcpsequence index="205" difficulty="Good luck!" values="411416F9,42069043,4155B0F2,421A04CB,41ACAD47,41D6FD50"/>
|
116
|
+
<ipidsequence class="All zeros" values="0,0,0,0,0,0"/>
|
117
|
+
<tcptssequence class="1000HZ" values="36DC8B96,36DC8BFB,36DC8C5C,36DC8CC1,36DC8D2A,36DC8D8C"/>
|
118
|
+
<trace port="80" proto="tcp">
|
119
|
+
<hop ttl="1" ipaddr="10.0.0.1" rtt="3.38"/>
|
120
|
+
<hop ttl="2" ipaddr="73.94.140.1" rtt="16.76"/>
|
121
|
+
<hop ttl="3" ipaddr="68.85.148.17" rtt="17.66" host="te-0-0-0-2-ur03.troutdale.or.bverton.comcast.net"/>
|
122
|
+
<hop ttl="4" ipaddr="68.87.216.13" rtt="18.16" host="ae-4-0-ar03.beaverton.or.bverton.comcast.net"/>
|
123
|
+
<hop ttl="5" ipaddr="68.85.243.253" rtt="17.51" host="ae-4-0-ar03.troutdale.or.bverton.comcast.net"/>
|
124
|
+
<hop ttl="6" ipaddr="68.86.91.197" rtt="24.30" host="pos-2-4-0-0-cr01.seattle.wa.ibone.comcast.net"/>
|
125
|
+
<hop ttl="7" ipaddr="208.178.58.85" rtt="20.78"/>
|
126
|
+
<hop ttl="8" ipaddr="64.214.174.246" rtt="39.95" host="Hurrican-Electric-LLC.Port-channel100.ar3.SJC2.gblx.net"/>
|
127
|
+
<hop ttl="9" ipaddr="184.105.222.13" rtt="38.44" host="10gigabitethernet3-2.core3.fmt2.he.net"/>
|
128
|
+
<hop ttl="10" ipaddr="65.49.10.218" rtt="40.50" host="linode-llc.10gigabitethernet7-6.core3.fmt2.he.net"/>
|
129
|
+
<hop ttl="11" ipaddr="74.207.244.221" rtt="37.59" host="scanme.nmap.org"/>
|
130
|
+
</trace>
|
131
|
+
<times srtt="34309" rttvar="2434" to="100000"/>
|
132
|
+
</host>
|
133
|
+
<taskbegin task="NSE" time="1374390873"/>
|
134
|
+
<taskend task="NSE" time="1374390873"/>
|
135
|
+
<runstats><finished time="1374390873" timestr="Sun Jul 21 00:14:33 2013" elapsed="1145.71" summary="Nmap done at Sun Jul 21 00:14:33 2013; 1 IP address (1 host up) scanned in 1145.71 seconds" exit="success"/><hosts up="1" down="0" total="1"/>
|
136
|
+
</runstats>
|
137
|
+
</nmaprun>
|
data/spec/scan_spec.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'nmap/scan'
|
3
|
+
|
4
|
+
describe Scan do
|
5
|
+
let(:type) { :syn }
|
6
|
+
let(:protocol) { :tcp }
|
7
|
+
|
8
|
+
describe "#initialize" do
|
9
|
+
subject { described_class.new(type,protocol) }
|
10
|
+
|
11
|
+
it "should accept a type and protocol" do
|
12
|
+
subject.type.should == type
|
13
|
+
subject.protocol.should == protocol
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should default services to []" do
|
17
|
+
subject.services.should == []
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "#to_s" do
|
22
|
+
subject { described_class.new(type,protocol) }
|
23
|
+
|
24
|
+
it "should include the type and protocol" do
|
25
|
+
subject.to_s.should == "#{protocol} #{type}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'nmap/scan_task'
|
3
|
+
|
4
|
+
describe ScanTask do
|
5
|
+
let(:name) { 'SYN Stealth Scan' }
|
6
|
+
let(:end_time) { Time.now }
|
7
|
+
let(:duration) { 10 }
|
8
|
+
let(:start_time) { end_time - duration }
|
9
|
+
let(:extrainfo) { '1000 total ports' }
|
10
|
+
|
11
|
+
subject do
|
12
|
+
described_class.new(
|
13
|
+
name,
|
14
|
+
start_time,
|
15
|
+
end_time,
|
16
|
+
extrainfo
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#duration" do
|
21
|
+
it "should be > 0" do
|
22
|
+
subject.duration.should > 0
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should be the time between the start_time and end_time" do
|
26
|
+
(subject.start_time + subject.duration).should == subject.end_time
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#to_s" do
|
31
|
+
it "should include the start_time, name and extrainfo" do
|
32
|
+
subject.to_s.should == "#{start_time}: #{name} (#{extrainfo})"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|