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 |