nmap_http_title_dumper 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/bin/nmap_http_title_dumper +141 -0
  3. metadata +131 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 50d857e2dcdf171316f0c894374128a8f761560a
4
+ data.tar.gz: 938a3e82827ac9b5aebac8e356ef5f9283cb7180
5
+ SHA512:
6
+ metadata.gz: 3a9c9f718aca60b541164160b7a7ae78d700929e5578a041244b3ff296b0420f1fc804a47d4bffbaa50931a3e262fd66c16549d9e7181a58dadf375538509827
7
+ data.tar.gz: 07c62b8521e03e3f97856304f4c7bb854ae84b19977abf93cd1b7722b96f3d1a1917b8f0b4f091db350d241f30e3b286a100e41136185e9a41f59bd03775add6
@@ -0,0 +1,141 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'aanmapxml'
4
+ require 'aastdlib'
5
+ require 'thor'
6
+
7
+ class Interface < Thor
8
+
9
+ desc "dump", "Dump HTTP titles and links by host."
10
+
11
+ option :input_file,
12
+ aliases: ["-i"],
13
+ required: true,
14
+ type: :string,
15
+ desc: "Nmap XML file to parse"
16
+
17
+ option :output_file,
18
+ aliases: ["-o"],
19
+ required: false,
20
+ type: :string,
21
+ desc: "File to capture output"
22
+
23
+ def dump()
24
+
25
+ infile = options[:input_file]
26
+ outfile = options[:output_file]
27
+
28
+ raise "Error: Input file doesn't exist." if !File::exist?(infile)
29
+
30
+ puts
31
+ puts "Input File: #{infile}".prefix
32
+
33
+ if outfile and File::exist?(outfile)
34
+
35
+ puts
36
+ print "Output file already exists! Overwrite it? (y/n): "
37
+ resp = STDIN.gets.chomp()
38
+
39
+ if resp == "n"
40
+
41
+ puts "Execution aborted!".prefix()
42
+ exit
43
+
44
+ end
45
+ puts
46
+
47
+ end
48
+
49
+ puts "Output File: #{outfile}".prefix if outfile
50
+
51
+ # parse the input file
52
+ puts "Parsing the XML file".prefix
53
+ parser = NmapXML::Parser.new(xml_file: infile)
54
+
55
+ print "Dumping HTTP service information".prefix()
56
+
57
+ if outfile
58
+
59
+ puts " to output file: #{outfile}..."
60
+
61
+ else
62
+
63
+ puts " to stdout..."
64
+ puts
65
+
66
+ end
67
+
68
+ # open the output file for writing
69
+ outfile = File::open(outfile, 'w+') if outfile
70
+
71
+ reg = /http_(server|title)/
72
+ parser.hosts.each do |host|
73
+
74
+ host_address = host.addresses.by_type(:ipv4)
75
+ next if !host_address
76
+ host_address = host_address.address
77
+
78
+ banner = "Host: " + host_address
79
+
80
+ print_and_log(banner.borderize, outfile)
81
+
82
+ host.ports.by_script_id(reg).each do |port|
83
+
84
+ port.service.respond_to?(:tunnel) ? scheme = "https://" : scheme = "http://"
85
+
86
+ port_number = port.number.to_s
87
+
88
+ title, header = nil, nil
89
+ port.scripts.by_id(reg).each do |script|
90
+
91
+ title = script.output if script.id =~ /title/
92
+ header = script.output if script.id =~ /server/
93
+
94
+ end
95
+
96
+ output = "Raw URL: #{scheme}#{host_address}:#{port_number}"
97
+ print_and_log(output, outfile)
98
+
99
+ if host.hostnames.count > 1
100
+ output = "Potential Vhosts: "
101
+ hostnames.each {|hn| output += "\n"+scheme+hostname+":"+port_number}
102
+ print_and_log(output, outfile)
103
+ end
104
+
105
+ if title or header
106
+
107
+ print_and_log("Server: #{header}", outfile) if header
108
+ print_and_log("Title: #{title}", outfile) if title
109
+
110
+ else
111
+
112
+ print_and_log("No title or server header available!", outfile)
113
+
114
+ end
115
+
116
+ print_and_log("", outfile)
117
+
118
+ end
119
+
120
+ end
121
+
122
+ puts "Done!".prefix()
123
+
124
+ end
125
+
126
+ no_commands do
127
+
128
+ def print_and_log(output,outfile)
129
+
130
+ puts output unless outfile
131
+ outfile.puts(output) if outfile
132
+
133
+ end
134
+
135
+ end
136
+
137
+ end
138
+
139
+ puts
140
+ Interface.start(ARGV)
141
+ puts
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nmap_http_title_dumper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - arch4ngel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-09-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.15'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.15'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: aanmapxml
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: aastdlib
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: thor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.20.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.20.0
97
+ description:
98
+ email:
99
+ - justinangel86@gmail.com
100
+ executables:
101
+ - nmap_http_title_dumper
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - bin/nmap_http_title_dumper
106
+ homepage: https://github.com/arch4ngel/nmap_http_title_dumper
107
+ licenses:
108
+ - MIT
109
+ metadata:
110
+ allowed_push_host: https://rubygems.org
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubyforge_project:
127
+ rubygems_version: 2.5.2
128
+ signing_key:
129
+ specification_version: 4
130
+ summary: Parse an Nmap XML file and dump HTTP titles along with URLs.
131
+ test_files: []