Giter Club home page Giter Club logo

geoinspector's Introduction

GeoInspector

Tests

Are you using GeoInspector? If so, let us know! Shoot us an email at [email protected].

GeoInspector is a toolkit for measuring geoblocking or server-side blocking on the DNS, TCP, TLS, and HTTP protocols. GeoInspector performs specialized measurements to endpoints on these protocols to detect when access is blocked by the endpoint due to geoblocking.

For more information, refer to our paper

Installation

Use the Makefile provided in the repository to build the binary for execution.

Configuration

The following flags can be provided for running measurements:

Flag Default Function Example
input-url-file Required Input list of URLs to test
asn-mmdb Required Path to Maxmind ASN MMDB
input-resolver-file Required if running DNS module Input list of resolvers to send queries to
input-conn-file Input list of servers to perform a TCP connection to and send data (required if not running in full mode)
output-dns-file Stdout DNS Output File
control-dns-file "" DNS Control File with trusted domain,ip,asn values to include when a domain has no IPs
output-parsed-dns dns_parsed_output.csv DNS Parsed output file
output-conn-file stdout Output File for writing TCP, TLS and HTTP connection responses
output-failed-conn-file failed_conn.csv Output File for writing domain,ip pairs with failed tcp/tls connections, used to run traceroutes
module full Module to run (can be dns, tcp or full (DNS + TCP))
num-worker 100 Number of vantage points to perform measurements to at any moment
num-query-workers 3 Number of qeuries to perform to each resolver at any moment
num-redirects 10 Number of redirects to follow for an HTTP request
src-ip Source IP address to use (will use default if unspecified)
ignore-local-resolvers False Does not add local resolvers in measurements when enabled

Usage

Run GeoInspector with a command like:

sudo ./geoinspector --input-url-file examples/test.csv --asn-mmdb GeoLite2-ASN.mmdb --output-dns-file examples/dns_output.json --output-parsed-dns examples/dns_parsed_output.csv --output-conn-file examples/tcp_output.json --output-failed-conn-file examples/tcp_failed.json  --num-workers 1 --num-query-workers 1 --input-resolver-file examples/dns-resolvers.csv

Disclaimer

GeoInspector performs multiple measurements towards endpoints with domains in the payload. Please exercise caution when using GeoInspector to not place you or others at risk of service disruptions, and do not request illegal content. Please refer to our paper for more information.

Citation

If you use the GeoInspector tool or data, please cite the following publication:

@inproceedings{ramesh2023network,<br>
title = {Network Responses to Russia's Invasion of Ukraine in 2022: A Cautionary Tale for Internet Freedom},<br>
author = {Ramesh, Reethika and Sundara Raman, Ram and Virkud, Apurva and Dirksen, Alexandra and Huremagic, Armin, and Fifield, David and Rodenburg, Dirk and Hynes, Rod and Madory, Doug and Ensafi, Roya},<br>
booktitle={In USENIX Security Symposium},<br>
year={2023}

Contributing

Our measurements are constantly improving to adapting to the changing Internet landscape, and we need the help of the community to improve GeoInspector and keep it updated! We welcome any and all contributions. Please feel free to open an Issue, Pull Request, or send us an email.

Licensing

This repository is released under the GNU General Public License (see LICENSE).

Contact

Email addresses: [email protected], [email protected], [email protected], [email protected]

Contributors

Ram Sundara Raman

Apurva Virkud

Gavin Li

Reethika Ramesh

geoinspector's People

Contributors

ramakrishnansr avatar anna-02 avatar

Stargazers

Anton avatar R avatar  avatar mle avatar

Watchers

Roya Ensafi avatar  avatar

Forkers

anna-02

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.