Module: PWN::Plugins::IPInfo
- Defined in:
- lib/pwn/plugins/ip_info.rb
Overview
This plugin leverages ip-api.com’s REST API to discover information about IP addresses 1,000 daily requests are allowed for free
Class Method Summary collapse
-
.authors ⇒ Object
- Author(s)
-
0day Inc.
-
.get(opts = {}) ⇒ Object
- Supported Method Parameters
-
ip_info_struc = PWN::Plugins::IPInfo.get( target: ‘required - IP or Host to lookup’, proxy: ‘optional - use a proxy’, tls_port: ‘optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.’ ).
-
.help ⇒ Object
Display Usage for this Module.
Class Method Details
.authors ⇒ Object
- Author(s)
-
0day Inc. <[email protected]>
125 126 127 128 129 |
# File 'lib/pwn/plugins/ip_info.rb', line 125 public_class_method def self. "AUTHOR(S): 0day Inc. <[email protected]> " end |
.get(opts = {}) ⇒ Object
- Supported Method Parameters
-
ip_info_struc = PWN::Plugins::IPInfo.get(
target: 'required - IP or Host to lookup', proxy: 'optional - use a proxy', tls_port: 'optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.'
)
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/pwn/plugins/ip_info.rb', line 55 public_class_method def self.get(opts = {}) target = opts[:target].to_s.scrub.strip.chomp proxy = opts[:proxy] tls_port = opts[:tls_port] tls_port ||= 443 ip_info_resp = [] if IPAddress.valid?(target) ip_resp_json = ip_info_rest_call(ip: target, proxy: proxy) ip_resp_json[:target] = target ip_info_resp.push(ip_resp_json) else Resolv::DNS.new.each_address(target) do |ip| ip_resp_json = ip_info_rest_call(ip: ip, proxy: proxy) ip_resp_json[:target] = target ip_info_resp.push(ip_resp_json) end end if proxy.nil? ip_info_resp.each do |ip_resp| tls_port_avail = PWN::Plugins::Sock.check_port_in_use( server_ip: target, port: tls_port ) ip_resp[:tls_avail] = tls_port_avail ip_resp[:ca_issuer_uris] = nil ip_resp[:cert_subject] = nil ip_resp[:cert_issuer] = nil ip_resp[:cert_serial] = nil ip_resp[:crl_uris] = nil ip_resp[:extensions] = nil ip_resp[:not_before] = nil ip_resp[:not_after] = nil ip_resp[:oscsp_uris] = nil ip_resp[:pem] = nil ip_resp[:signature_algorithm] = nil ip_resp[:version] = nil next unless tls_port_avail cert_obj = PWN::Plugins::Sock.get_tls_cert( target: target, port: tls_port ) next unless cert_obj.is_a?(OpenSSL::X509::Certificate) ip_resp[:ca_issuer_uris] = cert_obj.ca_issuer_uris.map(&:to_s) unless cert_obj.ca_issuer_uris.nil? ip_resp[:cert_subject] = cert_obj.subject.to_s ip_resp[:cert_issuer] = cert_obj.issuer.to_s ip_resp[:cert_serial] = cert_obj.serial.to_s ip_resp[:crl_uris] = cert_obj.crl_uris.map(&:to_s) unless cert_obj.crl_uris.nil? ip_resp[:extensions] = cert_obj.extensions.map(&:to_s) unless cert_obj.extensions.nil? ip_resp[:not_before] = cert_obj.not_before.to_s ip_resp[:not_after] = cert_obj.not_after.to_s ip_resp[:oscsp_uris] = cert_obj.ocsp_uris.map(&:to_s) unless cert_obj.ocsp_uris.nil? ip_resp[:pem] = cert_obj.to_pem.to_s ip_resp[:signature_algorithm] = cert_obj.signature_algorithm.to_s ip_resp[:version] = cert_obj.version.to_s end end ip_info_resp rescue StandardError => e raise e end |
.help ⇒ Object
Display Usage for this Module
133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/pwn/plugins/ip_info.rb', line 133 public_class_method def self.help puts "USAGE: ip_info_struc = #{self}.get( target: 'required - IP or Host to lookup', proxy: 'optional - use a proxy', tls_port: 'optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.' ) #{self}.authors " end |