Skip to content
/ knox Public

A package containing implementations of port knocking using the libpcap wrappers in Google's gopacket library.

License

Notifications You must be signed in to change notification settings

ofasgard/knox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

knox

A package containing implementations of port knocking using the libpcap wrappers in Google's gopacket library. You can use it to create services that monitor your network interfaces for a specific sequence of ports, even if the ports in question are closed. When a successful port knock is detected, information about the triggering packet is exposed by the package so that you can act on it as you please.

Dependencies

Example

This is an example of a simple port knocking listener that triggers on ports 1337, 1338 and 1339:

package main

import "fmt"
import "github.com/ofasgard/knox"

func main() {
	ch := make(chan knox.Hostinfo, 0)
	sig := make(chan error, 0)
	go knox.PortStreamTCP("eth0", "45.33.32.156", 1600, ch, sig)
	res := <-sig
	if res != nil {
		fmt.Println("Error in setting up the sniffer. Check permissions, interface name, IP?")
		fmt.Println(res.Error())
		return
	}
	knock := make(chan knox.Hostinfo, 0)
	go knox.PortKnocker(ch, knock, 1337, 1338, 1339)
	for {
		host_data := <-knock
		fmt.Println("Received a successful knock from", host_data.IP)
	}
}

You can test out your portknocker using hping3 like so:

echo Knock Knock

hping3 -S 45.33.32.156 -p 1337 -c 1 
hping3 -S 45.33.32.156 -p 1338 -c 1 
hping3 -S 45.33.32.156 -p 1339 -c 1 

About

A package containing implementations of port knocking using the libpcap wrappers in Google's gopacket library.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages