wheel (GitLab)
wheel (GHA via nightly.link
)
We have moved to https://codeberg.org/KOLANICH-tools/firefucks.py, grab new versions there.
Under the disguise of "better security" Micro$oft-owned GitHub has discriminated users of 1FA passwords while having commercial interest in success of FIDO 1FA specifications and Windows Hello implementation which it promotes as a replacement for passwords. It will result in dire consequencies and is competely inacceptable, read why.
If you don't want to participate in harming yourself, it is recommended to follow the lead and migrate somewhere away of GitHub and Micro$oft. Here is the list of alternatives and rationales to do it. If they delete the discussion, there are certain well-known places where you can get a copy of it. Read why you should also leave GitHub.
This is a tool for patching Firefox Web Browser into allowing unsigned addons.
Can be used as an apt hook.
Mozilla, requiring extensions signing and signing in and getting 2FA for AMO is not nice. 🖕🔥
This tool has been created as a response to
- will of Mozilla to disallow unsigned extensions in regular builds of Firefox;
- will of Mozilla to disallow WebExtensions Experiments in regular builds of Firefox;
- will of Mozilla to require authentication on AMO in order to sign extensions;
- unwillingness of devs of some distros to provide "Developer Edition" builds of Firefox.
ToDo: Currently libzip is used for updating files witin the archive. It doesn't allow rewriting files in archives without creating a copy of the archive. It is considered contradicting libzip
goals according to its authors. We need a lib allowing to do that.
- Learn how to install python packages from git.
- Install manually the latest versions of the dependencies mentioned in the
Dependencies
section of this ReadMe. - Install this tool.
- Copy the original
omni.ja
to the current dir
cp /usr/lib/firefox/omni.ja ./omni.ja.bak
cp ./omni.ja.bak ./omni.ja
- Modify it with
firefucks
tool
firefucks ./omni.ja
- Copy it back
sudo fakeroot cp ./omni.ja /usr/lib/firefox/omni.ja
- IMPORTANT, without this the changes will have no effect! (ToDo: figure out what is the internal mechanism invalidating the caches, and maybe the way to patch the data within caches without needing root). Clean the startup caches:
rm -rf ~/.cache/mozilla/firefox/*/startupCache
- Open
Tools -> Browser Tools -> Browser Console
. - Paste there content of
snippet.js
and execute it. It will print an object with the current values of the variables. - Compare them against the
preset.json
file shipped as a part of this tool.
Some critical browser-related code written in JS and some resources are stored in omni.ja
files, which are zip archives. The location of these files is following:
dpkg -L firefox | grep omni.ja
/usr/lib/firefox/browser/omni.ja
/usr/lib/firefox/omni.ja
The latter of them (/usr/lib/firefox/omni.ja
) contains:
- Module
modules/AppConstants.jsm
, which contains some constants used to distinguish between flavours of Firefox; - Module
modules/addons/AddonSettings.jsm
, which contains some code, using the constants fromAppConstants
as input. Modulemodules/addons/AddonConstants.jsm
no longer exists because of this one. jsloader/resource/gre
is no longer present.
Some of them are documented by the links:
- https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/internals/preferences.html
- https://firefox-source-docs.mozilla.org/toolkit/crashreporter/crashreporter/index.html
- https://wiki.mozilla.org/Platform/Channel-specific_build_defines
We are particulary interested in the following properties:
MOZ_REQUIRE_SIGNING
, which is used to override the valuexpinstall.signatures.required
.MOZ_DEV_EDITION
, which is used to restrict access to some advanced features.MOZ_TELEMETRY_REPORTING
- used as an additional mean to disable telemetry.MOZ_CRASHREPORTER
- disables crash reporting.MOZ_DATA_REPORTING
- disables initialization of data reporting system and disables recommendations,
Don't touch:
MOZILLA_OFFICIAL
(var, macro) - controls lots of different things. If you change it, your Firefox will fail to start.MOZ_WEBEXT_WEBIDL_ENABLED
(var, macro) - requires compile-time changes in C++ part.
This tool stands on the shoulders of giants.
- https://github.com/Kronuz/esprima-python - for JS parsing
- https://github.com/ksons/jscodegen.py - for serializing JS back
- https://github.com/nih-at/libzip + its python bindings - for replacing files in zip archives. ToDo: replace with a lib doing in-place
- https://old.reddit.com/r/ReverseEngineering/comments/51bxuv/modifying_release_builds_of_firefox_to_allow/d7arltj/
- https://github.com/zotero/zotero-standalone-build/blob/11e7c456732397d6b95b4b3a622990e50224b439/fetch_xulrunner.sh#L83-L90
- https://github.com/SebastianSimon/firefox-omni-tweaks
- https://github.com/xiaoxiaoflood/firefox-scripts/blob/master/installation-folder/config.js