nmap_http_title_dumper 0.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.
- checksums.yaml +7 -0
- data/bin/nmap_http_title_dumper +141 -0
- metadata +131 -0
checksums.yaml
ADDED
@@ -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: []
|