-
Notifications
You must be signed in to change notification settings - Fork 14.1k
Writing External GoLang Modules
Christopher Lee edited this page Dec 12, 2018
·
5 revisions
Contributing modules in GO can be achieved in a few simple steps as outlined below. As for supported GO version, we have tested with 1.11.2, no promised for version 2.
- Select the appropriate module path based on the type of module you are trying to contribute
- Be sure to include appropriate module documentation under here
- Test your documentation is correct by executing
info -d
- Include this line at the top of your module:
//usr/bin/env go run "$0" "$@"; exit "$?"
- Ensure your file is an executable file
- Initialize your module with the module metadata:
import "metasploit/module"
func main() {
metadata := &module.Metadata{
Name: "<module name",
Description: "<describe>",
Authors: []string{"<author 1>", "<author 2>"},
Date: "<date module written",
Type:"<module type>",
Privileged: <true|false>,
References: []module.Reference{},
Options: map[string]module.Option{
"<option 1": {Type: "<type>", Description: "<description>", Required: <true|false>, Default: "<default>"},
"<option 2": {Type: "<type>", Description: "<description>", Required: <true|false>, Default: "<default>"},
}}
module.Init(metadata, <the entry method to your module>)
}
Note: Above does not outline the full potential list of metadata options
Currently supported module types:
- remote_exploit
- remote_exploit_cmd_stager
- capture_server
- dos
- single_scanner
- single_host_login_scanner
- multi_scanner
- For code that is shared specific to your module create a directory in your module directory:
shared/src/
metasploit will automatically add these to the GOPATH - For code that you think could be used across modules, add code here
- 3rd party libs aren't currently supported but we welcome patches
- Test your Pull Request
- Create a Pull Request
- No coding standard here, be sure to gofmt
- Home Welcome to Metasploit!
- Using Metasploit A collection of useful links for penetration testers.
-
Setting Up a Metasploit Development Environment From
apt-get install
togit push
. - CONTRIBUTING.md What should your contributions look like?
- Landing Pull Requests Working with other people's contributions.
- Using Git All about Git and GitHub.
- Contributing to Metasploit Be a part of our open source community.
- Meterpreter All about the Meterpreter payload.