diff --git a/.goreleaser.yml b/.goreleaser.yml index cb97ce5..c9ec24c 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,11 +1,16 @@ builds: - main: . binary: corpass - ldflags: - - -extldflags '-static' - - -X main.version={{.Version}} + flags: + - -trimpath env: - - CGO_ENABLED=0 + - CGO_ENABLED=0 + asmflags: + - all=-trimpath={{.Env.GOPATH}} + gcflags: + - all=-trimpath={{.Env.GOPATH}} + ldflags: | + -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} -extldflags '-static' goos: - linux - darwin diff --git a/generators/multiplier/multiplier.go b/generators/multiplier/multiplier.go new file mode 100644 index 0000000..83c28fe --- /dev/null +++ b/generators/multiplier/multiplier.go @@ -0,0 +1,33 @@ +package multiplier + +import "fmt" + +type MultiplierGenerator struct { + count int +} + +func NewMultiplierGenerator() *MultiplierGenerator { + return &MultiplierGenerator{ + count: 2, + } +} + +func (g *MultiplierGenerator) Name() string { + return "multiplier" +} + +func (g *MultiplierGenerator) WithCount(i int) { + g.count = i +} + +func (g *MultiplierGenerator) Generate(input string) ([]string, error) { + results := []string{} + + result := input + for i := 2; i <= g.count; i++ { + result = fmt.Sprintf("%s%s", result, input) + results = append(results, result) + } + + return results, nil +} diff --git a/main.go b/main.go index af5d267..e8d8894 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,7 @@ import ( "github.com/4armed/corpass/generators" "github.com/4armed/corpass/generators/leet" + "github.com/4armed/corpass/generators/multiplier" "github.com/4armed/corpass/generators/numerics" "github.com/4armed/corpass/generators/punctuation" "github.com/4armed/corpass/generators/upperlower" @@ -27,7 +28,7 @@ var ( ) func main() { - flag.StringVar(&generatorList, "generators", "upperlower,leet,numerics,punctuation", "comma separated list of generators to use") + flag.StringVar(&generatorList, "generators", "upperlower,leet,numerics,punctuation,multiplier", "comma separated list of generators to use") flag.BoolVar(&verbose, "verbose", false, "enable verbose logging") flag.BoolVar(&printVersion, "version", false, "print version and exit") flag.Usage = func() { @@ -63,6 +64,7 @@ func main() { g.MustRegisterGenerator(leet.NewLeetGenerator()) g.MustRegisterGenerator(numerics.NewNumericsGenerator()) g.MustRegisterGenerator(punctuation.NewPunctuationGenerator()) + g.MustRegisterGenerator(multiplier.NewMultiplierGenerator()) // Process the generator list generators := strings.Split(generatorList, ",")