Code Monkey home page Code Monkey logo

asnmap's Introduction

asnmap

Go CLI and Library for quickly mapping organization network ranges using ASN information.

FeaturesInstallationUsageRunning asnmapJoin Discord


Features

image

  • ASN to CIDR Lookup
  • ORG to CIDR Lookup
  • DNS to CIDR Lookup
  • IP to CIDR Lookup
  • ASN/DNS/IP/ORG input
  • JSON/CSV/TEXT output
  • STD IN/OUT support

Installation

asnmap requires Go 1.18 to install successfully. To install, just run the below command or download pre-compiled binary from release page.

go install github.com/projectdiscovery/asnmap/cmd/asnmap@latest

Usage

asnmap -h

This will display help for the tool. Here are all the flag it supports.

Usage:
  ./asnmap [flags]

Flags:
INPUT:
   -a, -asn string[]      target asn to lookup, example: -a AS5650
   -i, -ip string[]       target ip to lookup, example: -i 100.19.12.21, -i 2a10:ad40:: 
   -d, -domain string[]   target domain to lookup, example: -d google.com, -d facebook.com
   -org string[]          target organization to lookup, example: -org GOOGLE

CONFIGURATIONS:
   -config string           path to the asnmap configuration file
   -r, -resolvers string[]  list of resolvers to use

OUTPUT:
   -o, -output string  file to write output to
   -j, -json           display json format output
   -c, -csv            display csv format output
   -v6                 display ipv6 cidr ranges in cli output
   -v, -verbose        display verbose output
   -silent             display silent output
   -version            show version of the project

Running asnmap

Input for asnmap

asnmap support multiple inputs including ASN, IP, DNS and ORG name to query ASN/CIDR information.

Input ASN DNS IP ORG
Example AS14421 example.com 93.184.216.34 GOOGLE

Input can be provided either using specific options or STDIN which accepts all the supported formats. Single, multiple (comma-separated) and file input is supported for all the options.

echo GOOGLE | ./asnmap -silent

Example input for asnmap:

asnmap -a AS45596 -silent
asnmap -i 100.19.12.21 -silent
asnmap -d hackerone.com -silent
asnmap -o GOOGLE -silent

Default Run

asnmap by default returns the CIDR range for given input.

echo GOOGLE | ./asnmap

   ___   _____  __              
  / _ | / __/ |/ /_ _  ___ ____ 
 / __ |_\ \/    /  ' \/ _  / _ \
/_/ |_/___/_/|_/_/_/_/\_,_/ .__/
                         /_/    v0.0.1
		projectdiscovery.io

Use with caution. You are responsible for your actions
Developers assume no liability and are not responsible for any misuse or damage.

8.8.4.0/24
8.8.8.0/24
8.35.200.0/21
34.3.3.0/24
34.4.4.0/24
34.96.0.0/20
34.96.32.0/19
34.96.64.0/18
34.98.64.0/18
34.98.136.0/21
34.98.144.0/21

JSON Output

asnmap by default displays CIDR range, and all the information is always available in JSON format, for automation and post processing using -json output is most convenient option to use.

echo hackerone.com | ./asnmap -json -silent | jq
{
  "timestamp": "2022-09-19 12:14:33.267339314 +0530 IST",
  "input": "hackerone.com",
  "as_number": "AS13335",
  "as_name": "CLOUDFLARENET",
  "as_country": "US",
  "as_range": [
    "104.16.0.0/14",
    "104.20.0.0/16",
    "104.21.0.0/17"
  ]
}
{
  "timestamp": "2022-09-19 12:14:33.457401266 +0530 IST",
  "input": "hackerone.com",
  "as_number": "AS13335",
  "as_name": "CLOUDFLARENET",
  "as_country": "US",
  "as_range": [
    "2606:4700:8390::/44"
  ]
}

CSV Output

asnmap also support csv format output which has all the information just like JSON output

echo hackerone.com | ./asnmap -csv -silent
timestamp|input|as_number|as_name|as_country|as_range
2022-09-19 12:15:04.906664007 +0530 IST|hackerone.com|AS13335|CLOUDFLARENET|US|104.16.0.0/14,104.20.0.0/16,104.21.0.0/17
2022-09-19 12:15:05.201328136 +0530 IST|hackerone.com|AS13335|CLOUDFLARENET|US|2606:4700:9760::/44

Using with other PD projects

Output of asnmap can be directly piped into other projects in workflow accepting stdin as input, for example:

  • echo AS54115 | asnmap | tlsx
  • echo AS54115 | asnmap | asnmap -ptr
  • echo AS54115 | asnmap | naabu -p 443
  • echo AS54115 | asnmap | naabu -p 443 | httpx
  • echo AS54115 | asnmap | naabu -p 443 | httpx | nuclei -id tech-detect

Use asnmap as a library

It's possible to use the library directly in your go programs. The following code snippets outline how to get cidr ranges from given input

package main

import (
	"github.com/projectdiscovery/asnmap"
	"fmt"
)

func main() {
	client := asnmap.NewClient()

	// Query based on ASN
	asn := "14421"
	ASN := asnmap.ASN(asn)
	results := asnmap.GetFormattedDataInJson(client.GetData(ASN))
	fmt.Println(string(results))

	// Query based on IP
	ip := "210.10.122.10"
	IP := asnmap.IP(ip)
	results = asnmap.GetFormattedDataInJson(client.GetData(IP))
	fmt.Println(string(results))

	// Query based on Organization
	org := "pplinknet"
	ORG := asnmap.Org(org)
	results = asnmap.GetFormattedDataInJson(client.GetData(ORG))
	fmt.Println(string(results))

	// Query based on domain
	domain := "hackerone.com"
	resolvedIps := asnmap.ResolveDomain(domain)
	for _, ip := range resolvedIps {
		results = asnmap.GetFormattedDataInJson(client.GetData(asnmap.IP(ip), asnmap.Domain(domain)))
		fmt.Println(string(results))
	}
}

Acknowledgements


asnmap is made with ❤️ by the projectdiscovery team and distributed under MIT License.

Join Discord

asnmap's People

Contributors

ehsandeep avatar

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.