Giter Club home page Giter Club logo

rir's Introduction

RIR files explorer

Go (golang) package to parse RIR files with command line utility

RIR stands for Regional Internet Registry. RIR files are used to exchange statistics around asn, ipv4 & ipv6. For more details on RIR files see here

Install

  1. Install Go beforehand
  2. Run go get github.com/simcap/rir

You should now have an executable rir in your path

Test

Run go test -v

Command line usage

Get the basic usage

$ rir
Usage of ./rir:
  -c="": 2 letters string of the country (ISO 3166)
  -n=false: given country return possible hosts count (exclude network and broadcast addresses)
  -q="": ip address to which to resolve country

Explore ip blocks given a country

$ rir -c FR
2.0.0.0/12
5.10.128.0/21
...
213.108.232.0/21
213.111.0.0/18
217.77.224.0/20

Get the country and IP net for an given IP

$ rir -q 194.146.24.104
FR 194.146.24.0/23

Get the number of possible hosts for country (exclude network & broadcast addresses)

$ ./rir -c US -n
1601581670

rir's People

Contributors

bored-engineer avatar monoidic avatar simcap avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

rir's Issues

Doesn't parse assignments spanning multiple CIDR ranges correctly.

rir doesn't parse assignments spanning multiple CIDR ranges correctly.

Example:
Directly from RIPE's RIR Statistics Exchange File

$ grep -F 193.18.0. *
delegated-ripencc-latest:ripencc|DE|ipv4|193.18.0.0|73728|19920922|assigned

Which means that rir should expand 193.18.0.0|73728 to:

193.18.0.0/16
193.19.0.0/19

But, doesn't:

$ ./rir -c DE | grep -F -e 193.18.0. -e 193.19.0.
193.18.0.0/16

And, yes, according to the standard a count of 73,728 is valid:
ftp://ftp.apnic.net/public/stats/afrinic/RIR-Statistics-Exchange-Format.txt

In the case of IPv4 the records may represent non-CIDR ranges
or CIDR blocks, and therefore the record format represents a
beginning of range, and a count. This can be converted to
prefix/length using simple algorithms.

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.