arkenfox / user.js

Firefox privacy, security and anti-tracking: a comprehensive user.js template for configuration and hardening
MIT License
10.25k stars 519 forks source link

FYI: excellent top-notch tool for comparing user.js files #454

Closed claustromaniac closed 6 years ago

claustromaniac commented 6 years ago

Go to : https://github.com/claustromaniac/Compare-UserJS

-- original post

I just want to share with you all my latest scripting endeavor. I hope you don't mind.

All feedback is welcome.

Feel free to close this issue whenever you want, since it's not really an issue.

Thanks.

earthlng commented 6 years ago

very niiiice

I tested it and compared the output from my script with yours ...

1.txt - certain part of the ghacks user.js (253 prefs) 2.txt - TBB v8a9 default prefs (3336 prefs)

yours only detects 3333 in 2.txt

mine detected 76 matching prefs (yours: 72), 156 with different values (yours: 450! you need to divide by 3, thus 150 actual prefs) and 21 not declared in 2.txt (same as yours)

your script also detects 10 prefs exist in both files but are inactive in 2.txt but there are no inactive prefs in 2.txt. Probably due to prefs like this (note the /* in https://*):

user_pref("extensions.webextensions.base-content-security-policy", "script-src 'self' https://* moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; object-src 'self' https://* moz-extension: blob: filesystem:;");

IDK if that's the only thing it stumbles on though

earthlng commented 6 years ago

FYI when I pasted the content of 2.txt I hadn't opened the file as UTF-8 and thus some chars are fubar-ed (fe in font.system.whitelist). It doesn't really matter for the purpose of this comparison but if you want the original UTF-8 file I can upload it somewhere. Or maybe it's recoverable from the pasty, IDK.

claustromaniac commented 6 years ago

maybe we can add it here.

Sure, if you want.

you need a space between elegant and [Citation needed.]

You're right :+1:

@earthlng Thanks for testing it! I noticed the wrong number of different prefs yesterday but I was busy so I didn't touch it. The thing about prefs with https://*is a great catch. I will fix those things soon.

I still see some room for improvements, other than that. I could make the algorithm smarter in more than a few ways, really, but there might be a significant trade-off in performance, so I'll probably just retouch the regexes a bit, for starters. I also noticed that sometimes it takes it a pretty long while to parse some files. I don't have much experience with PowerShell, but with some more analysis I may eventually come up with some way to make it faster.

EDIT: OK, I noticed a handful of things I can try. Will probably be a bit busy today, but I have some significant improvements in mind for later.

claustromaniac commented 6 years ago

v1.1 overview: I noticed some other minor issues, and I fixed them all. The thing is also a bit smarter, it can even parse *pref() calls that include line breaks in the syntax (as long as the breaks are not in the prefname or value parameters). There are still many things it can't understand, but it should be more than sufficiently good for typical use, I guess.

I also streamlined the code overall. Some lines weren't necessary at all. The output looks slightly different, too.

I considered making more changes, maybe add more parameters for additional options and whatnot.

claustromaniac commented 6 years ago

Hmph. I came across one weird bug already. STR: Compare ghacks-user.js to master-branch pyllyukko's. If you don't get toolkit.telemetry.unified as having a possible syntax error, then it's something on my end, which I doubt.

Weird shit seems to chase me everywhere I go. There's no obvious reason for that to happen. I'll look into it later.

earthlng commented 6 years ago

I tested it with the version of the script I had of your initial v1.1 release and it didn't have that problem. Then I downloaded your latest master and it does show that pref as possibly broken. Diffing the 2 scripts shows that you changed 4 lines in your latest version:

in Get-UserJSPrefs(): old lines:

$val = ($line -creplace "^.*pref\s*\(\s*['""][^'""]+['""]\s*,\s*(?:(?:['""](.*?)['""])|(true|false|-?[0-9]+))\s*\).*", '$1$2')

if ($broken) {$val = ($line -creplace "^.*pref\s*\(\s*['""][^'""]+['""]\s*,(.*?)\).*", '$1')}

new:

$val = ($line -creplace "^.*pref\(['""][^'""]+['""],(?:(?:['""](.*?)['""])|(true|false|-?[0-9]+))\);.*", '$1$2')

if ($broken) {$val = ($line -creplace "^.*pref\(['""][^'""]+['""],(.*?)\);.*", '$1')}

in Main Execution: old lines:

# Remove unnecessary space and new-line characters within the target JS expressions.
$fileA = ($fileA -creplace "(?s)pref\s*\(\s*(\S.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')
$fileB = ($fileB -creplace "(?s)pref\s*\(\s*(\S.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')

new:

# Remove unnecessary space and new-line characters within the target JS expressions.
$fileA = ($fileA -creplace "(?s)pref\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')
$fileB = ($fileB -creplace "(?s)pref\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')

From looking at the output (it should be ==>+1 space+1 tab+pref value) it detects the pref value as 1 space+false. A bit more debugging shows that it removes the spaces in the description of 0330 instead of the pref line: original:

/* 0330: disable telemetry
 * the pref (.unified) affects the behaviour of the pref (.enabled)
 * ...
 * or release builds (true and false respectively), see [2]
 * ... ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false);

after Remove unnecessary space and new-line characters within the target JS expressions:

/* 0330: disable telemetry
 * the pref(.unified) affects the behaviour of the pref (.enabled)
 * ...
 * or release builds (true and false respectively),see [2]
 * ... ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled",false);

ps: change $sep to use $nl instead of \n

earthlng commented 6 years ago

An option to hide the matching prefs would be nice fe if I'd use this to compare FF's default values for our Diffs. I'd still like to know the number of matching prefs but don't need the 3000+ prefs in the output. maybe something like this (not sure if this is the correct syntax!):

if ($matching_prefs) {... + " prefs match:" + $nl+$nl + $(If ($hideMatching) {""} Else {$matching_prefs}) + $nl}

And maybe show which of the matching and different prefs are inactive, fe like this:

    extensions.pocket.enabled   ==>     false
    (inactive) general.appname.override     ==>     Netscape

...

    (inactive) xpinstall.signatures.required
        ghacks.js:  false
        pk.js:  true

Showing the number of combined unique prefs in the report would also be nice to have IMO. Maybe together with a breakdown of each category and making it a bit clearer what each category means value and state-wise, for example:

Compared files: ghacks.js, pk.js
590  prefs in ghacks.js (ghacks.js)
305  prefs in pk.js (pk.js)

xxxx  combined unique prefs
 139  matching prefs, both value and state (active/inactive)
  14  prefs with different values but matching state
  78  prefs not declared in ghacks.js
 363  prefs not declared in pk.js
  67  prefs with matching values but inactive in ghacks.js
   7  prefs with matching values but inactive in pk.js

As for the not declared they could also show the (inactive) in front of the prefname as well as the prefvalue behind them.

If you prefer the output as is then maybe add an option the enable the more detailed output.

earthlng commented 6 years ago

An option to hide the matching prefs

similarly when I compare a user.js against the 3000+ default values of FF, I don't care about the ~2800 prefs not declared in the user.js. A bitflag to hide the output of matching and/or the 2 not declared would be a neat solution and would only require 1 additional int parameter. Like, 7 would be the default and show everything (if bitflag < 0 or bitflag > 7 then bitflag = 7); subtract 4 to hide the matching prefs and/or sub 1 and/or 2 to hide the not declared in either fileA and/or fileB.

earthlng commented 6 years ago

Do you have any good links to documents and/or references that you used to learn PS? On the only official MS documentation I found there's wasn't even anything about available variable types and shit.

Oh and FUCK Microsoft for apparently being unable to create ANY fucking page that works without JS ffs! The complete Go Programming Language Specification is a single static page that works perfectly fine without JS - why the fuck can't MS do anything right?! (sorry for the rant :)

claustromaniac commented 6 years ago

Thanks for all the feedback mate! You're a time saver.

I'll be looking into the issue with toolkit.telemetry.unified in a while. I had too some of the ideas you brought up, especially the ones about hiding part of the output. I'll try to implement all those changes, it shouldn't be much work.

FUCK Microsoft for apparently being unable to create ANY fucking page that works without JS ffs!

IKR. I mostly use SS64.com for that very reason. Look here and here, mostly.

earthlng commented 6 years ago

Thanks for the links, that looks to be exactly what I need :+1:

claustromaniac commented 6 years ago

Without having tested anything yet, I can see the issue clearly now. Did I mention you're a time saver?

It's the regex for removing spaces. For some reason I don't remember (probably sleep-deprived logic), I removed the quotes from the part that is meant to match the prefname.

The regex reads:

(?s)pref\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*;

When it should be a bit more strict, at the very least something like:

(?s)pref\s*\(\s*['""](.+?)['""]\s*,\s*(.+?)\s*\)\s*;

Without specifying the quotes, that regex interpets this as the prefname:

.unified) affects the behaviour of the pref (.enabled)
 * ...
 * or release builds (true and false respectively)

... and this as the value:

 see [2]
 * ... ***/
user_pref("toolkit.telemetry.unified", false

:man_facepalming:

claustromaniac commented 6 years ago

I think I'll use this regex for removing spaces instead:

(?s)pref\s*\(\s*['""](\S*?)['""]\s*,\s*(.+?)\s*\)\s*;

It matches as many non-space non-newline characters as it can as the prefname. It should even be faster too.

earthlng commented 6 years ago

that regex interpets this as the prefname

Yeah from looking only at the code that's what I initially thought too but it's not what's happening. It wouldn't be able to report toolkit.telemetry.unified as a broken pref if it matched that long ass string as its prefname.

I think I'll use this regex for removing spaces instead:

while that would fix this specific case it would still be possible to break it. I think regardless of what you do in the Remove unnecessary space and new-line characters within the target JS expressions part, you should still put the whitespace checks back in the regexes within Get-UserJSPrefs()

claustromaniac commented 6 years ago

It wouldn't be able to report toolkit.telemetry.unified as a broken pref if it matched that long ass string as its prefname.

No, because that regex only removes spaces and line breaks, it doesn't extract prefname and value. That part is done in the Get-UserJSPref function.

while that would fix this specific case it would still be possible to break it.

No, because ... what I just said :grin: That part is taken care of ahead in the flow.

claustromaniac commented 6 years ago

What do you think about having the script default to hiding the matching prefs and an option for showing the full report (instead of an option for hiding the matches)? I think I'd like that better myself.

claustromaniac commented 6 years ago

No, because ... what I just said

Thinking it through... Something like this should break it:

/* the syntax usually begins with user_pref("prefname", but you already know that.
All of this is also part of the value. I'm such a troll.
*/
user_pref("blabla", true);

It would be uncommon, but I guess it is possible after all. Alright, I'll add spaces to that specific part of the regex in the Get-UserJSPrefs function.

earthlng commented 6 years ago

IMO showing the matching prefs by default is probably more in line with what people want (in most cases)

Thinking it through... Something like this should break it

told you :smiley_cat:

claustromaniac commented 6 years ago

Look who's talking. :laughing: I'd say we're all nerds around here. GitHub is pretty much full of nerds.

I'll take it as a compiment, though.

claustromaniac commented 6 years ago

@earthlng, regarding the option for hiding part of the output, what do you think about something like this?

-hideMask <int>

0 - hide nothing (default)
1 - hide matches
2 - hide differences
4 - hide declared in A but not in B
8 - hide declared in B but not in A
16 - hide inactive in A but active in B
32 - hide inactive in B but active in A

I can use bitwise operators to keep the code looking clean.

claustromaniac commented 6 years ago

Updated to v1.2 v1.2.1 v1.2.2.

earthlng commented 6 years ago

I don't know why anyone would ever want to hide fe pref differences but I guess it's better to have the option and not need it than to not have the option at all.

claustromaniac commented 6 years ago

Yup. If someone does want it, they have it. It didn't cost even a single extra line of code, just ~25 bytes per filter, so there was no real good reason not to include those options too.

I still want to test this more, but it is already looking quite complete for me. I hope I'm not missing/overlooking anything.

claustromaniac commented 6 years ago

I don't see why that would be necessary. The output wouldn't be completely honest if it ignored arbitrary prefs, either.

Click to see what the output looks like. :point_left:

``` :::::::::::: { Compare-UserJS Report } :::::::::::: (date removed) Compared files: ghacks.js, pk.js 592 unique prefs in ghacks.js 305 unique prefs in pk.js 670 combined unique prefs 136 matching prefs, both value and state (active/inactive) 13 prefs with different values but same matching state 78 prefs not declared in ghacks.js 365 prefs not declared in pk.js 71 prefs with matching values but inactive in ghacks.js 7 prefs with matching values but inactive in pk.js ------------------------------------------------------------------------------ The following 136 prefs match: app.shield.optoutstudies.enabled ==> false beacon.enabled ==> false breakpad.reportURL ==> "" browser.cache.disk.enable ==> false browser.cache.disk_cache_ssl ==> false (inactive) browser.cache.memory.enable ==> false browser.crashReports.unsubmittedCheck.enabled ==> false browser.display.use_document_fonts ==> 0 browser.download.folderList ==> 2 browser.download.useDownloadDir ==> false browser.fixup.alternate.enabled ==> false browser.fixup.hide_user_pass ==> true browser.formfill.enable ==> false browser.helperApps.deleteTempFileOnExit ==> true browser.newtab.preload ==> false browser.newtabpage.enabled ==> false browser.pagethumbnails.capturing_disabled ==> true browser.safebrowsing.downloads.remote.enabled ==> false browser.search.countryCode ==> "US" browser.search.geoip.url ==> "" browser.search.geoSpecificDefaults ==> false browser.search.region ==> "US" browser.search.suggest.enabled ==> false browser.search.update ==> false browser.send_pings ==> false browser.send_pings.require_same_host ==> true browser.sessionstore.privacy_level ==> 2 browser.shell.checkDefaultBrowser ==> false browser.shell.shortcutFavicons ==> false browser.ssl_override_behavior ==> 1 browser.tabs.crashReporting.sendReport ==> false browser.uitour.enabled ==> false browser.urlbar.autocomplete.enabled ==> false browser.urlbar.autoFill ==> false browser.urlbar.autoFill.typed ==> false browser.urlbar.filter.javascript ==> true browser.urlbar.suggest.history ==> false browser.urlbar.suggest.searches ==> false browser.urlbar.trimURLs ==> false datareporting.healthreport.uploadEnabled ==> false datareporting.policy.dataSubmissionEnabled ==> false devtools.chrome.enabled ==> false devtools.debugger.remote-enabled ==> false devtools.webide.autoinstallADBHelper ==> false devtools.webide.enabled ==> false dom.allow_cut_copy ==> false dom.event.clipboardevents.enabled ==> false (inactive) dom.event.contextmenu.enabled ==> false (inactive) dom.indexedDB.enabled ==> false dom.ipc.plugins.flash.subprocess.crashreporter.enabled ==> false dom.ipc.plugins.reportCrashURL ==> false dom.serviceWorkers.enabled ==> false (inactive) dom.storage.enabled ==> false dom.vibrator.enabled ==> false dom.webaudio.enabled ==> false dom.webnotifications.enabled ==> false extensions.blocklist.enabled ==> true extensions.getAddons.cache.enabled ==> false extensions.pocket.enabled ==> false (inactive) general.appname.override ==> "Netscape" (inactive) general.appversion.override ==> "5.0 (Windows)" (inactive) general.oscpu.override ==> "Windows NT 6.1" (inactive) general.platform.override ==> "Win32" geo.wifi.uri ==> "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%" gfx.font_rendering.opentype_svg.enabled ==> false intl.accept_languages ==> "en-US, en" javascript.options.asmjs ==> false javascript.use_us_english_locale ==> true keyword.enabled ==> false layout.css.visited_links_enabled ==> false lightweightThemes.update.enabled ==> false (inactive) loop.enabled ==> false media.getusermedia.audiocapture.enabled ==> false media.getusermedia.screensharing.enabled ==> false media.gmp-gmpopenh264.enabled ==> false media.navigator.enabled ==> false media.navigator.video.enabled ==> false media.peerconnection.enabled ==> false media.peerconnection.ice.default_address_only ==> true media.peerconnection.ice.no_host ==> true network.allow-experiments ==> false network.captive-portal-service.enabled ==> false network.cookie.thirdparty.sessionOnly ==> true network.dns.disablePrefetch ==> true network.dns.disablePrefetchFromHTTPS ==> true network.http.speculative-parallel-limit ==> 0 network.IDN_show_punycode ==> true network.predictor.enabled ==> false network.prefetch-next ==> false network.proxy.socks_remote_dns ==> true plugin.state.flash ==> 0 plugin.state.java ==> 0 plugins.click_to_play ==> true privacy.clearOnShutdown.cache ==> true privacy.clearOnShutdown.downloads ==> true privacy.clearOnShutdown.formdata ==> true privacy.clearOnShutdown.history ==> true privacy.clearOnShutdown.offlineApps ==> true privacy.clearOnShutdown.sessions ==> true privacy.cpd.cache ==> true privacy.cpd.formdata ==> true privacy.cpd.history ==> true privacy.cpd.offlineApps ==> true privacy.cpd.sessions ==> true privacy.firstparty.isolate ==> true privacy.resistFingerprinting ==> true privacy.sanitize.sanitizeOnShutdown ==> true privacy.sanitize.timeSpan ==> 0 security.ask_for_password ==> 2 security.cert_pinning.enforcement_level ==> 2 security.csp.enable ==> true security.csp.experimentalEnabled ==> true security.insecure_field_warning.contextual.enabled ==> true security.insecure_password.ui.enabled ==> true security.mixed_content.block_active_content ==> true security.mixed_content.block_display_content ==> true security.OCSP.enabled ==> 1 security.OCSP.require ==> true security.pki.sha1_enforcement_level ==> 1 security.ssl.disable_session_identifiers ==> true security.ssl.enable_ocsp_stapling ==> true security.ssl.errorReporting.automatic ==> false (inactive) security.ssl.require_safe_negotiation ==> true security.ssl.treat_unsafe_negotiation_as_broken ==> true security.tls.version.fallback-limit ==> 3 security.tls.version.max ==> 4 services.blocklist.update_enabled ==> true signon.autofillForms ==> false signon.autofillForms.http ==> false signon.formlessCapture.enabled ==> false toolkit.telemetry.enabled ==> false toolkit.telemetry.unified ==> false webgl.disabled ==> true webgl.disable-extensions ==> true webgl.disable-fail-if-major-performance-caveat ==> true webgl.min_capability_mode ==> true ------------------------------------------------------------------------------ The following 13 prefs have different values: (inactive) browser.aboutHomeSnippets.updateUrl ghacks.js: "data:," pk.js: "" (inactive) extensions.blocklist.url ghacks.js: "https://blocklists.settings.services.mozilla.com/v1/blocklist/3/%APP_ID%/%APP_VERSION%/" pk.js: "https://blocklist.addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/" (inactive) general.useragent.override ghacks.js: "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0" pk.js: "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0" (inactive) media.gmp-manager.url ghacks.js: "data:text/plain," pk.js: "" (inactive) network.cookie.cookieBehavior ghacks.js: 2 pk.js: 1 (inactive) network.http.referer.spoofSource ghacks.js: false pk.js: true (inactive) pdfjs.disabled ghacks.js: false pk.js: true (inactive) privacy.clearOnShutdown.cookies ghacks.js: false pk.js: true (inactive) privacy.cpd.cookies ghacks.js: false pk.js: true (inactive) security.dialog_enable_delay ghacks.js: 700 pk.js: 1000 (inactive) security.password_lifetime ghacks.js: 5 pk.js: 1 (inactive) security.tls.version.min ghacks.js: 3 pk.js: 1 (inactive) xpinstall.signatures.required ghacks.js: false pk.js: true ------------------------------------------------------------------------------ The following 78 prefs are not declared in ghacks.js: browser.download.manager.retention ==> 0 browser.formfill.expire_days ==> 0 browser.newtab.url ==> "about:blank" browser.newtabpage.activity-stream.feeds.section.topstories ==> false browser.offline-apps.notify ==> true browser.startup.homepage_override.buildID ==> 20100101 devtools.debugger.force-local ==> true dom.mozTCPSocket.enabled ==> false media.webspeech.recognition.enable ==> false network.dns.blockDotOnion ==> true (inactive) network.http.keep-alive.timeout ==> 15 network.negotiate-auth.allow-insecure-ntlm-v1 ==> false (inactive) network.negotiate-auth.allow-insecure-ntlm-v1-https ==> false network.protocol-handler.expose.about ==> true network.protocol-handler.expose.blob ==> true network.protocol-handler.expose.chrome ==> true network.protocol-handler.expose.data ==> true network.protocol-handler.expose.file ==> true network.protocol-handler.expose.ftp ==> true network.protocol-handler.expose.http ==> true network.protocol-handler.expose.https ==> true network.protocol-handler.expose.javascript ==> true network.protocol-handler.expose.moz-extension ==> true network.protocol-handler.expose-all ==> false network.protocol-handler.external.about ==> false network.protocol-handler.external.blob ==> false network.protocol-handler.external.chrome ==> false network.protocol-handler.external.data ==> false network.protocol-handler.external.file ==> false network.protocol-handler.external.ftp ==> false network.protocol-handler.external.http ==> false network.protocol-handler.external.https ==> false network.protocol-handler.external.javascript ==> false network.protocol-handler.external.moz-extension ==> false network.protocol-handler.warn-external-default ==> true network.stricttransportsecurity.preloadlist ==> true plugin.state.libgnome-shell-browser-plugin ==> 0 security.fileuri.strict_origin_policy ==> true security.sri.enable ==> true security.ssl.enable_ocsp_must_staple ==> true security.ssl3.dhe_dss_aes_128_sha ==> false security.ssl3.dhe_dss_aes_256_sha ==> false security.ssl3.dhe_dss_camellia_128_sha ==> false security.ssl3.dhe_dss_camellia_256_sha ==> false security.ssl3.dhe_dss_des_ede3_sha ==> false security.ssl3.dhe_rsa_camellia_128_sha ==> false security.ssl3.dhe_rsa_camellia_256_sha ==> false security.ssl3.dhe_rsa_des_ede3_sha ==> false security.ssl3.ecdh_ecdsa_aes_128_sha ==> false security.ssl3.ecdh_ecdsa_aes_256_sha ==> false security.ssl3.ecdh_ecdsa_des_ede3_sha ==> false security.ssl3.ecdh_ecdsa_null_sha ==> false security.ssl3.ecdh_ecdsa_rc4_128_sha ==> false security.ssl3.ecdh_rsa_aes_128_sha ==> false security.ssl3.ecdh_rsa_aes_256_sha ==> false security.ssl3.ecdh_rsa_des_ede3_sha ==> false security.ssl3.ecdh_rsa_null_sha ==> false security.ssl3.ecdh_rsa_rc4_128_sha ==> false security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256 ==> true security.ssl3.ecdhe_ecdsa_aes_256_sha ==> true security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256 ==> true security.ssl3.ecdhe_ecdsa_des_ede3_sha ==> false security.ssl3.ecdhe_ecdsa_null_sha ==> false security.ssl3.ecdhe_rsa_aes_128_gcm_sha256 ==> true security.ssl3.ecdhe_rsa_aes_256_sha ==> true security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256 ==> true security.ssl3.ecdhe_rsa_des_ede3_sha ==> false security.ssl3.ecdhe_rsa_null_sha ==> false security.ssl3.rsa_1024_rc4_56_sha ==> false security.ssl3.rsa_camellia_128_sha ==> false security.ssl3.rsa_camellia_256_sha ==> false security.ssl3.rsa_fips_des_ede3_sha ==> false security.ssl3.rsa_null_md5 ==> false security.ssl3.rsa_null_sha ==> false security.ssl3.rsa_rc2_40_md5 ==> false security.ssl3.rsa_rc4_40_md5 ==> false security.ssl3.rsa_seed_sha ==> false shumway.disabled ==> true ------------------------------------------------------------------------------ The following 365 prefs are not declared in pk.js: _user.js.parrot ==> "SUCCESS: No no he's not dead, he's, he's restin'!" accessibility.force_disabled ==> 1 (inactive) accessibility.typeaheadfind ==> true alerts.showFavicons ==> false app.normandy.api_url ==> "" app.normandy.enabled ==> false app.update.service.enabled ==> false app.update.silent ==> false app.update.staging.enabled ==> false (inactive) browser.backspace_action ==> 2 (inactive) browser.bookmarks.showRecentlyBookmarked ==> false browser.cache.disk.capacity ==> 0 browser.cache.disk.smart_size.enabled ==> false browser.cache.disk.smart_size.first_run ==> false browser.cache.frecency_experiment ==> -1 (inactive) browser.cache.memory.capacity ==> 0 browser.cache.offline.insecure.enable ==> false browser.chrome.errorReporter.enabled ==> false browser.chrome.errorReporter.submitUrl ==> "" (inactive) browser.chrome.favicons ==> false (inactive) browser.chrome.site_icons ==> false browser.crashReports.unsubmittedCheck.autoSubmit ==> false browser.crashReports.unsubmittedCheck.autoSubmit2 ==> false (inactive) browser.ctrlTab.previews ==> true (inactive) browser.download.autohideButton ==> false browser.download.forbid_open_with ==> true browser.download.hide_plugins_without_extensions ==> false browser.download.manager.addToRecentDocs ==> false browser.eme.ui.enabled ==> false (inactive) browser.formautofill.enabled ==> false (inactive) browser.formfill.saveHttpsForms ==> false (inactive) browser.fullscreen.animate ==> false (inactive) browser.history.allowPopState ==> false (inactive) browser.history.allowPushState ==> false (inactive) browser.history.allowReplaceState ==> false browser.library.activity-stream.enabled ==> false browser.link.open_newwindow ==> 3 browser.link.open_newwindow.restriction ==> 0 (inactive) browser.newtabpage.introShown ==> true browser.onboarding.enabled ==> false browser.ping-centre.telemetry ==> false (inactive) browser.pocket.api ==> "" (inactive) browser.pocket.oAuthConsumerKey ==> "" (inactive) browser.pocket.site ==> "" (inactive) browser.polaris.enabled ==> false (inactive) browser.safebrowsing.allowOverride ==> false (inactive) browser.safebrowsing.appRepURL ==> "" (inactive) browser.safebrowsing.downloads.enabled ==> false (inactive) browser.safebrowsing.downloads.remote.block_dangerous ==> false (inactive) browser.safebrowsing.downloads.remote.block_dangerous_host ==> false (inactive) browser.safebrowsing.downloads.remote.block_potentially_unwanted ==> false (inactive) browser.safebrowsing.downloads.remote.block_uncommon ==> false browser.safebrowsing.downloads.remote.url ==> "" (inactive) browser.safebrowsing.gethashURL ==> "" (inactive) browser.safebrowsing.malware.reportURL ==> "" (inactive) browser.safebrowsing.provider.google.appRepURL ==> "" (inactive) browser.safebrowsing.provider.google.gethashURL ==> "" browser.safebrowsing.provider.google.reportMalwareMistakeURL ==> "" browser.safebrowsing.provider.google.reportPhishMistakeURL ==> "" browser.safebrowsing.provider.google.reportURL ==> "" (inactive) browser.safebrowsing.provider.google.updateURL ==> "" browser.safebrowsing.provider.google4.dataSharing.enabled ==> false browser.safebrowsing.provider.google4.dataSharingURL ==> "" (inactive) browser.safebrowsing.provider.google4.gethashURL ==> "" browser.safebrowsing.provider.google4.reportMalwareMistakeURL ==> "" browser.safebrowsing.provider.google4.reportPhishMistakeURL ==> "" browser.safebrowsing.provider.google4.reportURL ==> "" (inactive) browser.safebrowsing.provider.google4.updateURL ==> "" (inactive) browser.safebrowsing.provider.mozilla.gethashURL ==> "" (inactive) browser.safebrowsing.provider.mozilla.updateURL ==> "" (inactive) browser.safebrowsing.reportErrorURL ==> "" (inactive) browser.safebrowsing.reportGenericURL ==> "" (inactive) browser.safebrowsing.reportMalwareErrorURL ==> "" (inactive) browser.safebrowsing.reportMalwareMistakeURL ==> "" (inactive) browser.safebrowsing.reportMalwareURL ==> "" (inactive) browser.safebrowsing.reportPhishMistakeURL ==> "" browser.safebrowsing.reportPhishURL ==> "" (inactive) browser.safebrowsing.reportURL ==> "" (inactive) browser.safebrowsing.updateURL ==> "" browser.search.geoSpecificDefaults.url ==> "" (inactive) browser.search.showOneOffButtons ==> false (inactive) browser.selfsupport.enabled ==> false browser.sessionhistory.max_entries ==> 10 (inactive) browser.sessionhistory.max_total_viewers ==> 0 browser.sessionstore.interval ==> 30000 browser.sessionstore.max_tabs_undo ==> 0 browser.sessionstore.max_windows_undo ==> 0 (inactive) browser.sessionstore.privacy_level_deferred ==> 2 browser.sessionstore.resume_from_crash ==> false (inactive) browser.startup.homepage ==> "https://www.example.com/" (inactive) browser.startup.homepage_override.mstone ==> "ignore" (inactive) browser.startup.page ==> 0 (inactive) browser.tabs.animate ==> false (inactive) browser.tabs.closeWindowWithLastTab ==> false (inactive) browser.tabs.loadBookmarksInTabs ==> true browser.tabs.remote.allowLinkedWebInFileUriProcess ==> false (inactive) browser.tabs.warnOnClose ==> false (inactive) browser.tabs.warnOnCloseOtherTabs ==> false (inactive) browser.tabs.warnOnOpen ==> false browser.taskbar.lists.enabled ==> false browser.taskbar.lists.frequent.enabled ==> false browser.taskbar.lists.recent.enabled ==> false browser.taskbar.lists.tasks.enabled ==> false browser.taskbar.previews.enable ==> false (inactive) browser.trackingprotection.gethashURL ==> "" (inactive) browser.trackingprotection.updateURL ==> "" browser.uitour.url ==> "" (inactive) browser.urlbar.decodeURLsOnCopy ==> true browser.urlbar.maxHistoricalSearchSuggestions ==> 0 (inactive) browser.urlbar.maxRichResults ==> 0 browser.urlbar.oneOffSearches ==> false browser.urlbar.speculativeConnect.enabled ==> false browser.urlbar.suggest.bookmark ==> false browser.urlbar.suggest.openpage ==> false (inactive) browser.urlbar.unifiedcomplete ==> false browser.urlbar.usepreloadedtopurls.enabled ==> false browser.urlbar.userMadeSearchSuggestionsChoice ==> true (inactive) browser.usedOnWindows10.introURL ==> "" browser.xul.error_pages.expert_bad_cert ==> true (inactive) browser.zoom.siteSpecific ==> false (inactive) camera.control.autofocus_moving_callback.enabled ==> false canvas.capturestream.enabled ==> false captivedetect.canonicalURL ==> "" (inactive) datareporting.healthreport.about.reportUrl ==> "data:text/plain," (inactive) datareporting.healthreport.about.reportUrlUnified ==> "data:text/plain," (inactive) datareporting.healthreport.documentServerURI ==> "" (inactive) datareporting.policy.dataSubmissionEnabled.v2 ==> false (inactive) dom.beforeAfterKeyboardEvent.enabled ==> false dom.caches.enabled ==> false (inactive) dom.disable_image_src_set ==> true dom.disable_open_during_load ==> true dom.disable_window_move_resize ==> true dom.disable_window_open_feature.close ==> true dom.disable_window_open_feature.location ==> true dom.disable_window_open_feature.menubar ==> true dom.disable_window_open_feature.minimizable ==> true dom.disable_window_open_feature.personalbar ==> true dom.disable_window_open_feature.resizable ==> true (inactive) dom.disable_window_open_feature.scrollbars ==> true dom.disable_window_open_feature.status ==> true dom.disable_window_open_feature.titlebar ==> true dom.disable_window_open_feature.toolbar ==> true (inactive) dom.disable_window_status_change ==> true (inactive) dom.idle-observers-api.enabled ==> false dom.imagecapture.enabled ==> false dom.IntersectionObserver.enabled ==> false (inactive) dom.keyboardevent.code.enabled ==> false dom.popup_allowed_events ==> "click dblclick" dom.popup_maximum ==> 3 dom.push.connection.enabled ==> false dom.push.enabled ==> false dom.push.serverURL ==> "" (inactive) dom.push.udp.wakeupEnabled ==> false dom.push.userAgentID ==> "" (inactive) dom.storageManager.enabled ==> false (inactive) dom.vr.oculus050.enabled ==> false dom.w3c_pointer_events.enabled ==> false (inactive) dom.w3c_touch_events.enabled ==> 0 dom.webnotifications.serviceworker.enabled ==> false (inactive) dom.workers.sharedWorkers.enabled ==> false (inactive) experiments.activeExperiment ==> false extensions.autoDisableScopes ==> 15 extensions.enabledScopes ==> 1 extensions.formautofill.addresses.enabled ==> false extensions.formautofill.available ==> "off" extensions.formautofill.creditCards.enabled ==> false (inactive) extensions.formautofill.experimental ==> false extensions.formautofill.heuristics.enabled ==> false extensions.getAddons.showPane ==> false (inactive) extensions.screenshots.disabled ==> true (inactive) extensions.screenshots.system-disabled ==> true (inactive) extensions.screenshots.upload-disabled ==> true (inactive) extensions.shield-recipe-client.api_url ==> "" (inactive) extensions.systemAddon.update.enabled ==> false (inactive) extensions.systemAddon.update.url ==> "" extensions.update.autoUpdateDefault ==> false extensions.webcompat-reporter.enabled ==> false extensions.webextensions.keepStorageOnUninstall ==> false extensions.webextensions.keepUuidOnUninstall ==> false (inactive) extensions.webextensions.restrictedDomains ==> "" extensions.webservice.discoverURL ==> "" font.blacklist.underline_offset ==> "" (inactive) font.name.monospace.x-unicode ==> "Lucida Console" (inactive) font.name.monospace.x-western ==> "Lucida Console" (inactive) font.name.sans-serif.x-unicode ==> "Arial" (inactive) font.name.sans-serif.x-western ==> "Arial" (inactive) font.name.serif.x-unicode ==> "Georgia" (inactive) font.name.serif.x-western ==> "Georgia" (inactive) font.system.whitelist ==> "" (inactive) full-screen-api.approval-required ==> false full-screen-api.enabled ==> false (inactive) full-screen-api.warning.delay ==> 0 (inactive) full-screen-api.warning.timeout ==> 0 (inactive) general.autoScroll ==> false (inactive) general.useragent.locale ==> "en-US" general.warnOnAboutConfig ==> false (inactive) geo.security.allowinsecure ==> false (inactive) gfx.direct2d.disabled ==> true gfx.downloadable_fonts.enabled ==> true gfx.downloadable_fonts.woff2.enabled ==> false gfx.font_rendering.graphite.enabled ==> false gfx.offscreencanvas.enabled ==> false (inactive) identity.fxaccounts.enabled ==> false intl.locale.requested ==> "en-US" intl.regional_prefs.use_os_locales ==> false (inactive) javascript.options.baselinejit ==> false (inactive) javascript.options.ion ==> false javascript.options.shared_memory ==> false javascript.options.wasm ==> false layers.acceleration.disabled ==> true layout.css.font-loading-api.enabled ==> false (inactive) layout.spellcheckDefault ==> 2 (inactive) loop.facebook.appId ==> "" (inactive) loop.facebook.enabled ==> false (inactive) loop.facebook.fallbackUrl ==> "" (inactive) loop.facebook.shareUrl ==> "" (inactive) loop.feedback.formURL ==> "" (inactive) loop.feedback.manualFormURL ==> "" (inactive) loop.server ==> "" mathml.disabled ==> true media.autoplay.enabled ==> false media.block-autoplay-until-in-foreground ==> true (inactive) media.block-play-until-visible ==> true (inactive) media.eme.apiVisible ==> false (inactive) media.eme.chromium-api.enabled ==> false media.eme.enabled ==> false media.getusermedia.browser.enabled ==> false (inactive) media.getusermedia.screensharing.allow_on_old_platforms ==> false (inactive) media.getusermedia.screensharing.allowed_domains ==> "" media.gmp.trial-create.enabled ==> false (inactive) media.gmp-eme-adobe.autoupdate ==> false (inactive) media.gmp-eme-adobe.enabled ==> false (inactive) media.gmp-eme-adobe.visible ==> false media.gmp-gmpopenh264.autoupdate ==> false media.gmp-manager.updateEnabled ==> false media.gmp-manager.url.override ==> "data:text/plain," media.gmp-widevinecdm.autoupdate ==> false media.gmp-widevinecdm.enabled ==> false media.gmp-widevinecdm.visible ==> false (inactive) media.ondevicechange.enabled ==> false media.peerconnection.ice.tcp ==> false media.peerconnection.identity.enabled ==> false media.peerconnection.identity.timeout ==> 1 media.peerconnection.turn.disable ==> true media.peerconnection.use_document_iceservers ==> false media.peerconnection.video.enabled ==> false middlemouse.contentLoadURL ==> false network.auth.subresource-img-cross-origin-http-auth-allow ==> false network.cookie.leave-secure-alone ==> true (inactive) network.cookie.lifetime.days ==> 90 (inactive) network.cookie.same-site.enabled ==> true network.cookie.thirdparty.nonsecureSessionOnly ==> true (inactive) network.dns.disableIPv6 ==> true (inactive) network.dnsCacheEntries ==> 400 (inactive) network.dnsCacheExpiration ==> 60 network.file.disable_unc_paths ==> true (inactive) network.ftp.enabled ==> false network.http.altsvc.enabled ==> false network.http.altsvc.oe ==> false network.http.redirection-limit ==> 10 network.http.referer.defaultPolicy ==> 3 network.http.referer.defaultPolicy.pbmode ==> 2 network.http.referer.hideOnionSource ==> true network.http.referer.trimmingPolicy ==> 0 (inactive) network.http.referer.userControlPolicy ==> 3 network.http.referer.XOriginTrimmingPolicy ==> 0 network.http.sendRefererHeader ==> 2 (inactive) network.http.sendSecureXSiteReferrer ==> false network.http.spdy.enabled ==> false network.http.spdy.enabled.deps ==> false network.http.spdy.enabled.http2 ==> false (inactive) network.http.spdy.enabled.http2draft ==> false (inactive) network.http.spdy.enabled.v3-1 ==> false (inactive) network.jar.block-remote-files ==> true network.predictor.enable-prefetch ==> false network.protocol-handler.external.ms-windows-store ==> false network.proxy.autoconfig_url.include_path ==> false (inactive) network.trr.bootstrapAddress ==> "" (inactive) network.trr.mode ==> 0 (inactive) network.trr.uri ==> "" (inactive) network.websocket.enabled ==> false offline-apps.allow_by_default ==> false (inactive) pageThumbs.enabled ==> false (inactive) permissions.default.camera ==> 2 (inactive) permissions.default.desktop-notification ==> 2 permissions.default.geo ==> 2 (inactive) permissions.default.microphone ==> 2 (inactive) permissions.default.shortcuts ==> 2 permissions.manager.defaultsUrl ==> "" (inactive) permissions.memory_only ==> true (inactive) pfs.datasource.url ==> "" plugin.default.state ==> 0 plugin.defaultXpi.state ==> 0 (inactive) plugin.scan.Acrobat ==> 99999 plugin.scan.plid.all ==> false (inactive) plugin.scan.Quicktime ==> 99999 (inactive) plugin.scan.WindowsMediaPlayer ==> 99999 plugin.sessionPermissionNow.intervalInMinutes ==> 0 (inactive) plugins.enumerable_names ==> "" (inactive) plugins.update.url ==> "" (inactive) privacy.clearOnShutdown.passwords ==> false privacy.clearOnShutdown.siteSettings ==> false (inactive) privacy.cpd.openWindows ==> true privacy.cpd.passwords ==> false privacy.cpd.siteSettings ==> false (inactive) privacy.donottrackheader.value ==> 1 privacy.firstparty.isolate.restrict_opener_access ==> true privacy.resistFingerprinting.block_mozAddonManager ==> true (inactive) privacy.trackingprotection.annotate_channels ==> false (inactive) privacy.trackingprotection.lower_network_priority ==> false privacy.trackingprotection.ui.enabled ==> true (inactive) privacy.usercontext.about_newtab_segregation.enabled ==> true (inactive) privacy.userContext.longPressBehavior ==> 2 (inactive) privacy.userContext.ui.enabled ==> true (inactive) privacy.window.maxInnerHeight ==> 900 (inactive) privacy.window.maxInnerWidth ==> 1600 (inactive) reader.parse-on-load.enabled ==> false security.csp.enable_violation_events ==> false security.data_uri.block_toplevel_data_uri_navigations ==> true security.family_safety.mode ==> 0 security.insecure_connection_icon.enabled ==> true (inactive) security.insecure_connection_icon.pbmode.enabled ==> true security.insecure_connection_text.enabled ==> true (inactive) security.insecure_connection_text.pbmode.enabled ==> true (inactive) security.mixed_content.send_hsts_priming ==> false (inactive) security.mixed_content.use_hsts ==> true (inactive) security.nocertdb ==> true security.ssl.errorReporting.enabled ==> false security.ssl.errorReporting.url ==> "" security.tls.enable_0rtt_data ==> false (inactive) security.tls.insecure_fallback_hosts.use_static_list ==> false (inactive) services.blocklist.addons.collection ==> "" (inactive) services.blocklist.gfx.collection ==> "" (inactive) services.blocklist.onecrl.collection ==> "" (inactive) services.blocklist.plugins.collection ==> "" shield.savant.enabled ==> false (inactive) social.directories ==> "" (inactive) social.enabled ==> false (inactive) social.remote-install.enabled ==> false (inactive) social.share.activationPanelEnabled ==> false (inactive) social.shareDirectory ==> "" (inactive) social.toast-notifications.enabled ==> false (inactive) social.whitelist ==> "" (inactive) startup.homepage_override_url ==> "" (inactive) startup.homepage_welcome_url ==> "" (inactive) startup.homepage_welcome_url.additional ==> "" (inactive) toolkit.cosmeticAnimations.enabled ==> false toolkit.telemetry.archive.enabled ==> false toolkit.telemetry.bhrPing.enabled ==> false toolkit.telemetry.cachedClientID ==> "" toolkit.telemetry.firstShutdownPing.enabled ==> false toolkit.telemetry.hybridContent.enabled ==> false toolkit.telemetry.newProfilePing.enabled ==> false toolkit.telemetry.server ==> "data:," toolkit.telemetry.shutdownPingSender.enabled ==> false (inactive) toolkit.telemetry.unifiedIsOptIn ==> true toolkit.telemetry.updatePing.enabled ==> false (inactive) ui.key.menuAccessKey ==> 0 ui.use_standins_for_native_colors ==> true (inactive) urlclassifier.trackingTable ==> "test-track-simple,base-track-digest256" (inactive) view_source.tab ==> false webchannel.allowObject.urlWhitelist ==> "" webgl.dxgl.enabled ==> false webgl.enable-webgl2 ==> false xpinstall.whitelist.required ==> true ------------------------------------------------------------------------------ The following 71 prefs exist in both files but are inactive (commented out) in ghacks.js: app.update.enabled browser.bookmarks.max_backups browser.cache.offline.enable browser.casting.enabled browser.newtabpage.activity-stream.enabled browser.newtabpage.directory.ping browser.newtabpage.directory.source browser.newtabpage.enhanced browser.pocket.enabled browser.privatebrowsing.autostart browser.safebrowsing.blockedURIs.enabled browser.safebrowsing.enabled browser.safebrowsing.malware.enabled browser.safebrowsing.phishing.enabled browser.selfsupport.url camera.control.face_detection.enabled clipboard.autocopy datareporting.healthreport.service.enabled device.sensors.enabled devtools.webide.autoinstallFxdtAdapters dom.archivereader.enabled dom.battery.enabled dom.enable_performance dom.enable_resource_timing dom.enable_user_timing dom.flyweb.enabled dom.gamepad.enabled dom.maxHardwareConcurrency dom.netinfo.enabled dom.network.enabled dom.telephony.enabled dom.vr.enabled dom.workers.enabled experiments.enabled experiments.manifest.uri experiments.supported extensions.shield-recipe-client.enabled extensions.update.enabled general.buildID.override geo.enabled geo.wifi.logging.enabled intl.locale.matchOS loop.logDomains media.video_stats.enabled media.webspeech.synth.enabled network.cookie.lifetimePolicy network.jar.open-unsafe-types network.manage-offline-status places.history.enabled plugins.update.notifyUser privacy.clearOnShutdown.openWindows privacy.cpd.downloads privacy.trackingprotection.enabled privacy.trackingprotection.pbmode.enabled privacy.userContext.enabled security.ssl3.dhe_rsa_aes_128_sha security.ssl3.dhe_rsa_aes_256_sha security.ssl3.ecdhe_ecdsa_aes_128_sha security.ssl3.ecdhe_ecdsa_rc4_128_sha security.ssl3.ecdhe_rsa_aes_128_sha security.ssl3.ecdhe_rsa_rc4_128_sha security.ssl3.rsa_aes_128_sha security.ssl3.rsa_aes_256_sha security.ssl3.rsa_des_ede3_sha security.ssl3.rsa_rc4_128_md5 security.ssl3.rsa_rc4_128_sha security.tls.unrestricted_rc4_fallback security.xpconnect.plugin.unrestricted signon.rememberSignons svg.disabled webgl.enable-debug-renderer-info ------------------------------------------------------------------------------ The following 7 prefs exist in both files but are inactive (commented out) in pk.js: app.update.auto dom.disable_beforeunload media.gmp-provider.enabled network.http.referer.XOriginPolicy pdfjs.enableWebGL privacy.donottrackheader.enabled signon.storeWhenAutocompleteOff ```

claustromaniac commented 6 years ago

prefs with matching values but inactive in ghacks.js

I noticed I should remove that part. I got lazy and copy-pasted what earthlng suggested above, forgetting that I don't check for equality when only one of them is inactive (to avoid unnecessary overhead).

When the report says a pref is inactive in one file, the value doesn't necessarily match the value of the same pref in the other file. I'll remove that misleading bit.

claustromaniac commented 6 years ago

Yeah, I'm not fully convinced about the format either.

BTW I just noticed another weird thing going on. The list of differences seems to always mark prefs as inactive, even when they're not. I'll have to test a few things. EDIT: It was a ninja underscore that sneaked into a var name.

claustromaniac commented 6 years ago

for both these sections you don't output the value, which would be helpful

Look well. Those are by the bottom of the report.

claustromaniac commented 6 years ago

I don't follow?

Have a second look at the report, starting from the bottom. The prefs you mentioned are in there.

claustromaniac commented 6 years ago

Sorry. That's what happens when I attempt to do more than one thing at a time.

claustromaniac commented 6 years ago

You'll never know for sure :stuck_out_tongue_winking_eye:

earthlng commented 6 years ago

does it ignore the parrots :bird:

I don't see why that would be necessary. The output wouldn't be completely honest if it ignored arbitrary prefs, either.

I agree

When the report says a pref is inactive in one file, the value doesn't necessarily match the value of the same pref in the other file.

sorry my bad. Well, nice effort mate but I guess I'll keep using my script then :trollface:

ps: 1 of the examples is wrong now due to the removal of the aliases

claustromaniac commented 6 years ago

Updated to v1.3 v1.3.1

Click to see what the output looks like now. :point_left:

``` :::::::::::: { Compare-UserJS Report } :::::::::::: (date removed) Compared files: ghacks.js, pk.js 592 unique prefs in ghacks.js 305 unique prefs in pk.js 670 combined unique prefs 136 matching prefs, both value and state (active/inactive) 13 prefs with different values but matching state 78 prefs not declared in ghacks.js 365 prefs not declared in pk.js 57 prefs with matching values but inactive in ghacks.js 4 prefs with matching values but inactive in pk.js Reference: [i] = Inactive pref ------------------------------------------------------------------------------ The following 136 prefs match: app.shield.optoutstudies.enabled false beacon.enabled false breakpad.reportURL "" browser.cache.disk.enable false browser.cache.disk_cache_ssl false [i] browser.cache.memory.enable false browser.crashReports.unsubmittedCheck.enabled false browser.display.use_document_fonts 0 browser.download.folderList 2 browser.download.useDownloadDir false browser.fixup.alternate.enabled false browser.fixup.hide_user_pass true browser.formfill.enable false browser.helperApps.deleteTempFileOnExit true browser.newtab.preload false browser.newtabpage.enabled false browser.pagethumbnails.capturing_disabled true browser.safebrowsing.downloads.remote.enabled false browser.search.countryCode "US" browser.search.geoip.url "" browser.search.geoSpecificDefaults false browser.search.region "US" browser.search.suggest.enabled false browser.search.update false browser.send_pings false browser.send_pings.require_same_host true browser.sessionstore.privacy_level 2 browser.shell.checkDefaultBrowser false browser.shell.shortcutFavicons false browser.ssl_override_behavior 1 browser.tabs.crashReporting.sendReport false browser.uitour.enabled false browser.urlbar.autocomplete.enabled false browser.urlbar.autoFill false browser.urlbar.autoFill.typed false browser.urlbar.filter.javascript true browser.urlbar.suggest.history false browser.urlbar.suggest.searches false browser.urlbar.trimURLs false datareporting.healthreport.uploadEnabled false datareporting.policy.dataSubmissionEnabled false devtools.chrome.enabled false devtools.debugger.remote-enabled false devtools.webide.autoinstallADBHelper false devtools.webide.enabled false dom.allow_cut_copy false dom.event.clipboardevents.enabled false [i] dom.event.contextmenu.enabled false [i] dom.indexedDB.enabled false dom.ipc.plugins.flash.subprocess.crashreporter.enabled false dom.ipc.plugins.reportCrashURL false dom.serviceWorkers.enabled false [i] dom.storage.enabled false dom.vibrator.enabled false dom.webaudio.enabled false dom.webnotifications.enabled false extensions.blocklist.enabled true extensions.getAddons.cache.enabled false extensions.pocket.enabled false [i] general.appname.override "Netscape" [i] general.appversion.override "5.0 (Windows)" [i] general.oscpu.override "Windows NT 6.1" [i] general.platform.override "Win32" geo.wifi.uri "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%" gfx.font_rendering.opentype_svg.enabled false intl.accept_languages "en-US, en" javascript.options.asmjs false javascript.use_us_english_locale true keyword.enabled false layout.css.visited_links_enabled false lightweightThemes.update.enabled false [i] loop.enabled false media.getusermedia.audiocapture.enabled false media.getusermedia.screensharing.enabled false media.gmp-gmpopenh264.enabled false media.navigator.enabled false media.navigator.video.enabled false media.peerconnection.enabled false media.peerconnection.ice.default_address_only true media.peerconnection.ice.no_host true network.allow-experiments false network.captive-portal-service.enabled false network.cookie.thirdparty.sessionOnly true network.dns.disablePrefetch true network.dns.disablePrefetchFromHTTPS true network.http.speculative-parallel-limit 0 network.IDN_show_punycode true network.predictor.enabled false network.prefetch-next false network.proxy.socks_remote_dns true plugin.state.flash 0 plugin.state.java 0 plugins.click_to_play true privacy.clearOnShutdown.cache true privacy.clearOnShutdown.downloads true privacy.clearOnShutdown.formdata true privacy.clearOnShutdown.history true privacy.clearOnShutdown.offlineApps true privacy.clearOnShutdown.sessions true privacy.cpd.cache true privacy.cpd.formdata true privacy.cpd.history true privacy.cpd.offlineApps true privacy.cpd.sessions true privacy.firstparty.isolate true privacy.resistFingerprinting true privacy.sanitize.sanitizeOnShutdown true privacy.sanitize.timeSpan 0 security.ask_for_password 2 security.cert_pinning.enforcement_level 2 security.csp.enable true security.csp.experimentalEnabled true security.insecure_field_warning.contextual.enabled true security.insecure_password.ui.enabled true security.mixed_content.block_active_content true security.mixed_content.block_display_content true security.OCSP.enabled 1 security.OCSP.require true security.pki.sha1_enforcement_level 1 security.ssl.disable_session_identifiers true security.ssl.enable_ocsp_stapling true security.ssl.errorReporting.automatic false [i] security.ssl.require_safe_negotiation true security.ssl.treat_unsafe_negotiation_as_broken true security.tls.version.fallback-limit 3 security.tls.version.max 4 services.blocklist.update_enabled true signon.autofillForms false signon.autofillForms.http false signon.formlessCapture.enabled false toolkit.telemetry.enabled false toolkit.telemetry.unified false webgl.disabled true webgl.disable-extensions true webgl.disable-fail-if-major-performance-caveat true webgl.min_capability_mode true ------------------------------------------------------------------------------ The following 13 prefs have different values: browser.aboutHomeSnippets.updateUrl ghacks.js "data:," pk.js "" extensions.blocklist.url ghacks.js "https://blocklists.settings.services.mozilla.com/v1/blocklist/3/%APP_ID%/%APP_VERSION%/" pk.js "https://blocklist.addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/" [i] general.useragent.override ghacks.js "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0" pk.js "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0" media.gmp-manager.url ghacks.js "data:text/plain," pk.js "" network.cookie.cookieBehavior ghacks.js 2 pk.js 1 network.http.referer.spoofSource ghacks.js false pk.js true pdfjs.disabled ghacks.js false pk.js true privacy.clearOnShutdown.cookies ghacks.js false pk.js true privacy.cpd.cookies ghacks.js false pk.js true security.dialog_enable_delay ghacks.js 700 pk.js 1000 security.password_lifetime ghacks.js 5 pk.js 1 security.tls.version.min ghacks.js 3 pk.js 1 [i] xpinstall.signatures.required ghacks.js false pk.js true ------------------------------------------------------------------------------ The following 78 prefs are not declared in ghacks.js: browser.download.manager.retention 0 browser.formfill.expire_days 0 browser.newtab.url "about:blank" browser.newtabpage.activity-stream.feeds.section.topstories false browser.offline-apps.notify true browser.startup.homepage_override.buildID 20100101 devtools.debugger.force-local true dom.mozTCPSocket.enabled false media.webspeech.recognition.enable false network.dns.blockDotOnion true [i] network.http.keep-alive.timeout 15 network.negotiate-auth.allow-insecure-ntlm-v1 false [i] network.negotiate-auth.allow-insecure-ntlm-v1-https false network.protocol-handler.expose.about true network.protocol-handler.expose.blob true network.protocol-handler.expose.chrome true network.protocol-handler.expose.data true network.protocol-handler.expose.file true network.protocol-handler.expose.ftp true network.protocol-handler.expose.http true network.protocol-handler.expose.https true network.protocol-handler.expose.javascript true network.protocol-handler.expose.moz-extension true network.protocol-handler.expose-all false network.protocol-handler.external.about false network.protocol-handler.external.blob false network.protocol-handler.external.chrome false network.protocol-handler.external.data false network.protocol-handler.external.file false network.protocol-handler.external.ftp false network.protocol-handler.external.http false network.protocol-handler.external.https false network.protocol-handler.external.javascript false network.protocol-handler.external.moz-extension false network.protocol-handler.warn-external-default true network.stricttransportsecurity.preloadlist true plugin.state.libgnome-shell-browser-plugin 0 security.fileuri.strict_origin_policy true security.sri.enable true security.ssl.enable_ocsp_must_staple true security.ssl3.dhe_dss_aes_128_sha false security.ssl3.dhe_dss_aes_256_sha false security.ssl3.dhe_dss_camellia_128_sha false security.ssl3.dhe_dss_camellia_256_sha false security.ssl3.dhe_dss_des_ede3_sha false security.ssl3.dhe_rsa_camellia_128_sha false security.ssl3.dhe_rsa_camellia_256_sha false security.ssl3.dhe_rsa_des_ede3_sha false security.ssl3.ecdh_ecdsa_aes_128_sha false security.ssl3.ecdh_ecdsa_aes_256_sha false security.ssl3.ecdh_ecdsa_des_ede3_sha false security.ssl3.ecdh_ecdsa_null_sha false security.ssl3.ecdh_ecdsa_rc4_128_sha false security.ssl3.ecdh_rsa_aes_128_sha false security.ssl3.ecdh_rsa_aes_256_sha false security.ssl3.ecdh_rsa_des_ede3_sha false security.ssl3.ecdh_rsa_null_sha false security.ssl3.ecdh_rsa_rc4_128_sha false security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256 true security.ssl3.ecdhe_ecdsa_aes_256_sha true security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256 true security.ssl3.ecdhe_ecdsa_des_ede3_sha false security.ssl3.ecdhe_ecdsa_null_sha false security.ssl3.ecdhe_rsa_aes_128_gcm_sha256 true security.ssl3.ecdhe_rsa_aes_256_sha true security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256 true security.ssl3.ecdhe_rsa_des_ede3_sha false security.ssl3.ecdhe_rsa_null_sha false security.ssl3.rsa_1024_rc4_56_sha false security.ssl3.rsa_camellia_128_sha false security.ssl3.rsa_camellia_256_sha false security.ssl3.rsa_fips_des_ede3_sha false security.ssl3.rsa_null_md5 false security.ssl3.rsa_null_sha false security.ssl3.rsa_rc2_40_md5 false security.ssl3.rsa_rc4_40_md5 false security.ssl3.rsa_seed_sha false shumway.disabled true ------------------------------------------------------------------------------ The following 365 prefs are not declared in pk.js: _user.js.parrot "SUCCESS: No no he's not dead, he's, he's restin'!" accessibility.force_disabled 1 [i] accessibility.typeaheadfind true alerts.showFavicons false app.normandy.api_url "" app.normandy.enabled false app.update.service.enabled false app.update.silent false app.update.staging.enabled false [i] browser.backspace_action 2 [i] browser.bookmarks.showRecentlyBookmarked false browser.cache.disk.capacity 0 browser.cache.disk.smart_size.enabled false browser.cache.disk.smart_size.first_run false browser.cache.frecency_experiment -1 [i] browser.cache.memory.capacity 0 browser.cache.offline.insecure.enable false browser.chrome.errorReporter.enabled false browser.chrome.errorReporter.submitUrl "" [i] browser.chrome.favicons false [i] browser.chrome.site_icons false browser.crashReports.unsubmittedCheck.autoSubmit false browser.crashReports.unsubmittedCheck.autoSubmit2 false [i] browser.ctrlTab.previews true [i] browser.download.autohideButton false browser.download.forbid_open_with true browser.download.hide_plugins_without_extensions false browser.download.manager.addToRecentDocs false browser.eme.ui.enabled false [i] browser.formautofill.enabled false [i] browser.formfill.saveHttpsForms false [i] browser.fullscreen.animate false [i] browser.history.allowPopState false [i] browser.history.allowPushState false [i] browser.history.allowReplaceState false browser.library.activity-stream.enabled false browser.link.open_newwindow 3 browser.link.open_newwindow.restriction 0 [i] browser.newtabpage.introShown true browser.onboarding.enabled false browser.ping-centre.telemetry false [i] browser.pocket.api "" [i] browser.pocket.oAuthConsumerKey "" [i] browser.pocket.site "" [i] browser.polaris.enabled false [i] browser.safebrowsing.allowOverride false [i] browser.safebrowsing.appRepURL "" [i] browser.safebrowsing.downloads.enabled false [i] browser.safebrowsing.downloads.remote.block_dangerous false [i] browser.safebrowsing.downloads.remote.block_dangerous_host false [i] browser.safebrowsing.downloads.remote.block_potentially_unwanted false [i] browser.safebrowsing.downloads.remote.block_uncommon false browser.safebrowsing.downloads.remote.url "" [i] browser.safebrowsing.gethashURL "" [i] browser.safebrowsing.malware.reportURL "" [i] browser.safebrowsing.provider.google.appRepURL "" [i] browser.safebrowsing.provider.google.gethashURL "" browser.safebrowsing.provider.google.reportMalwareMistakeURL "" browser.safebrowsing.provider.google.reportPhishMistakeURL "" browser.safebrowsing.provider.google.reportURL "" [i] browser.safebrowsing.provider.google.updateURL "" browser.safebrowsing.provider.google4.dataSharing.enabled false browser.safebrowsing.provider.google4.dataSharingURL "" [i] browser.safebrowsing.provider.google4.gethashURL "" browser.safebrowsing.provider.google4.reportMalwareMistakeURL "" browser.safebrowsing.provider.google4.reportPhishMistakeURL "" browser.safebrowsing.provider.google4.reportURL "" [i] browser.safebrowsing.provider.google4.updateURL "" [i] browser.safebrowsing.provider.mozilla.gethashURL "" [i] browser.safebrowsing.provider.mozilla.updateURL "" [i] browser.safebrowsing.reportErrorURL "" [i] browser.safebrowsing.reportGenericURL "" [i] browser.safebrowsing.reportMalwareErrorURL "" [i] browser.safebrowsing.reportMalwareMistakeURL "" [i] browser.safebrowsing.reportMalwareURL "" [i] browser.safebrowsing.reportPhishMistakeURL "" browser.safebrowsing.reportPhishURL "" [i] browser.safebrowsing.reportURL "" [i] browser.safebrowsing.updateURL "" browser.search.geoSpecificDefaults.url "" [i] browser.search.showOneOffButtons false [i] browser.selfsupport.enabled false browser.sessionhistory.max_entries 10 [i] browser.sessionhistory.max_total_viewers 0 browser.sessionstore.interval 30000 browser.sessionstore.max_tabs_undo 0 browser.sessionstore.max_windows_undo 0 [i] browser.sessionstore.privacy_level_deferred 2 browser.sessionstore.resume_from_crash false [i] browser.startup.homepage "https://www.example.com/" [i] browser.startup.homepage_override.mstone "ignore" [i] browser.startup.page 0 [i] browser.tabs.animate false [i] browser.tabs.closeWindowWithLastTab false [i] browser.tabs.loadBookmarksInTabs true browser.tabs.remote.allowLinkedWebInFileUriProcess false [i] browser.tabs.warnOnClose false [i] browser.tabs.warnOnCloseOtherTabs false [i] browser.tabs.warnOnOpen false browser.taskbar.lists.enabled false browser.taskbar.lists.frequent.enabled false browser.taskbar.lists.recent.enabled false browser.taskbar.lists.tasks.enabled false browser.taskbar.previews.enable false [i] browser.trackingprotection.gethashURL "" [i] browser.trackingprotection.updateURL "" browser.uitour.url "" [i] browser.urlbar.decodeURLsOnCopy true browser.urlbar.maxHistoricalSearchSuggestions 0 [i] browser.urlbar.maxRichResults 0 browser.urlbar.oneOffSearches false browser.urlbar.speculativeConnect.enabled false browser.urlbar.suggest.bookmark false browser.urlbar.suggest.openpage false [i] browser.urlbar.unifiedcomplete false browser.urlbar.usepreloadedtopurls.enabled false browser.urlbar.userMadeSearchSuggestionsChoice true [i] browser.usedOnWindows10.introURL "" browser.xul.error_pages.expert_bad_cert true [i] browser.zoom.siteSpecific false [i] camera.control.autofocus_moving_callback.enabled false canvas.capturestream.enabled false captivedetect.canonicalURL "" [i] datareporting.healthreport.about.reportUrl "data:text/plain," [i] datareporting.healthreport.about.reportUrlUnified "data:text/plain," [i] datareporting.healthreport.documentServerURI "" [i] datareporting.policy.dataSubmissionEnabled.v2 false [i] dom.beforeAfterKeyboardEvent.enabled false dom.caches.enabled false [i] dom.disable_image_src_set true dom.disable_open_during_load true dom.disable_window_move_resize true dom.disable_window_open_feature.close true dom.disable_window_open_feature.location true dom.disable_window_open_feature.menubar true dom.disable_window_open_feature.minimizable true dom.disable_window_open_feature.personalbar true dom.disable_window_open_feature.resizable true [i] dom.disable_window_open_feature.scrollbars true dom.disable_window_open_feature.status true dom.disable_window_open_feature.titlebar true dom.disable_window_open_feature.toolbar true [i] dom.disable_window_status_change true [i] dom.idle-observers-api.enabled false dom.imagecapture.enabled false dom.IntersectionObserver.enabled false [i] dom.keyboardevent.code.enabled false dom.popup_allowed_events "click dblclick" dom.popup_maximum 3 dom.push.connection.enabled false dom.push.enabled false dom.push.serverURL "" [i] dom.push.udp.wakeupEnabled false dom.push.userAgentID "" [i] dom.storageManager.enabled false [i] dom.vr.oculus050.enabled false dom.w3c_pointer_events.enabled false [i] dom.w3c_touch_events.enabled 0 dom.webnotifications.serviceworker.enabled false [i] dom.workers.sharedWorkers.enabled false [i] experiments.activeExperiment false extensions.autoDisableScopes 15 extensions.enabledScopes 1 extensions.formautofill.addresses.enabled false extensions.formautofill.available "off" extensions.formautofill.creditCards.enabled false [i] extensions.formautofill.experimental false extensions.formautofill.heuristics.enabled false extensions.getAddons.showPane false [i] extensions.screenshots.disabled true [i] extensions.screenshots.system-disabled true [i] extensions.screenshots.upload-disabled true [i] extensions.shield-recipe-client.api_url "" [i] extensions.systemAddon.update.enabled false [i] extensions.systemAddon.update.url "" extensions.update.autoUpdateDefault false extensions.webcompat-reporter.enabled false extensions.webextensions.keepStorageOnUninstall false extensions.webextensions.keepUuidOnUninstall false [i] extensions.webextensions.restrictedDomains "" extensions.webservice.discoverURL "" font.blacklist.underline_offset "" [i] font.name.monospace.x-unicode "Lucida Console" [i] font.name.monospace.x-western "Lucida Console" [i] font.name.sans-serif.x-unicode "Arial" [i] font.name.sans-serif.x-western "Arial" [i] font.name.serif.x-unicode "Georgia" [i] font.name.serif.x-western "Georgia" [i] font.system.whitelist "" [i] full-screen-api.approval-required false full-screen-api.enabled false [i] full-screen-api.warning.delay 0 [i] full-screen-api.warning.timeout 0 [i] general.autoScroll false [i] general.useragent.locale "en-US" general.warnOnAboutConfig false [i] geo.security.allowinsecure false [i] gfx.direct2d.disabled true gfx.downloadable_fonts.enabled true gfx.downloadable_fonts.woff2.enabled false gfx.font_rendering.graphite.enabled false gfx.offscreencanvas.enabled false [i] identity.fxaccounts.enabled false intl.locale.requested "en-US" intl.regional_prefs.use_os_locales false [i] javascript.options.baselinejit false [i] javascript.options.ion false javascript.options.shared_memory false javascript.options.wasm false layers.acceleration.disabled true layout.css.font-loading-api.enabled false [i] layout.spellcheckDefault 2 [i] loop.facebook.appId "" [i] loop.facebook.enabled false [i] loop.facebook.fallbackUrl "" [i] loop.facebook.shareUrl "" [i] loop.feedback.formURL "" [i] loop.feedback.manualFormURL "" [i] loop.server "" mathml.disabled true media.autoplay.enabled false media.block-autoplay-until-in-foreground true [i] media.block-play-until-visible true [i] media.eme.apiVisible false [i] media.eme.chromium-api.enabled false media.eme.enabled false media.getusermedia.browser.enabled false [i] media.getusermedia.screensharing.allow_on_old_platforms false [i] media.getusermedia.screensharing.allowed_domains "" media.gmp.trial-create.enabled false [i] media.gmp-eme-adobe.autoupdate false [i] media.gmp-eme-adobe.enabled false [i] media.gmp-eme-adobe.visible false media.gmp-gmpopenh264.autoupdate false media.gmp-manager.updateEnabled false media.gmp-manager.url.override "data:text/plain," media.gmp-widevinecdm.autoupdate false media.gmp-widevinecdm.enabled false media.gmp-widevinecdm.visible false [i] media.ondevicechange.enabled false media.peerconnection.ice.tcp false media.peerconnection.identity.enabled false media.peerconnection.identity.timeout 1 media.peerconnection.turn.disable true media.peerconnection.use_document_iceservers false media.peerconnection.video.enabled false middlemouse.contentLoadURL false network.auth.subresource-img-cross-origin-http-auth-allow false network.cookie.leave-secure-alone true [i] network.cookie.lifetime.days 90 [i] network.cookie.same-site.enabled true network.cookie.thirdparty.nonsecureSessionOnly true [i] network.dns.disableIPv6 true [i] network.dnsCacheEntries 400 [i] network.dnsCacheExpiration 60 network.file.disable_unc_paths true [i] network.ftp.enabled false network.http.altsvc.enabled false network.http.altsvc.oe false network.http.redirection-limit 10 network.http.referer.defaultPolicy 3 network.http.referer.defaultPolicy.pbmode 2 network.http.referer.hideOnionSource true network.http.referer.trimmingPolicy 0 [i] network.http.referer.userControlPolicy 3 network.http.referer.XOriginTrimmingPolicy 0 network.http.sendRefererHeader 2 [i] network.http.sendSecureXSiteReferrer false network.http.spdy.enabled false network.http.spdy.enabled.deps false network.http.spdy.enabled.http2 false [i] network.http.spdy.enabled.http2draft false [i] network.http.spdy.enabled.v3-1 false [i] network.jar.block-remote-files true network.predictor.enable-prefetch false network.protocol-handler.external.ms-windows-store false network.proxy.autoconfig_url.include_path false [i] network.trr.bootstrapAddress "" [i] network.trr.mode 0 [i] network.trr.uri "" [i] network.websocket.enabled false offline-apps.allow_by_default false [i] pageThumbs.enabled false [i] permissions.default.camera 2 [i] permissions.default.desktop-notification 2 permissions.default.geo 2 [i] permissions.default.microphone 2 [i] permissions.default.shortcuts 2 permissions.manager.defaultsUrl "" [i] permissions.memory_only true [i] pfs.datasource.url "" plugin.default.state 0 plugin.defaultXpi.state 0 [i] plugin.scan.Acrobat 99999 plugin.scan.plid.all false [i] plugin.scan.Quicktime 99999 [i] plugin.scan.WindowsMediaPlayer 99999 plugin.sessionPermissionNow.intervalInMinutes 0 [i] plugins.enumerable_names "" [i] plugins.update.url "" [i] privacy.clearOnShutdown.passwords false privacy.clearOnShutdown.siteSettings false [i] privacy.cpd.openWindows true privacy.cpd.passwords false privacy.cpd.siteSettings false [i] privacy.donottrackheader.value 1 privacy.firstparty.isolate.restrict_opener_access true privacy.resistFingerprinting.block_mozAddonManager true [i] privacy.trackingprotection.annotate_channels false [i] privacy.trackingprotection.lower_network_priority false privacy.trackingprotection.ui.enabled true [i] privacy.usercontext.about_newtab_segregation.enabled true [i] privacy.userContext.longPressBehavior 2 [i] privacy.userContext.ui.enabled true [i] privacy.window.maxInnerHeight 900 [i] privacy.window.maxInnerWidth 1600 [i] reader.parse-on-load.enabled false security.csp.enable_violation_events false security.data_uri.block_toplevel_data_uri_navigations true security.family_safety.mode 0 security.insecure_connection_icon.enabled true [i] security.insecure_connection_icon.pbmode.enabled true security.insecure_connection_text.enabled true [i] security.insecure_connection_text.pbmode.enabled true [i] security.mixed_content.send_hsts_priming false [i] security.mixed_content.use_hsts true [i] security.nocertdb true security.ssl.errorReporting.enabled false security.ssl.errorReporting.url "" security.tls.enable_0rtt_data false [i] security.tls.insecure_fallback_hosts.use_static_list false [i] services.blocklist.addons.collection "" [i] services.blocklist.gfx.collection "" [i] services.blocklist.onecrl.collection "" [i] services.blocklist.plugins.collection "" shield.savant.enabled false [i] social.directories "" [i] social.enabled false [i] social.remote-install.enabled false [i] social.share.activationPanelEnabled false [i] social.shareDirectory "" [i] social.toast-notifications.enabled false [i] social.whitelist "" [i] startup.homepage_override_url "" [i] startup.homepage_welcome_url "" [i] startup.homepage_welcome_url.additional "" [i] toolkit.cosmeticAnimations.enabled false toolkit.telemetry.archive.enabled false toolkit.telemetry.bhrPing.enabled false toolkit.telemetry.cachedClientID "" toolkit.telemetry.firstShutdownPing.enabled false toolkit.telemetry.hybridContent.enabled false toolkit.telemetry.newProfilePing.enabled false toolkit.telemetry.server "data:," toolkit.telemetry.shutdownPingSender.enabled false [i] toolkit.telemetry.unifiedIsOptIn true toolkit.telemetry.updatePing.enabled false [i] ui.key.menuAccessKey 0 ui.use_standins_for_native_colors true [i] urlclassifier.trackingTable "test-track-simple,base-track-digest256" [i] view_source.tab false webchannel.allowObject.urlWhitelist "" webgl.dxgl.enabled false webgl.enable-webgl2 false xpinstall.whitelist.required true ------------------------------------------------------------------------------ The following 78 prefs exist in both files but are inactive (commented out) in only one of them: app.update.auto ghacks.js false [i] pk.js true app.update.enabled [i] ghacks.js false pk.js true browser.bookmarks.max_backups [i] ghacks.js 2 pk.js 0 browser.cache.offline.enable [i] ghacks.js false pk.js false browser.casting.enabled [i] ghacks.js false pk.js false browser.newtabpage.activity-stream.enabled [i] ghacks.js false pk.js false browser.newtabpage.directory.ping [i] ghacks.js "data:text/plain," pk.js "" browser.newtabpage.directory.source [i] ghacks.js "data:text/plain," pk.js "data:text/plain,{}" browser.newtabpage.enhanced [i] ghacks.js false pk.js false browser.pocket.enabled [i] ghacks.js false pk.js false browser.privatebrowsing.autostart [i] ghacks.js true pk.js true browser.safebrowsing.blockedURIs.enabled [i] ghacks.js false pk.js true browser.safebrowsing.enabled [i] ghacks.js false pk.js true browser.safebrowsing.malware.enabled [i] ghacks.js false pk.js true browser.safebrowsing.phishing.enabled [i] ghacks.js false pk.js true browser.selfsupport.url [i] ghacks.js "" pk.js "" camera.control.face_detection.enabled [i] ghacks.js false pk.js false clipboard.autocopy [i] ghacks.js false pk.js false datareporting.healthreport.service.enabled [i] ghacks.js false pk.js false device.sensors.enabled [i] ghacks.js false pk.js false devtools.webide.autoinstallFxdtAdapters [i] ghacks.js false pk.js false dom.archivereader.enabled [i] ghacks.js false pk.js false dom.battery.enabled [i] ghacks.js false pk.js false dom.disable_beforeunload ghacks.js true [i] pk.js true dom.enable_performance [i] ghacks.js false pk.js false dom.enable_resource_timing [i] ghacks.js false pk.js false dom.enable_user_timing [i] ghacks.js false pk.js false dom.flyweb.enabled [i] ghacks.js false pk.js false dom.gamepad.enabled [i] ghacks.js false pk.js false dom.maxHardwareConcurrency [i] ghacks.js 2 pk.js 2 dom.netinfo.enabled [i] ghacks.js false pk.js false dom.network.enabled [i] ghacks.js false pk.js false dom.telephony.enabled [i] ghacks.js false pk.js false dom.vr.enabled [i] ghacks.js false pk.js false dom.workers.enabled [i] ghacks.js false pk.js false experiments.enabled [i] ghacks.js false pk.js false experiments.manifest.uri [i] ghacks.js "" pk.js "" experiments.supported [i] ghacks.js false pk.js false extensions.shield-recipe-client.enabled [i] ghacks.js false pk.js false extensions.update.enabled [i] ghacks.js false pk.js true general.buildID.override [i] ghacks.js 20100101 pk.js 20100101 geo.enabled [i] ghacks.js false pk.js false geo.wifi.logging.enabled [i] ghacks.js true pk.js false intl.locale.matchOS [i] ghacks.js false pk.js false loop.logDomains [i] ghacks.js false pk.js false media.gmp-provider.enabled ghacks.js false [i] pk.js false media.video_stats.enabled [i] ghacks.js false pk.js false media.webspeech.synth.enabled [i] ghacks.js false pk.js false network.cookie.lifetimePolicy [i] ghacks.js 0 pk.js 2 network.http.referer.XOriginPolicy ghacks.js 1 [i] pk.js 2 network.jar.open-unsafe-types [i] ghacks.js false pk.js false network.manage-offline-status [i] ghacks.js false pk.js false pdfjs.enableWebGL ghacks.js false [i] pk.js false places.history.enabled [i] ghacks.js false pk.js false plugins.update.notifyUser [i] ghacks.js false pk.js true privacy.clearOnShutdown.openWindows [i] ghacks.js true pk.js true privacy.cpd.downloads [i] ghacks.js true pk.js true privacy.donottrackheader.enabled ghacks.js true [i] pk.js true privacy.trackingprotection.enabled [i] ghacks.js true pk.js true privacy.trackingprotection.pbmode.enabled [i] ghacks.js true pk.js true privacy.userContext.enabled [i] ghacks.js true pk.js true security.ssl3.dhe_rsa_aes_128_sha [i] ghacks.js false pk.js false security.ssl3.dhe_rsa_aes_256_sha [i] ghacks.js false pk.js false security.ssl3.ecdhe_ecdsa_aes_128_sha [i] ghacks.js false pk.js false security.ssl3.ecdhe_ecdsa_rc4_128_sha [i] ghacks.js false pk.js false security.ssl3.ecdhe_rsa_aes_128_sha [i] ghacks.js false pk.js false security.ssl3.ecdhe_rsa_rc4_128_sha [i] ghacks.js false pk.js false security.ssl3.rsa_aes_128_sha [i] ghacks.js false pk.js true security.ssl3.rsa_aes_256_sha [i] ghacks.js false pk.js true security.ssl3.rsa_des_ede3_sha [i] ghacks.js false pk.js false security.ssl3.rsa_rc4_128_md5 [i] ghacks.js false pk.js false security.ssl3.rsa_rc4_128_sha [i] ghacks.js false pk.js false security.tls.unrestricted_rc4_fallback [i] ghacks.js false pk.js false security.xpconnect.plugin.unrestricted [i] ghacks.js false pk.js false signon.rememberSignons [i] ghacks.js false pk.js false signon.storeWhenAutocompleteOff ghacks.js true [i] pk.js false svg.disabled [i] ghacks.js true pk.js true webgl.enable-debug-renderer-info [i] ghacks.js false pk.js false ```

claustromaniac commented 6 years ago

:jeans: said...

71 prefs with matching values but inactive in ghacks.js
7 prefs with matching values but inactive in pk.js

for both these sections you don't output the value, which would be helpful

...then earthlng said...

When the report says a pref is inactive in one file, the value doesn't necessarily match the value of the same pref in the other file.

sorry my bad. Well, nice effort mate but I guess I'll keep using my script then :trollface:

My solution:

  ...
   57 prefs with matching values but inactive in ghacks.js
    4 prefs with matching values but inactive in pk.js
  ...
 ...
 The following 78 prefs exist in both files but are inactive (commented out) in only one of them:

    app.update.auto                                                          
        ghacks.js        false
[i]     pk.js            true
    app.update.enabled                                                       
[i]     ghacks.js        false
        pk.js            true
    browser.bookmarks.max_backups                                            
[i]     ghacks.js        2
        pk.js            0
    browser.cache.offline.enable                                             
[i]     ghacks.js        false
        pk.js            false
 ...
earthlng commented 6 years ago

The numbers in the header don't add up to the combined unique prefs anymore in the output you posted

claustromaniac commented 6 years ago

They're not meant to add up.

They added up when I didn't care about equality in the prefs with different state, but now that the script cares (because you seemed to be asking for it) they don't add up. It's precise. If you want the combined unique prefs to not count some prefs, then it shouldn't be called "combined unique prefs".

claustromaniac commented 6 years ago

row totals/ column totals

There are no such totals in the output generated by this script.

claustromaniac commented 6 years ago

You know what? I'll add an EXTRA row in the summary just so your numbers add up. Deal? Dammit. :laughing:

claustromaniac commented 6 years ago

If they should add up, then I need an extra row:

prefs that don't match and have different states

And that's exactly what I'll do.

claustromaniac commented 6 years ago

The following 78 prefs exist in both files but are inactive (commented out) in only one of them:

That's three things:

As things are now, the rest of the summary doesn't match the number of combined unique prefs simpy because I didn't add an extra row with the items that don't match and have different states.

The alternative would be separating those 3 things into different lists, just so they match your dear headers.

claustromaniac commented 6 years ago

My point is that the numbers above will never match unless I add that extra row, or unless I change the "combined unique prefs" header, because if it didn't count the prefs that don't match and don't have the same state, it would be one lying header.

claustromaniac commented 6 years ago

So, I'll assume no one likes this format then:

    app.update.auto                                                          
        ghacks.js        false
[i]     pk.js            true
    app.update.enabled                                                       
[i]     ghacks.js        false
        pk.js            true
    browser.bookmarks.max_backups                                            
[i]     ghacks.js        2
        pk.js            0
    browser.cache.offline.enable                                             
[i]     ghacks.js        false
        pk.js            false

I shouldn't have assumed you guys would understand what I wanted you to see, even after trying to show it to you separated from the rest of the output. My bad. I should've explained things a bit.

If you guys prefer three different lists for the three things that I mentioned before, then I'll ditch that. No problem. I just thought it was a nice way to present all the information.

claustromaniac commented 6 years ago

The first two should be combined for sure.

From what I've seen so far, I doubt earthlng would agree with that.

See what earthlng says.

Not sure what you mean, sorry.

The format, is that your example in the post right above this one?

It's the same I posted above. I'm going to split that list into the three relevant parts, but I'm still gonna use that format for listing the prefs that have both mismatching values and states, unless you have a better idea.

claustromaniac commented 6 years ago

Updated to v1.4

Possibly the final version.

Wanna know what the output looks like? run it.

earthlng commented 6 years ago

Possibly the final version.

Wanna know what the output looks like? run it.

lol, found the salty guy :) sorry mate, don't take anything I write too seriously, I was just messing with you a little bit. It's a great script and it helped me get started with PS which I've avoided to learn for too long, so thanks for that.

It's better if @claustromaniac hosts it himself because he can make all the changes he wants without me needing to review them. We can just link to it.

claustromaniac commented 6 years ago

Thanks again for all the feedback... you nitpicking bastards.

I had other ideas that I didn't implement, but I may eventually do it. Anyway, glad to make another small contribution.

claustromaniac commented 6 years ago

Nah. My skin is thick enough, thanks.

I was just kidding. I generally try not to, because it is very easy to give false impressions via text, at least for me. Also, in the event of a misunderstanding, it is generally harder to find the motivation to clarify things, because I simply don't care. But if I don't, I risk coming across as a prick, and I certainly wouldn't want random strangers to think bad of me. See what I did there?

It is also even harder to tell what others are thinking than it is in person, which leads me to explain unnecessary stuff, like I'm doing right now. Plus, this isn't even my native tongue.

Plus, I'm an oddball.

I'll just stop typing right now.

claustromaniac commented 6 years ago

There. Nitpick at your leisure.

claustromaniac commented 6 years ago

Says it's possibly the final version.

Pushes 42 commits in a matter of two weeks.

Yep, that's me alright. The good news is all of your feedback helped me find a bunch of minor (and not-so) issues with the script and I learned a lot of PowerShell gotchas and specifics in that short span, so thanks again. You guys are really helpful.

This should be as reliable and fast as it gets... I hope. I may eventually improve the documentation though. I may even consider making it more SERIOUS and everything, who knows. For now I'll just keep breaking other stuff.

claustromaniac commented 6 years ago

As always, it is my honor to pollute your wiki with my garbage!

I'll have to seriously reconsider improving the documentation now, though. Yeah... I should probably do that, shouldn't I?

sorry about sticking a drawing pin right in yer face

Don't worry about it, I'm used to that shit......(don't ask.)

claustromaniac commented 6 years ago

Honestly, I don't feel it deserves to stand next to all of the awesome extensions. :cold_sweat: That being said, I don't know where else I'd put it if I were you.

I'm starting to feel the pressure. Now I'll have to roll the WEB APP to feel more comfortable about it.