Module: PWN::Plugins::HTTPInterceptHelper
- Defined in:
- lib/pwn/plugins/http_intercept_helper.rb
Overview
This plugin was created to generate UTF-8 characters for fuzzing
Constant Summary collapse
Class Method Summary collapse
-
.authors ⇒ Object
- Author(s)
-
0day Inc.
-
.hash_to_raw(opts = {}) ⇒ Object
- Supported Method Parameters
-
request_raw = PWN::Plugins::HTTPInterceptHelper.hash_to_raw( request_hash: ‘required => request_hash object returned by #raw_to_hash method’ ).
-
.help ⇒ Object
Display Usage for this Module.
-
.raw_to_hash(opts = {}) ⇒ Object
- Supported Method Parameters
-
request_hash = PWN::Plugins::HTTPInterceptHelper.raw_to_hash( request_raw: ‘required => raw http request string to convert to hash’ ).
Class Method Details
.authors ⇒ Object
- Author(s)
-
0day Inc. <[email protected]>
101 102 103 104 105 |
# File 'lib/pwn/plugins/http_intercept_helper.rb', line 101 public_class_method def self. "AUTHOR(S): 0day Inc. <[email protected]> " end |
.hash_to_raw(opts = {}) ⇒ Object
- Supported Method Parameters
-
request_raw = PWN::Plugins::HTTPInterceptHelper.hash_to_raw(
request_hash: 'required => request_hash object returned by #raw_to_hash method')
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/pwn/plugins/http_intercept_helper.rb', line 79 public_class_method def self.hash_to_raw(opts = {}) request_hash = opts[:request_hash] # Populate HTTP Request Line request_raw = "#{request_hash[:http_method]} " request_raw = "#{request_raw}#{request_hash[:http_resource_path]} " request_raw = "#{request_raw}#{request_hash[:http_version]}\r\n" # Populate HTTP Headers request_hash[:http_headers].each do |key, header_val| request_raw = "#{request_raw}#{key}: #{header_val}\r\n" end # Populate HTTP Body (If Applicable) request_raw = "#{request_raw}\r\n" request_raw = "#{request_raw}#{request_hash[:http_body]}" unless request_hash[:http_body] == '' rescue StandardError => e raise e end |
.help ⇒ Object
Display Usage for this Module
109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/pwn/plugins/http_intercept_helper.rb', line 109 public_class_method def self.help puts "USAGE: request_hash = PWN::Plugins::HTTPInterceptHelper.raw_to_hash( request_raw: 'required => raw http request string to convert to hash' ) request_raw = PWN::Plugins::HTTPInterceptHelper.hash_to_raw( request_hash: 'required => request_hash object returned by #raw_to_hash method' ) " end |
.raw_to_hash(opts = {}) ⇒ Object
- Supported Method Parameters
-
request_hash = PWN::Plugins::HTTPInterceptHelper.raw_to_hash(
request_raw: 'required => raw http request string to convert to hash')
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/pwn/plugins/http_intercept_helper.rb', line 14 public_class_method def self.raw_to_hash(opts = {}) request_raw = opts[:request_raw].to_s request_hash = {} # Basic Parsing Begins raw_intercepted_request_arr = request_raw.split("\r\n") # Parse HTTP Protocol Request Line raw_request_line_arr = raw_intercepted_request_arr[0].split request_hash[:http_method] = raw_request_line_arr[0].to_s.upcase.to_sym request_hash[:http_resource_path] = URI.parse(raw_request_line_arr[1]) request_hash[:http_version] = raw_request_line_arr[-1] # Begin Parsing HTTP Headers & Body (If Applicable) request_hash[:http_headers] = {} case request_hash[:http_method] when :CONNECT, :DELETE, :GET, :HEAD, :OPTIONS, :PATCH, :PUT, :TRACE puts request_hash[:http_method] when :POST # Parse HTTP Headers raw_intercepted_request_arr[1..-1].each do |val| break if val == '' # This may cause issues key = '' val.each_char do |char| break if char == ':' key = "#{key}#{char}" end header_val = val.gsub(/^#{key}:/, '').strip request_hash[:http_headers][key.to_sym] = header_val end # Parse HTTP Body raw_request_body = [] raw_intercepted_request_arr[1..-1].each_with_index do |val, index| next if val != '' # This may cause issues break_index = index + 2 request_hash[:http_body] = raw_intercepted_request_arr[break_index..-1].join(',') end else raise "HTTP Method: #{request_hash[:http_method]} Currently Unsupported>" end request_hash rescue StandardError => e raise e end |