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
********************************************************