go-shodan

module
v4.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2019 License: MIT

README

go-shodan

Build Status Build status codecov GoDoc MIT License Go Report Card

To start working with Shodan you have to get your token first. You can do this at https://www.shodan.io.

Installation

Download the package:

go get "gopkg.in/ns3777k/go-shodan.v4"

That's it. You're ready to roll :-) v4 is the latest release and thus has some breaking changing (take a look at changelog).

Older releases can be found under tags.

master-branch is considered to be unstable.

Usage

Simple example of resolving hostnames:

package main

import (
	"log"
	"context"

	"gopkg.in/ns3777k/go-shodan.v4/shodan"
)

func main() {
	client := shodan.NewEnvClient(nil)
	dns, err := client.GetDNSResolve(context.Background(), []string{"google.com", "ya.ru"})

	if err != nil {
		log.Panic(err)
	} else {
		log.Println(dns["google.com"])
	}
}

Output for above:

2015/09/05 18:50:52 173.194.115.35

Streaming example:

package main

import (
	"log"
	"context"

	"gopkg.in/ns3777k/go-shodan.v4/shodan"
)

func main() {
	client := shodan.NewEnvClient(nil)
	ch := make(chan *shodan.HostData)
	err := client.GetBannersByASN(context.Background(), []string{"3303", "32475"}, ch)
	if err != nil {
		panic(err)
	}

	for {
		banner, ok := <-ch

		if !ok {
			log.Println("channel was closed")
			break
		}

		log.Println(banner.Product)
	}
}
Tips and tricks

Every method accepts context in the first argument so you can easily cancel any request.

You can also use SetDebug(true) to see the curl version of your requests.

Implemented REST API
Search Methods
  • /shodan/host/{ip}
  • /shodan/host/count
  • /shodan/host/search
  • /shodan/host/search/tokens
  • /shodan/ports
On-Demand Scanning
  • /shodan/protocols
  • /shodan/scan
  • /shodan/scan/internet
  • /shodan/scan/{id}
Network Alerts
  • /shodan/alert
  • /shodan/alert/{id}/info
  • /shodan/alert/{id}
  • /shodan/alert/info
  • /shodan/alert/triggers
  • /shodan/alert/{id}/trigger/{trigger}
  • /shodan/alert/{id}/trigger/{trigger}/ignore/{service}
Directory Methods
  • /shodan/query
  • /shodan/query/search
  • /shodan/query/tags
Account Methods
  • /account/profile
DNS Methods
  • /dns/resolve
  • /dns/reverse
Bulk Data
  • /shodan/data
  • /shodan/data/{dataset}
Manage Organization
  • /org
  • /org/member/{user}
Utility Methods
  • /tools/httpheaders
  • /tools/myip
API Status Methods
  • /api-info
Experimental Methods
  • /labs/honeyscore/{ip}
Implemented Streaming API
Data Streams
  • /shodan/banners
  • /shodan/asn/{asn}
  • /shodan/countries/{countries}
  • /shodan/ports/{ports}
Network Alerts
  • /shodan/alert
  • /shodan/alert/{id}

If a method is absent or something doesn't work properly don't hesitate to create an issue.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL