lib/pwn/plugins/transparent_browser.rb in pwn-0.5.191 vs lib/pwn/plugins/transparent_browser.rb in pwn-0.5.192

- old
+ new

@@ -39,11 +39,11 @@ # Supported Method Parameters:: # browser_obj1 = PWN::Plugins::TransparentBrowser.open( # browser_type: 'optional - :firefox|:chrome|:headless|:rest|:websocket (defaults to :chrome)', # proxy: 'optional - scheme://proxy_host:port || tor (defaults to nil)', - # with_devtools: 'optional - boolean (defaults to true)', + # devtools: 'optional - boolean (defaults to true)', # url: 'optional - URL to navigate to after opening browser (Defaults to about:about#RANDID)' # ) public_class_method def self.open(opts = {}) browser_type = opts[:browser_type] ||= :chrome @@ -58,12 +58,12 @@ proxy = "socks5://#{tor_obj[:ip]}:#{tor_obj[:port]}" browser_obj[:tor_obj] = tor_obj end devtools_supported = %i[chrome headless_chrome firefox headless_firefox headless] - with_devtools = opts[:with_devtools] ||= false - with_devtools = true if devtools_supported.include?(browser_type) && with_devtools + devtools = opts[:devtools] ||= false + devtools = true if devtools_supported.include?(browser_type) && devtools url = opts[:url] ||= "about:about##{SecureRandom.hex(8)}" # Let's crank up the default timeout from 30 seconds to 15 min for slow sites Watir.default_timeout = 900 @@ -128,11 +128,11 @@ this_profile['network.proxy.ssl'] = URI(proxy).host this_profile['network.proxy.ssl_port'] = URI(proxy).port end end - args.push('--devtools') if with_devtools + args.push('--devtools') if devtools options = Selenium::WebDriver::Firefox::Options.new( args: args, accept_insecure_certs: true ) @@ -149,11 +149,11 @@ if proxy args.push("--host-resolver-rules='MAP * 0.0.0.0 , EXCLUDE #{tor_obj[:ip]}'") if tor_obj args.push("--proxy-server=#{proxy}") end - if with_devtools + if devtools args.push('--auto-open-devtools-for-tabs') args.push('--disable-hang-monitor') end options = Selenium::WebDriver::Chrome::Options.new( @@ -256,10 +256,11 @@ TCPSocket.socks_port = tor_obj[:port] else browser_obj[:browser].proxy = proxy end end + puts browser_obj[:browser].get(url).body if url when :websocket if proxy if tor_obj TCPSocket.socks_server = tor_obj[:ip] @@ -283,14 +284,14 @@ return nil end if devtools_supported.include?(browser_type) rand_tab = SecureRandom.hex(8) - browser_obj[:browser].goto("about:about##{rand_tab}") + browser_obj[:browser].goto(url) browser_obj[:browser].execute_script("document.title = '#{rand_tab}'") - if with_devtools + if devtools driver = browser_obj[:browser].driver browser_obj[:devtools] = driver.devtools browser_obj[:devtools].send_cmd('DOM.enable') browser_obj[:devtools].send_cmd('Log.enable') @@ -306,10 +307,11 @@ browser_obj[:devtools].send_cmd('DOMSnapshot.enable') end browser_obj[:bidi] = driver.bidi + jmp_devtools_panel(browser_obj: browser_obj, panel: :elements) browser_obj[:browser].send_keys(:escape) end end browser_obj @@ -701,10 +703,11 @@ else raise 'ERROR: panel parameter must be :elements|:inspector|:console|:debugger|:sources|:network' end # Have to call twice for Chrome, otherwise devtools stays closed + browser.body.click browser.send_keys(hotkey) browser.send_keys(hotkey) if chrome_types.include?(browser_type) rescue StandardError => e raise e end @@ -745,10 +748,10 @@ public_class_method def self.help puts "USAGE: browser_obj1 = #{self}.open( browser_type: 'optional - :firefox|:chrome|:headless|:rest|:websocket (defaults to :chrome)', proxy: 'optional scheme://proxy_host:port || tor (defaults to nil)', - with_devtools: 'optional - boolean (defaults to true)' + devtools: 'optional - boolean (defaults to true)' ) browser = browser_obj1[:browser] puts browser.public_methods ********************************************************