Go to file
2017-08-07 14:41:17 -04:00
main add monitor functionality, small refactor, parse file names 2017-08-07 14:41:17 -04:00
zgrab2 add monitor functionality, small refactor, parse file names 2017-08-07 14:41:17 -04:00
zmodules add monitor functionality, small refactor, parse file names 2017-08-07 14:41:17 -04:00
LICENSE initial commit with readme and license 2016-08-19 16:25:49 -07:00
Makefile Major refactor: create zmodules, Create Base Protocol abstraction, protocol interface, add command to parser at runtime 2017-08-01 19:13:28 -04:00
README.md add monitor functionality, small refactor, parse file names 2017-08-07 14:41:17 -04:00

Zgrab 2.0

This framework contains the new ZGrab framework, and will eventually replace https://github.com/zmap/zgrab.

Building

You will need to have a valid $GOPATH set up, for more information about $GOPATH, see https://golang.org/doc/code.html.

Once you have a working $GOPATH, run:

$ go get github.com/zmap/zgrab2

This will install zgrab under $GOPATH/src/github.com/zmap/zgrab

$ cd $GOPATH/src/github.com/zmap/zgrab
$ make

Single Module Usage

Zgrab2 supports modules. For example, to run the ssh module use

./zgrab2 ssh

Module specific options must be included after the module. Application specific options can be specified at any time.

Multiple Module Usage

To run a scan with multiple modules, a .ini file must be used with the mult module. Below is an example .ini file with the corresponding zgrab2 command.

***mult.ini***
[Application Options]
output-file="output.txt"
input-file="input.txt"
[http]
name="http80"
port=80
endpoint="/"
[http]
name="http8080"
port=8080
endpoint="/"
[ssh]
port=22
./zgrab2 mult -c mult.ini

Application Options must be the initial section name. Other section names should correspond exactly to the relevant zgrab2 module. The default name for each module is the command name. If the same module is to be used multiple times then name must be specified and unique.

Contributing

Add file to zproto/ that contains a struct that satisfies the following interface:

type Protocol interface {
    Validate(args []string) error
    GetBanner() (interface{}, error)
    Initialize()
}

The struct must embed zgrab2.BaseProtocol. In the files init() function the following must be included.

func init() {
    var configStruct ConfigStruct
    cmd, err := zgrab2.AddCommand("module", "short description", "long description of module", &configStruct)
    if err != nil {
        log.Fatal(err)
    }
    configStruct.SetDefaultPortAndName(cmd, uint(00), "module")
}

The Validate() function should first make a call to zgrab2.ValidateHighLevel() and lastly call zgrab2.RegisterLookup().

License

Zgrab is licensed under Apache 2.0 and ISC. For more information, see the LICENSE file.