Skip to content
This repository has been archived by the owner on Oct 9, 2023. It is now read-only.

KOLANICH-tools/firefucks.py

Repository files navigation

firefucks.py Unlicensed work

wheel (GitLab) wheel (GHA via nightly.link) GitLab Build Status GitLab Coverage GitHub Actions Libraries.io Status Code style: antiflash

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.

Installation

  1. Learn how to install python packages from git.
  2. Install manually the latest versions of the dependencies mentioned in the Dependencies section of this ReadMe.
  3. Install this tool.

How to use

  1. Copy the original omni.ja to the current dir
cp /usr/lib/firefox/omni.ja ./omni.ja.bak
cp ./omni.ja.bak ./omni.ja
  1. Modify it with firefucks tool
firefucks ./omni.ja
  1. Copy it back
sudo fakeroot cp ./omni.ja /usr/lib/firefox/omni.ja
  1. 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

Check that it has worked

  1. Open Tools -> Browser Tools -> Browser Console.
  2. Paste there content of snippet.js and execute it. It will print an object with the current values of the variables.
  3. Compare them against the preset.json file shipped as a part of this tool.

Principle of operation

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 from AppConstants as input. Module modules/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:

We are particulary interested in the following properties:

Don't touch:

Thanks

This tool stands on the shoulders of giants.

Dependencies

Sources of information

About

A tool to activate Developer Edition features in a regular Firefox !!! Migrated to Codeberg !!!

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published