Skip to content
/ ctf Public

🇺🇦 Capture The Flag — privacy-focused browser extension to determine website country

License

Notifications You must be signed in to change notification settings

nilfalse/ctf

Repository files navigation

Capture The Flag Logo

CI status shield Coverage percentage shield Dependencies status shield

Capture The Flag is a privacy-focused browser extension for Firefox and Chromium which makes all sorts of meta information inferred from a website HTTP request accessible to the user.

Browser address bar demo illustration

It features a nice and clean UI which can:

  • translate a server's IP address to country
  • show which CDN and point-of-presense were used to deliver the website
  • visualize how traffic has travelled before reaching your device

💿 Prerequisites

MaxMind GeoIP database
Since by design this extension requires a local copy of an ip→country database, it is essential that during development you provide it with one. You'll have to obtain a license key in order to use MaxMind GeoIP database. Refer to their blog for more info on how to register for a free license key.
jq
Some of the build steps in the codebase rely on jq being available in the system. Please refer to their website for the best way to get it installed on your operating system.
Yarn
Yarn is used for fetching and building dependencies and to maintain the monorepo setup in this project.

📦 Building

Make sure your MaxMind license key is available to the build script:

export MAXMIND_LICENSE_KEY=REPLACE_THIS_WITH_YOUR_KEY

Then just run:

make

Or, if you don't intend to do it often, then just do a one-liner:

MAXMIND_LICENSE_KEY=REPLACE_THIS_WITH_YOUR_KEY make

The default Make target downloads and builds all relevant assets and puts them in the bundle package.

Subsequent builds can be significantly faster if you later use build target specifically:

make build

🛠️ Development

Ensure your MaxMind license key is available in the environment (see Building instructions above).

Download and install dependencies:

make primary-deps

Then, run the watch mode:

yarn start

While it's building you may want to check out how to load an unpacked extension in Google Chrome.

Once it's built you will be able to load the extension from a ./bundle directory in the appropriate package.

🎁 Release

TODO

👨‍💻 Credits

Author: Yaroslav Ilin

The distribution of this extension includes Twemoji - an emoji library maintained by Twitter.

📄 LICENSE

  This Source Code Form is subject to the terms of the Mozilla Public
  License, v. 2.0. If a copy of the MPL was not distributed with this
  file, You can obtain one at http://mozilla.org/MPL/2.0/.