lib/pwn/plugins/transparent_browser.rb in pwn-0.5.198 vs lib/pwn/plugins/transparent_browser.rb in pwn-0.5.199
- old
+ new
@@ -105,10 +105,34 @@
this_profile['browser.cache.memory.enable'] = false
this_profile['browser.cache.offline.enable'] = false
this_profile['devtools.cache.disabled'] = true
this_profile['dom.caches.enabled'] = false
+ # DevTools ToolBox Settings in Firefox about:config
+ this_profile['devtools.f12.enabled'] = true
+ this_profile['devtools.toolbox.host'] = 'right'
+ this_profile['devtools.toolbox.sidebar.width'] = 1400
+ this_profile['devtools.toolbox.splitconsoleHeight'] = 200
+
+ # DevTools Debugger Settings in Firefox about:config
+ this_profile['devtools.toolbox.selectedTool'] = 'jsdebugger'
+ this_profile['devtools.debugger.start-panel-size'] = 200
+ this_profile['devtools.debugger.end-panel-size'] = 200
+ this_profile['devtools.debugger.auto-pretty-print'] = true
+ # Re-enable once syntax highlighting is fixed
+ # this_profile['devtools.debugger.ui.editor-wrapping'] = true
+ this_profile['devtools.debugger.features.javascript-tracing'] = true
+ this_profile['devtools.debugger.xhr-breakpoints-visible'] = true
+ this_profile['devtools.debugger.expressions-visible'] = true
+ this_profile['devtools.debugger.dom-mutation-breakpoints-visible'] = true
+ this_profile['devtools.debugger.features.async-live-stacks'] = true
+ this_profile['devtools.debugger.features.autocomplete-expressions'] = true
+ this_profile['devtools.debugger.features.code-folding'] = true
+ this_profile['devtools.debugger.features.command-click'] = true
+ this_profile['devtools.debugger.features.component-pane'] = true
+ this_profile['devtools.debugger.map-scopes-enabled'] = true
+
# caps = Selenium::WebDriver::Remote::Capabilities.firefox
# caps[:acceptInsecureCerts] = true
if proxy
this_profile['network.proxy.type'] = 1
@@ -440,10 +464,44 @@
rescue StandardError => e
raise e
end
# Supported Method Parameters::
+ # PWN::Plugins::TransparentBrowser.update_about_config(
+ # browser_obj: browser_obj1,
+ # key: 'required - key to update in about:config',
+ # value: 'required - value to set for key in about:config'
+ # )
+
+ public_class_method def self.update_about_config(opts = {})
+ browser_obj = opts[:browser_obj]
+ supported = %i[firefox headless_firefox]
+ verify_devtools_browser(browser_obj: browser_obj, supported: supported)
+
+ key = opts[:key]
+ raise 'ERROR: key parameter is required' if key.nil?
+
+ value = opts[:value]
+ raise 'ERROR: value parameter is required' if value.nil?
+
+ browser = browser_obj[:browser]
+ browser_type = browser_obj[:type]
+ # chrome_types = %i[chrome headless_chrome]
+ firefox_types = %i[firefox headless_firefox]
+
+ browser.goto('about:config')
+ # Confirmed working in Firefox
+ js = %{Services.prefs.setStringPref("#{key}", "#{value}")} if firefox_types.include?(browser_type)
+ console(browser_obj: browser_obj, js: js)
+ browser.back
+ rescue Timeout::Error, Timeout::ExitException
+ console_resp
+ rescue StandardError => e
+ raise e
+ end
+
+ # Supported Method Parameters::
# tabs = PWN::Plugins::TransparentBrowser.list_tabs(
# browser_obj: 'required - browser_obj returned from #open method)'
# )
public_class_method def self.list_tabs(opts = {})
@@ -893,9 +951,15 @@
) {|char| browser_obj1.text_field(name: \"search\").send_keys(char) }
console_resp = #{self}.console(
browser_obj: 'required - browser_obj returned from #open method)',
js: 'required - JavaScript expression to evaluate'
+ )
+
+ #{self}.update_about_config(
+ browser_obj: 'required - browser_obj returned from #open method)',
+ key: 'required - key to update in about:config',
+ value: 'required - value to set for key in about:config'
)
tabs = #{self}.list_tabs(
browser_obj: 'required - browser_obj returned from #open method)'
)