diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..aedc9e0 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,36 @@ +--- +name: Test master +on: + push: + branches: [master] +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Install build dependencies + run: sudo apt-get update -y && sudo apt-get install -y libminizip-dev ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers pocl-opencl-icd + - uses: actions/checkout@v3 + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: 'stable' + - name: Checkout hashcat + uses: actions/checkout@v3 + with: + repository: hashcat/hashcat + ref: v6.1.1 + path: hashcat + - name: Install hashcat + working-directory: ./hashcat + run: sudo make install SHARED=1 ENABLE_BRAIN=0 + - name: Install additional dependencies + working-directory: ./hashcat + run: | + sudo cp deps/LZMA-SDK/C/LzmaDec.h /usr/local/include/hashcat/ + sudo cp deps/LZMA-SDK/C/7zTypes.h /usr/local/include/hashcat/ + sudo cp deps/LZMA-SDK/C/Lzma2Dec.h /usr/local/include/hashcat/ + sudo cp -r ./OpenCL/inc_types.h /usr/local/include/hashcat/ + sudo cp -r ./deps/zlib/contrib /usr/local/include/hashcat + sudo ln -s /usr/local/lib/libhashcat.so.6.1.1 /usr/local/lib/libhashcat.so + - name: Run tests + run: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib go test ./... diff --git a/Makefile b/Makefile index 7e926f5..2cc9286 100644 --- a/Makefile +++ b/Makefile @@ -13,22 +13,22 @@ endif build: mkdir -p builds/ go build -tags "$(WORKBUILDTAGS)" -o $(BINDIR)/gocrack_worker $(CFLAGS) -ldflags \ - "-X github.com/fireeye/gocrack/worker.CompileRev=${BUILDREV} \ - -X github.com/fireeye/gocrack/worker.CompileTime=${BUILDDATE} \ - -X github.com/fireeye/gocrack/worker/engines/hashcat.HashcatVersion=${HASHCAT_VER}" \ + "-X github.com/mandiant/gocrack/worker.CompileRev=${BUILDREV} \ + -X github.com/mandiant/gocrack/worker.CompileTime=${BUILDDATE} \ + -X github.com/mandiant/gocrack/worker/engines/hashcat.HashcatVersion=${HASHCAT_VER}" \ cmd/gocrack_worker/*.go go build -tags "$(SERVBUILDTAGS)" -o $(BINDIR)/gocrack_server $(CFLAGS) -ldflags \ - "-X github.com/fireeye/gocrack/server.CompileRev=${BUILDREV} \ - -X github.com/fireeye/gocrack/server.CompileTime=${BUILDDATE}" \ + "-X github.com/mandiant/gocrack/server.CompileRev=${BUILDREV} \ + -X github.com/mandiant/gocrack/server.CompileTime=${BUILDDATE}" \ cmd/gocrack_server/*.go static_analysis: - go vet `go list ./... | egrep -v 'gocat|vendor'` + go vet `go list ./...` test: - go test -cover -v `go list ./... | egrep -v 'gocat|vendor'` + go test -cover -v `go list ./...` clean: rm -rf builds/ -all: static_analysis test build \ No newline at end of file +all: static_analysis test build diff --git a/README.md b/README.md index 6434dd1..18544ad 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # gocrack -[![Build Status](https://travis-ci.org/fireeye/gocrack.svg?branch=master)](https://travis-ci.org/fireeye/gocrack) [![codecov](https://codecov.io/gh/fireeye/gocrack/branch/master/graph/badge.svg)](https://codecov.io/gh/fireeye/gocrack) [![reportcard](https://goreportcard.com/badge/github.com/fireeye/gocrack)](https://goreportcard.com/report/github.com/fireeye/gocrack) +[![Build Status](https://travis-ci.org/mandiant/gocrack.svg?branch=master)](https://travis-ci.org/mandiant/gocrack) [![codecov](https://codecov.io/gh/mandiant/gocrack/branch/master/graph/badge.svg)](https://codecov.io/gh/mandiant/gocrack) [![reportcard](https://goreportcard.com/badge/github.com/mandiant/gocrack)](https://goreportcard.com/report/github.com/mandiant/gocrack) ![GoCrack Logo](/docs/logo.png) @@ -8,7 +8,7 @@ GoCrack provides APIs to manage password cracking tasks across supported crackin ## Supported Engines -* [hashcat 5.X+](https://github.com/hashcat/hashcat) +* [hashcat 6.X+](https://github.com/hashcat/hashcat) ## Documentation diff --git a/cmd/gocrack_server/server.go b/cmd/gocrack_server/server.go index c56ad34..224f801 100644 --- a/cmd/gocrack_server/server.go +++ b/cmd/gocrack_server/server.go @@ -6,8 +6,8 @@ import ( "os/signal" "syscall" - "github.com/fireeye/gocrack/server" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server" + "github.com/mandiant/gocrack/shared" "github.com/rs/zerolog" "github.com/rs/zerolog/log" diff --git a/cmd/gocrack_worker/worker.go b/cmd/gocrack_worker/worker.go index 72f8f1e..81f2b62 100644 --- a/cmd/gocrack_worker/worker.go +++ b/cmd/gocrack_worker/worker.go @@ -11,10 +11,10 @@ import ( "strings" "syscall" - "github.com/fireeye/gocrack/shared" - "github.com/fireeye/gocrack/worker" - "github.com/fireeye/gocrack/worker/child" - "github.com/fireeye/gocrack/worker/parent" + "github.com/mandiant/gocrack/shared" + "github.com/mandiant/gocrack/worker" + "github.com/mandiant/gocrack/worker/child" + "github.com/mandiant/gocrack/worker/parent" "github.com/rs/zerolog" "github.com/rs/zerolog/log" diff --git a/docker/Makefile b/docker/Makefile index 8c41dd9..cf2412d 100755 --- a/docker/Makefile +++ b/docker/Makefile @@ -2,7 +2,7 @@ ROOT_PROJECT := gocrack PKG_AUTHOR := Christopher Schmitt HASHCAT_VERSION := v5.1.0 -GOCRACK_PROJ := github.com/fireeye/gocrack +GOCRACK_PROJ := github.com/mandiant/gocrack GOCRACK_CODE_LOCAL := ${GOPATH}/src/$(GOCRACK_PROJ) EXTERNAL_DIR := $(CURDIR)/external HASHCAT_DIR := $(EXTERNAL_DIR)/hashcat @@ -50,4 +50,4 @@ build_images: build_server_image build_worker_image clean: @rm -rf $(DIST_DIR) -build: hashcat gocrack build_server_image build_worker_image \ No newline at end of file +build: hashcat gocrack build_server_image build_worker_image diff --git a/docs/administrator/config.md b/docs/administrator/config.md index 6ca37df..9ae7453 100644 --- a/docs/administrator/config.md +++ b/docs/administrator/config.md @@ -56,7 +56,7 @@ Example Configs for NGINX: * `allowed_origins`: A list of domains (origins) in which requests will be made from (UI). This is a [CORS] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) setting. * `max_preflight_age`: Indicates how long the response of a preflight request can be cached by the browser. By default, this is set to 24 hours. It must be in the format of a [duration string](https://golang.org/pkg/time/#ParseDuration) 1. `ui` - * `static_path`: Path containing `index.html` and a folder called `static` that serve as the GoCrack User Interface. The reference user interface can be found in the [gocrack-ui repository](https://github.com/fireeye/gocrack-ui). + * `static_path`: Path containing `index.html` and a folder called `static` that serve as the GoCrack User Interface. The reference user interface can be found in the [gocrack-ui repository](https://github.com/mandiant/gocrack-ui). * `csrf_key`: A secure key that is used to sign the CSRF cookies. This should be set to a strong, random string * `csrf_enabled`: By default, this is true but on development instances this should be set to false. diff --git a/go.mod b/go.mod index 8132bef..d21732d 100644 --- a/go.mod +++ b/go.mod @@ -1,44 +1,65 @@ -module github.com/fireeye/gocrack +module github.com/mandiant/gocrack -go 1.12 +go 1.20 + +require ( + github.com/asdine/storm v0.0.0-20190418133842-e0f77eada154 + github.com/gin-contrib/cors v1.3.1 + github.com/gin-gonic/gin v1.7.7 + github.com/google/uuid v1.3.0 + github.com/gorilla/csrf v1.7.0 + github.com/mandiant/gocat/v6 v6.1.0 + github.com/nightlyone/lockfile v0.0.0-20170804114028-6a197d5ea611 + github.com/prometheus/client_golang v1.11.1 + github.com/prometheus/client_model v0.2.0 + github.com/rs/zerolog v1.20.0 + github.com/shirou/gopsutil v0.0.0-20170510024726-b6da2bd76e7d + github.com/stretchr/testify v1.7.0 + github.com/tankbusta/gzip v0.0.0-20171023233440-5ea045a82e8f + github.com/tankbusta/hashvalidate v0.11.1 + github.com/tchap/go-exchange v0.0.0-20141009085351-ebe3feb493da + golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b + gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df + gopkg.in/ldap.v2 v2.5.1 + gopkg.in/square/go-jose.v2 v2.5.1 + gopkg.in/yaml.v2 v2.4.0 +) require ( github.com/DataDog/zstd v1.4.0 // indirect github.com/Sereal/Sereal v0.0.0-20190606082811-cf1bab6c7a3a // indirect github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect - github.com/asdine/storm v0.0.0-20190418133842-e0f77eada154 - github.com/fireeye/gocat v0.0.0-20190613212338-ce97d32213d0 - github.com/gin-contrib/cors v1.3.0 + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.1.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/gin-contrib/sse v0.1.0 // indirect - github.com/gin-gonic/gin v1.4.0 github.com/go-ole/go-ole v1.2.4 // indirect + github.com/go-playground/locales v0.14.0 // indirect + github.com/go-playground/universal-translator v0.18.0 // indirect + github.com/go-playground/validator/v10 v10.9.0 // indirect + github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.1 // indirect - github.com/gorilla/csrf v1.5.1 - github.com/kr/pty v1.1.5 // indirect - github.com/mattn/go-isatty v0.0.8 // indirect - github.com/nightlyone/lockfile v0.0.0-20170804114028-6a197d5ea611 - github.com/prometheus/client_golang v0.9.4 - github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 - github.com/rs/zerolog v1.14.3 - github.com/satori/go.uuid v0.0.0-20160713180306-0aa62d5ddceb - github.com/shirou/gopsutil v0.0.0-20170510024726-b6da2bd76e7d + github.com/gorilla/securecookie v1.1.1 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/leodido/go-urn v1.2.1 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/common v0.26.0 // indirect + github.com/prometheus/procfs v0.6.0 // indirect github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 // indirect - github.com/stretchr/objx v0.2.0 // indirect - github.com/stretchr/testify v1.3.0 - github.com/tankbusta/gzip v0.0.0-20171023233440-5ea045a82e8f - github.com/tchap/go-exchange v0.0.0-20141009085351-ebe3feb493da - github.com/tchap/go-patricia v2.2.6+incompatible // indirect + github.com/tchap/go-patricia v2.3.0+incompatible // indirect + github.com/ugorji/go/codec v1.2.6 // indirect github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect go.etcd.io/bbolt v1.3.3 // indirect - golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 - golang.org/x/net v0.0.0-20190611141213-3f473d35a33a // indirect - golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae // indirect - golang.org/x/tools v0.0.0-20190611222205-d73e1c7e250b // indirect + golang.org/x/sys v0.0.0-20211213223007-03aa0b5f6827 // indirect + golang.org/x/text v0.3.7 // indirect google.golang.org/appengine v1.6.1 // indirect + google.golang.org/protobuf v1.27.1 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/asn1-ber.v1 v1.0.0-20150924051756-4e86f4367175 // indirect - gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df - gopkg.in/ldap.v2 v2.5.1 - gopkg.in/square/go-jose.v2 v2.3.1 - gopkg.in/yaml.v2 v2.2.2 + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 595bf17..41e337e 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/DataDog/zstd v1.4.0 h1:vhoV+DUHnRZdKW1i5UMjAk2G4JY8wN4ayRfYDNdEhwo= github.com/DataDog/zstd v1.4.0/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/Sereal/Sereal v0.0.0-20181211220259-509a78ddbda3/go.mod h1:D0JMgToj/WdxCgd30Kc1UcA9E+WdZoJqeVOuYW7iTBM= @@ -6,172 +7,289 @@ github.com/Sereal/Sereal v0.0.0-20190606082811-cf1bab6c7a3a/go.mod h1:D0JMgToj/W github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/asdine/storm v0.0.0-20190418133842-e0f77eada154 h1:2lbe+CPe6eQf2EA3jjLdLFZKGv3cbYqVIDjKnzcyOXg= github.com/asdine/storm v0.0.0-20190418133842-e0f77eada154/go.mod h1:cMLKpjHSP4q0P133fV15ojQgwWWB2IMv+hrFsmBF/wI= -github.com/asdine/storm v2.1.2+incompatible h1:dczuIkyqwY2LrtXPz8ixMrU/OFgZp71kbKTHGrXYt/Q= -github.com/asdine/storm v2.1.2+incompatible/go.mod h1:RarYDc9hq1UPLImuiXK3BIWPJLdIygvV3PsInK0FbVQ= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fireeye/gocat v0.0.0-20190613212338-ce97d32213d0 h1:9Q627+zI86PEvW6swCZocEJKt9N2ALa+QF9RVhQX/nw= -github.com/fireeye/gocat v0.0.0-20190613212338-ce97d32213d0/go.mod h1:jiQe5RA0SrrZbYO2QvfWgQKzLBDTmJH9nwrfokC3Euo= -github.com/gin-contrib/cors v0.0.0-20170708080947-567de1916927 h1:Asmg6n4CmGBOR6Lc6v7NFVB7rTqeiig/lcPKxwC/YXw= -github.com/gin-contrib/cors v0.0.0-20170708080947-567de1916927/go.mod h1:cw+u9IsAkC16e42NtYYVCLsHYXE98nB3M7Dr9mLSeH4= -github.com/gin-contrib/cors v1.3.0 h1:PolezCc89peu+NgkIWt9OB01Kbzt6IP0J/JvkG6xxlg= -github.com/gin-contrib/cors v1.3.0/go.mod h1:artPvLlhkF7oG06nK8v3U8TNz6IeX+w1uzCSEId5/Vc= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/gin-contrib/cors v1.3.1 h1:doAsuITavI4IOcd0Y19U4B+O0dNWihRyX//nn4sEmgA= +github.com/gin-contrib/cors v1.3.1/go.mod h1:jjEJ4268OPZUcU7k9Pm653S7lXUGcqMADzFA61xsmDk= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.4.0 h1:3tMoCCfM7ppqsR0ptz/wi1impNpT7/9wQtMZ8lr1mCQ= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= +github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= +github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs= +github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-playground/validator/v10 v10.9.0 h1:NgTtmN58D0m8+UuxtYmGztBJB7VnPgjj221I1QHci2A= +github.com/go-playground/validator/v10 v10.9.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/csrf v1.5.1 h1:UASc2+EB0T51tvl6/2ls2ciA8/qC7KdTO7DsOEKbttQ= -github.com/gorilla/csrf v1.5.1/go.mod h1:HTDW7xFOO1aHddQUmghe9/2zTvg7AYCnRCs7MxTGu/0= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/csrf v1.7.0 h1:mMPjV5/3Zd460xCavIkppUdvnl5fPXMpv2uz2Zyg7/Y= +github.com/gorilla/csrf v1.7.0/go.mod h1:+a/4tCmqhG6/w4oafeAZ9pEa3/NZOWYVbD9fV0FwIQA= github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/mandiant/gocat/v6 v6.1.0 h1:o0CObRTD/qCFDo9TtzERb83Fs3ht18RZt35TIs9vTLA= +github.com/mandiant/gocat/v6 v6.1.0/go.mod h1:xaBEcUXDXmnqS0kL5OGKb4vPQlvpa2/6mzgMiT1lImE= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nightlyone/lockfile v0.0.0-20170804114028-6a197d5ea611 h1:dJA8OtA0V3XJ3MvZKU8tOlrXenaGOypfPHSi2JWgBto= github.com/nightlyone/lockfile v0.0.0-20170804114028-6a197d5ea611/go.mod h1:JbxfV1Iifij2yhRjXai0oFrbpxszXHRx1E5RuM26o4Y= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.4 h1:Y8E/JaaPbmFSW2V81Ab/d8yZFYQQGbni1b1jPcG9Y6A= -github.com/prometheus/client_golang v0.9.4/go.mod h1:oCXIBxdI62A4cR6aTRJCgetEjecSIYzOEaeAn4iYEpM= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2 h1:6LJUbpNm42llc4HRCuvApCSWB/WfhuNo9K98Q9sNGfs= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.14.3 h1:4EGfSkR2hJDB0s3oFfrlPqjU1e4WLncergLil3nEKW0= -github.com/rs/zerolog v1.14.3/go.mod h1:3WXPzbXEEliJ+a6UFE4vhIxV8qR1EML6ngzP9ug4eYg= -github.com/satori/go.uuid v0.0.0-20160713180306-0aa62d5ddceb h1:1r/p6yT1FfHR1+qBm7UYBPgfqCmzz/8mpNvfc+iKlfU= -github.com/satori/go.uuid v0.0.0-20160713180306-0aa62d5ddceb/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/rs/zerolog v1.20.0 h1:38k9hgtUBdxFwE34yS8rTHmHBa4eN16E4DJlv177LNs= +github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= github.com/shirou/gopsutil v0.0.0-20170510024726-b6da2bd76e7d h1:LeaIII7aaihsHubuUO2FQyEzU4q/1hrBo3AT+E5YBZk= github.com/shirou/gopsutil v0.0.0-20170510024726-b6da2bd76e7d/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tankbusta/gzip v0.0.0-20171023233440-5ea045a82e8f h1:Bb5P7GrYExTvQsggmfjpcpObUXJg/ZZk29bVu4nojFA= github.com/tankbusta/gzip v0.0.0-20171023233440-5ea045a82e8f/go.mod h1:xm9CKnvOrF3sgiNUu8xVK+3+5YvW/uIOR7lM//NeXrE= +github.com/tankbusta/hashvalidate v0.11.1 h1:7O6PwGklHh5oeTz6jprKlk7VyCv1mmfwBjeCo8Idug4= +github.com/tankbusta/hashvalidate v0.11.1/go.mod h1:RBhdOP0Gfp46QbGbanD0QRCnAMDjVC4/Of3y65XK40U= github.com/tchap/go-exchange v0.0.0-20141009085351-ebe3feb493da h1:hFJk5HBUkfPOQqsUXIyWz1V9ZtpUdgzecjVUONGEwis= github.com/tchap/go-exchange v0.0.0-20141009085351-ebe3feb493da/go.mod h1:jNOquFYZ6d7pucR/rMI2+cIWx1e96tBQ0eJzfo2JJFw= -github.com/tchap/go-patricia v2.2.6+incompatible h1:JvoDL7JSoIP2HDE8AbDH3zC8QBPxmzYe32HHy5yQ+Ck= -github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/ugorji/go v1.1.4 h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/tchap/go-patricia v2.3.0+incompatible h1:GkY4dP3cEfEASBPPkWd+AmjYxhmDkqO9/zg7R0lSQRs= +github.com/tchap/go-patricia v2.3.0+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= +github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.0/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 h1:58fnuSXlxZmFdJyvtTFVmVhcMLU6v5fEb/ok4wyqtNU= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 h1:1wopBVtVdWnn03fZelqdXTqk7U7zPQCb+T4rbU9ZEoU= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b h1:QAqMVf3pSa6eeTsuklijukjXBlj7Es2QQplab+/RbQ4= +golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190611141213-3f473d35a33a h1:+KkCgOMgnKSgenxTBoiwkMqTiouMIy/3o8RLdmSbGoY= -golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c h1:+EXw7AwNOKzPFXMZ1yNjO40aWCh3PIquJB2fYlv9wcs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae h1:xiXzMMEQdQcric9hXtr1QU98MHunKK7OTtsoU6bYWs4= -golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211213223007-03aa0b5f6827 h1:A0Qkn7Z/n8zC1xd9LTw17AiKlBRK64tw3ejWQiEqca0= +golang.org/x/sys v0.0.0-20211213223007-03aa0b5f6827/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190611222205-d73e1c7e250b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/asn1-ber.v1 v1.0.0-20150924051756-4e86f4367175 h1:nn6Zav2sOQHCFJHEspya8KqxhFwKci30UxHy3HXPTyQ= gopkg.in/asn1-ber.v1 v1.0.0-20150924051756-4e86f4367175/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2 h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= +gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/ldap.v2 v2.5.1 h1:wiu0okdNfjlBzg6UWvd1Hn8Y+Ux17/u/4nlk4CQr6tU= gopkg.in/ldap.v2 v2.5.1/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk= -gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/opencl/devices.go b/opencl/devices.go index 613d1a9..23aaf0b 100644 --- a/opencl/devices.go +++ b/opencl/devices.go @@ -2,7 +2,9 @@ package opencl // #include "include.h" import "C" -import "unsafe" +import ( + "unsafe" +) const maxDeviceCount = 64 diff --git a/opencl/include.h b/opencl/include.h index a047502..4ffc2fe 100644 --- a/opencl/include.h +++ b/opencl/include.h @@ -8,4 +8,4 @@ #include "CL/cl.h" #endif -#endif \ No newline at end of file +#endif diff --git a/opencl/platform_test.go b/opencl/platform_test.go index e911e1f..84ffb91 100644 --- a/opencl/platform_test.go +++ b/opencl/platform_test.go @@ -1,7 +1,10 @@ package opencl -import "testing" -import "github.com/stretchr/testify/assert" +import ( + "testing" + + "github.com/stretchr/testify/assert" +) type getterTest struct { Out string @@ -33,7 +36,7 @@ func TestGetPlatforms(t *testing.T) { } devices, err := platform.GetDevices(DeviceTypeAll) - assert.Nil(t, err) + assert.Nil(t, err, "This can happen if you have a platform installed that legitimately has no devices") assert.True(t, len(devices) > 0) } } diff --git a/server/auth_plugin_database.go b/server/auth_plugin_database.go index c675524..372388d 100644 --- a/server/auth_plugin_database.go +++ b/server/auth_plugin_database.go @@ -1,5 +1,6 @@ +//go:build auth_database // +build auth_database package server -import _ "github.com/fireeye/gocrack/server/authentication/database" +import _ "github.com/mandiant/gocrack/server/authentication/database" diff --git a/server/auth_plugin_default.go b/server/auth_plugin_default.go index 4a63908..c4bec0d 100644 --- a/server/auth_plugin_default.go +++ b/server/auth_plugin_default.go @@ -1,8 +1,9 @@ +//go:build !auth_database && !auth_ldap // +build !auth_database,!auth_ldap package server import ( - _ "github.com/fireeye/gocrack/server/authentication/database" - _ "github.com/fireeye/gocrack/server/authentication/ldap" + _ "github.com/mandiant/gocrack/server/authentication/database" + _ "github.com/mandiant/gocrack/server/authentication/ldap" ) diff --git a/server/auth_plugin_ldap.go b/server/auth_plugin_ldap.go index 8ef4805..4e78647 100644 --- a/server/auth_plugin_ldap.go +++ b/server/auth_plugin_ldap.go @@ -1,5 +1,6 @@ +//go:build auth_ldap // +build auth_ldap package server -import _ "github.com/fireeye/gocrack/server/authentication/ldap" +import _ "github.com/mandiant/gocrack/server/authentication/ldap" diff --git a/server/authentication/authentication.go b/server/authentication/authentication.go index 44999fd..a6cf401 100644 --- a/server/authentication/authentication.go +++ b/server/authentication/authentication.go @@ -5,8 +5,8 @@ import ( "fmt" "time" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" jose "gopkg.in/square/go-jose.v2" jwt "gopkg.in/square/go-jose.v2/jwt" diff --git a/server/authentication/authentication_test.go b/server/authentication/authentication_test.go index 4fe5281..75980e4 100644 --- a/server/authentication/authentication_test.go +++ b/server/authentication/authentication_test.go @@ -5,9 +5,9 @@ import ( "testing" "time" - test "github.com/fireeye/gocrack/server/authentication/test" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + test "github.com/mandiant/gocrack/server/authentication/test" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" "github.com/stretchr/testify/assert" ) diff --git a/server/authentication/database/database.go b/server/authentication/database/database.go index 291c6f8..26fec68 100644 --- a/server/authentication/database/database.go +++ b/server/authentication/database/database.go @@ -3,8 +3,8 @@ package database import ( "fmt" - "github.com/fireeye/gocrack/server/authentication" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/authentication" + "github.com/mandiant/gocrack/server/storage" "github.com/rs/zerolog/log" "golang.org/x/crypto/bcrypt" diff --git a/server/authentication/database/database_test.go b/server/authentication/database/database_test.go index ed88027..52ed406 100644 --- a/server/authentication/database/database_test.go +++ b/server/authentication/database/database_test.go @@ -5,9 +5,9 @@ import ( "strings" "testing" - "github.com/fireeye/gocrack/server/authentication" - test "github.com/fireeye/gocrack/server/authentication/test" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/authentication" + test "github.com/mandiant/gocrack/server/authentication/test" + "github.com/mandiant/gocrack/server/storage" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" diff --git a/server/authentication/ldap/ldap.go b/server/authentication/ldap/ldap.go index 0e5d728..0fa79e6 100644 --- a/server/authentication/ldap/ldap.go +++ b/server/authentication/ldap/ldap.go @@ -8,10 +8,10 @@ import ( "fmt" "strings" - "github.com/fireeye/gocrack/server/authentication" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/authentication" + "github.com/mandiant/gocrack/server/storage" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" ldap "gopkg.in/ldap.v2" ) @@ -233,7 +233,7 @@ func (s *Backend) Login(username, password string) (*storage.User, error) { Username: username, IsSuperUser: isUserFirstAndShouldBeAdmin, EmailAddress: props["mail"], - UserUUID: uuid.NewV4().String(), + UserUUID: uuid.NewString(), Password: "user_is_ldap", } diff --git a/server/authentication/test/fake_auth.go b/server/authentication/test/fake_auth.go index ed6fa7e..83bbac3 100644 --- a/server/authentication/test/fake_auth.go +++ b/server/authentication/test/fake_auth.go @@ -1,6 +1,6 @@ package test -import "github.com/fireeye/gocrack/server/storage" +import "github.com/mandiant/gocrack/server/storage" type FakeAuthPlugin struct { db *FakeDatabase diff --git a/server/authentication/test/fake_database.go b/server/authentication/test/fake_database.go index f5a113f..6eeda53 100644 --- a/server/authentication/test/fake_database.go +++ b/server/authentication/test/fake_database.go @@ -3,7 +3,7 @@ package test import ( "errors" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" ) type FakeDatabase struct { diff --git a/server/config.go b/server/config.go index 5e2a167..8a66abb 100644 --- a/server/config.go +++ b/server/config.go @@ -3,12 +3,12 @@ package server import ( "errors" - "github.com/fireeye/gocrack/server/authentication" - "github.com/fireeye/gocrack/server/filemanager" - "github.com/fireeye/gocrack/server/notifications" - "github.com/fireeye/gocrack/server/rpc" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/server/web" + "github.com/mandiant/gocrack/server/authentication" + "github.com/mandiant/gocrack/server/filemanager" + "github.com/mandiant/gocrack/server/notifications" + "github.com/mandiant/gocrack/server/rpc" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/server/web" ) // Config describes all the configuration values of the GoCrack server diff --git a/server/filemanager/config.go b/server/filemanager/config.go index c52eb0d..a63ce01 100644 --- a/server/filemanager/config.go +++ b/server/filemanager/config.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/shared" ) var ( diff --git a/server/filemanager/config_test.go b/server/filemanager/config_test.go index ed5e853..6559c03 100644 --- a/server/filemanager/config_test.go +++ b/server/filemanager/config_test.go @@ -5,7 +5,7 @@ import ( "io/ioutil" "testing" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/shared" "github.com/stretchr/testify/assert" ) diff --git a/server/filemanager/filemanager.go b/server/filemanager/filemanager.go index 59c3e0e..6a25975 100644 --- a/server/filemanager/filemanager.go +++ b/server/filemanager/filemanager.go @@ -12,7 +12,7 @@ import ( "path/filepath" "strings" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" ) // Context contains the state of the filemanager and provides public methods to interact diff --git a/server/filemanager/filemanager_test.go b/server/filemanager/filemanager_test.go index ee425f2..8422a25 100644 --- a/server/filemanager/filemanager_test.go +++ b/server/filemanager/filemanager_test.go @@ -6,10 +6,10 @@ import ( "os" "testing" - fakestor "github.com/fireeye/gocrack/server/filemanager/test" - "github.com/fireeye/gocrack/server/storage" + fakestor "github.com/mandiant/gocrack/server/filemanager/test" + "github.com/mandiant/gocrack/server/storage" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "github.com/stretchr/testify/assert" ) @@ -69,7 +69,7 @@ func TestSaveEngineFile(t *testing.T) { assert.FailNow(t, "failed to create test file", err.Error()) } - uuidToCreate := uuid.NewV4().String() + uuidToCreate := uuid.NewString() fresp, err := fm.SaveFile(testfile, "testing", uuidToCreate, storage.EngineFileDictionary) if err != nil { assert.FailNow(t, "failed to save test file", err.Error()) diff --git a/server/filemanager/importer.go b/server/filemanager/importer.go index 94fceb8..993e073 100644 --- a/server/filemanager/importer.go +++ b/server/filemanager/importer.go @@ -5,10 +5,10 @@ import ( "path/filepath" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" + "github.com/google/uuid" "github.com/rs/zerolog/log" - uuid "github.com/satori/go.uuid" ) type extlookup map[string]storage.EngineFileType @@ -48,7 +48,7 @@ func (s *Context) importDirectory() error { Str("extension", extension). Msg("Importing file") - fileUUID := uuid.NewV4().String() + fileUUID := uuid.NewString() fd, err := os.Open(path) if err != nil { nonFatalError = err diff --git a/server/filemanager/test/fakestor.go b/server/filemanager/test/fakestor.go index 149697a..cf0a761 100644 --- a/server/filemanager/test/fakestor.go +++ b/server/filemanager/test/fakestor.go @@ -1,6 +1,6 @@ package test -import "github.com/fireeye/gocrack/server/storage" +import "github.com/mandiant/gocrack/server/storage" type TestEngineFileTxn struct { doc *storage.EngineFile diff --git a/server/notifications/notifications.go b/server/notifications/notifications.go index e219898..7f2d600 100644 --- a/server/notifications/notifications.go +++ b/server/notifications/notifications.go @@ -9,7 +9,7 @@ import ( "sync" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/rs/zerolog/log" gomail "gopkg.in/gomail.v2" diff --git a/server/rpc/client/beacon.go b/server/rpc/client/beacon.go index 0eb8574..7145633 100644 --- a/server/rpc/client/beacon.go +++ b/server/rpc/client/beacon.go @@ -1,6 +1,6 @@ package client -import "github.com/fireeye/gocrack/server/rpc" +import "github.com/mandiant/gocrack/server/rpc" // Beacon sends our current status to the server func (s *RPCClient) Beacon(beaconRequest rpc.BeaconRequest) (*rpc.BeaconResponse, error) { diff --git a/server/rpc/client/client_test.go b/server/rpc/client/client_test.go index 3f2d48a..e6b1cc9 100644 --- a/server/rpc/client/client_test.go +++ b/server/rpc/client/client_test.go @@ -6,7 +6,7 @@ import ( "sync" "testing" - "github.com/fireeye/gocrack/shared/pool" + "github.com/mandiant/gocrack/shared/pool" "github.com/stretchr/testify/assert" ) diff --git a/server/rpc/client/tasks.go b/server/rpc/client/tasks.go index 23f67db..751c74f 100644 --- a/server/rpc/client/tasks.go +++ b/server/rpc/client/tasks.go @@ -5,7 +5,7 @@ import ( "fmt" "io" - "github.com/fireeye/gocrack/server/rpc" + "github.com/mandiant/gocrack/server/rpc" ) // ChangeTaskStatus instructs the server to change the status of a task diff --git a/server/rpc/rpc.go b/server/rpc/rpc.go index 3df0d77..3e9e0e4 100644 --- a/server/rpc/rpc.go +++ b/server/rpc/rpc.go @@ -4,7 +4,7 @@ import ( "errors" "io" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/shared" ) // Config describes the configuration used by the GoCrack RPC Listener. diff --git a/server/rpc/rpc_beacon.go b/server/rpc/rpc_beacon.go index 41b656d..90f5df4 100644 --- a/server/rpc/rpc_beacon.go +++ b/server/rpc/rpc_beacon.go @@ -6,8 +6,8 @@ import ( "net/http" "time" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" "github.com/gin-gonic/gin" ) diff --git a/server/rpc/rpc_server.go b/server/rpc/rpc_server.go index 106e254..d586a14 100644 --- a/server/rpc/rpc_server.go +++ b/server/rpc/rpc_server.go @@ -7,10 +7,10 @@ import ( "net" "net/http" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/server/workmgr" - "github.com/fireeye/gocrack/shared" - "github.com/fireeye/gocrack/shared/ginlog" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/server/workmgr" + "github.com/mandiant/gocrack/shared" + "github.com/mandiant/gocrack/shared/ginlog" "github.com/gin-gonic/gin" "github.com/rs/zerolog/log" diff --git a/server/rpc/rpc_tasks.go b/server/rpc/rpc_tasks.go index 0276de7..8400e1d 100644 --- a/server/rpc/rpc_tasks.go +++ b/server/rpc/rpc_tasks.go @@ -8,7 +8,7 @@ import ( "os" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/gin-gonic/gin" ) diff --git a/server/server.go b/server/server.go index 96b10fe..7e9be75 100644 --- a/server/server.go +++ b/server/server.go @@ -6,13 +6,13 @@ import ( "sync" "time" - "github.com/fireeye/gocrack/server/authentication" - "github.com/fireeye/gocrack/server/filemanager" - "github.com/fireeye/gocrack/server/notifications" - "github.com/fireeye/gocrack/server/rpc" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/server/web" - "github.com/fireeye/gocrack/server/workmgr" + "github.com/mandiant/gocrack/server/authentication" + "github.com/mandiant/gocrack/server/filemanager" + "github.com/mandiant/gocrack/server/notifications" + "github.com/mandiant/gocrack/server/rpc" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/server/web" + "github.com/mandiant/gocrack/server/workmgr" "github.com/gin-gonic/gin" "github.com/rs/zerolog/log" diff --git a/server/storage/bdb/audit_log.go b/server/storage/bdb/audit_log.go index 4a5d504..dcd8cc1 100644 --- a/server/storage/bdb/audit_log.go +++ b/server/storage/bdb/audit_log.go @@ -1,7 +1,7 @@ package bdb import ( - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/asdine/storm/q" ) diff --git a/server/storage/bdb/audit_log_test.go b/server/storage/bdb/audit_log_test.go index f4c6ac3..427d4f8 100644 --- a/server/storage/bdb/audit_log_test.go +++ b/server/storage/bdb/audit_log_test.go @@ -5,15 +5,15 @@ import ( "testing" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "github.com/stretchr/testify/assert" ) func generateRandomAuditEntry(entID string, userID string) storage.ActivityLogEntry { if userID == "" { - userID = uuid.NewV4().String() + userID = uuid.NewString() } return storage.ActivityLogEntry{ diff --git a/server/storage/bdb/engine_file.go b/server/storage/bdb/engine_file.go index 5bc436b..f59e05f 100644 --- a/server/storage/bdb/engine_file.go +++ b/server/storage/bdb/engine_file.go @@ -1,7 +1,7 @@ package bdb import ( - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/asdine/storm" "github.com/asdine/storm/q" diff --git a/server/storage/bdb/engine_file_txn.go b/server/storage/bdb/engine_file_txn.go index 2550f5d..0b2b920 100644 --- a/server/storage/bdb/engine_file_txn.go +++ b/server/storage/bdb/engine_file_txn.go @@ -3,7 +3,7 @@ package bdb import ( "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/asdine/storm" ) diff --git a/server/storage/bdb/entitlement.go b/server/storage/bdb/entitlement.go index 6a99254..3ec05dd 100644 --- a/server/storage/bdb/entitlement.go +++ b/server/storage/bdb/entitlement.go @@ -5,7 +5,7 @@ import ( "fmt" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/asdine/storm" "github.com/asdine/storm/q" diff --git a/server/storage/bdb/entitlement_test.go b/server/storage/bdb/entitlement_test.go index 89fef8f..860f27e 100644 --- a/server/storage/bdb/entitlement_test.go +++ b/server/storage/bdb/entitlement_test.go @@ -4,9 +4,9 @@ import ( "testing" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "github.com/stretchr/testify/assert" ) @@ -14,13 +14,13 @@ func TestEntitlement(t *testing.T) { db := initTest(t) defer db.DestroyTest() - dummyUUID := uuid.NewV4().String() + dummyUUID := uuid.NewString() taskFile := storage.TaskFile{ FileID: dummyUUID, SavedAt: "/tmp/foobaz", UploadedAt: time.Now(), UploadedBy: "testing", - UploadedByUUID: uuid.NewV4().String(), + UploadedByUUID: uuid.NewString(), } txn, err := db.NewTaskFileTransaction() @@ -36,7 +36,7 @@ func TestEntitlement(t *testing.T) { // We don't actually need to save this record dummyUserRec := storage.User{ - UserUUID: uuid.NewV4().String(), + UserUUID: uuid.NewString(), } // User shouldnt be entitled to this document...yet diff --git a/server/storage/bdb/helpers.go b/server/storage/bdb/helpers.go index 2c4d68e..1e1d282 100644 --- a/server/storage/bdb/helpers.go +++ b/server/storage/bdb/helpers.go @@ -3,7 +3,7 @@ package bdb import ( "errors" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/asdine/storm" ) diff --git a/server/storage/bdb/schemas.go b/server/storage/bdb/schemas.go index cf40946..73219d2 100644 --- a/server/storage/bdb/schemas.go +++ b/server/storage/bdb/schemas.go @@ -1,6 +1,6 @@ package bdb -import "github.com/fireeye/gocrack/server/storage" +import "github.com/mandiant/gocrack/server/storage" const ( curCrackTaskVer float32 = 1.1 diff --git a/server/storage/bdb/storage.go b/server/storage/bdb/storage.go index bcbf004..f0eaab5 100644 --- a/server/storage/bdb/storage.go +++ b/server/storage/bdb/storage.go @@ -1,7 +1,7 @@ package bdb import ( - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/prometheus/client_golang/prometheus" "github.com/asdine/storm" diff --git a/server/storage/bdb/storage_test.go b/server/storage/bdb/storage_test.go index 2e040fa..3565aeb 100644 --- a/server/storage/bdb/storage_test.go +++ b/server/storage/bdb/storage_test.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/stretchr/testify/assert" ) diff --git a/server/storage/bdb/storm_query_contains.go b/server/storage/bdb/storm_query_contains.go index d649df5..385f837 100644 --- a/server/storage/bdb/storm_query_contains.go +++ b/server/storage/bdb/storm_query_contains.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/asdine/storm" "github.com/asdine/storm/q" diff --git a/server/storage/bdb/task_checkpoint.go b/server/storage/bdb/task_checkpoint.go index f3384eb..ed79002 100644 --- a/server/storage/bdb/task_checkpoint.go +++ b/server/storage/bdb/task_checkpoint.go @@ -1,6 +1,6 @@ package bdb -import "github.com/fireeye/gocrack/server/storage" +import "github.com/mandiant/gocrack/server/storage" // SaveTaskCheckpoint implements storage.SaveTaskCheckpoint func (s *BoltBackend) SaveTaskCheckpoint(checkpoint storage.CheckpointFile) error { diff --git a/server/storage/bdb/task_create_txn.go b/server/storage/bdb/task_create_txn.go index 894822f..12be12a 100644 --- a/server/storage/bdb/task_create_txn.go +++ b/server/storage/bdb/task_create_txn.go @@ -3,7 +3,7 @@ package bdb import ( "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/asdine/storm" ) diff --git a/server/storage/bdb/task_file.go b/server/storage/bdb/task_file.go index a73a4e5..d4f0e42 100644 --- a/server/storage/bdb/task_file.go +++ b/server/storage/bdb/task_file.go @@ -1,7 +1,7 @@ package bdb import ( - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/asdine/storm" "github.com/asdine/storm/q" diff --git a/server/storage/bdb/task_file_test.go b/server/storage/bdb/task_file_test.go index 1539bf5..adb6607 100644 --- a/server/storage/bdb/task_file_test.go +++ b/server/storage/bdb/task_file_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/stretchr/testify/assert" ) diff --git a/server/storage/bdb/task_management.go b/server/storage/bdb/task_management.go index 6a26128..b8b1f1b 100644 --- a/server/storage/bdb/task_management.go +++ b/server/storage/bdb/task_management.go @@ -7,8 +7,8 @@ import ( "sort" "time" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" "github.com/asdine/storm" "github.com/asdine/storm/q" diff --git a/server/storage/bdb/task_management_test.go b/server/storage/bdb/task_management_test.go index aa61360..2f5fc7f 100644 --- a/server/storage/bdb/task_management_test.go +++ b/server/storage/bdb/task_management_test.go @@ -6,10 +6,10 @@ import ( "testing" "time" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" "github.com/stretchr/testify/assert" ) @@ -21,9 +21,9 @@ var testUnexpectedValInGetNextTestCmp = "expected next task differs from what wa func createTestJobDoc(t *testing.T, txn storage.CreateTaskTxn, userDoc *storage.User) (*storage.Task, error) { doc := &storage.Task{ - TaskID: uuid.NewV4().String(), + TaskID: uuid.NewString(), TaskName: "My Awesome Task!", - FileID: uuid.NewV4().String(), + FileID: uuid.NewString(), CreatedByUUID: userDoc.UserUUID, } return doc, txn.CreateTask(doc) @@ -117,12 +117,12 @@ func TestTaskManagementGetNextTaskForHost(t *testing.T) { { Tasks: []storage.Task{ { - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing", CaseCode: shared.GetStrPtr("CC-1337"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC(), AssignedToHost: "my-hostname", AssignedToDevices: &storage.CLDevices{4, 5}, @@ -139,12 +139,12 @@ func TestTaskManagementGetNextTaskForHost(t *testing.T) { { Tasks: []storage.Task{ { - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing", CaseCode: shared.GetStrPtr("CC-1337"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC(), AssignedToHost: "my-hostname", AssignedToDevices: &storage.CLDevices{4, 5}, @@ -160,12 +160,12 @@ func TestTaskManagementGetNextTaskForHost(t *testing.T) { { Tasks: []storage.Task{ { - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing", CaseCode: shared.GetStrPtr("CC-1337"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC(), AssignedToDevices: &storage.CLDevices{4, 5}, }, @@ -180,21 +180,21 @@ func TestTaskManagementGetNextTaskForHost(t *testing.T) { { Tasks: []storage.Task{ { - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing", CaseCode: shared.GetStrPtr("CC-1337"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC().Add(-time.Duration(time.Hour * 4)), }, { - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing2", CaseCode: shared.GetStrPtr("CC-1338"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC(), }, }, @@ -208,12 +208,12 @@ func TestTaskManagementGetNextTaskForHost(t *testing.T) { { Tasks: []storage.Task{ { - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing", CaseCode: shared.GetStrPtr("CC-1337"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC().Add(-time.Duration(time.Hour * 4)), Status: storage.TaskStatusFinished, }, @@ -225,22 +225,22 @@ func TestTaskManagementGetNextTaskForHost(t *testing.T) { { Tasks: []storage.Task{ { - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing", CaseCode: shared.GetStrPtr("CC-1337"), - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedBy: "testing", CreatedAt: time.Now().UTC().Add(-time.Duration(time.Hour * 4)), Priority: storage.WorkerPriorityNormal, }, { - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing2", CaseCode: shared.GetStrPtr("CC-1338"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC(), Priority: storage.WorkerPriorityHigh, }, @@ -304,26 +304,26 @@ func TestTaskManagementProperlyQueueingTasks(t *testing.T) { db := initTest(t) defer db.DestroyTest() - firstTaskID := uuid.NewV4().String() + firstTaskID := uuid.NewString() tasks := []storage.Task{ { - FileID: uuid.NewV4().String(), + FileID: uuid.NewString(), TaskID: firstTaskID, TaskName: "Testing", CaseCode: shared.GetStrPtr("CC-1337"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC(), AssignedToHost: "my-hostname", AssignedToDevices: &storage.CLDevices{4, 5}, }, { - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing 2", CaseCode: shared.GetStrPtr("CC-1337"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC().Add(1 * time.Minute), AssignedToDevices: &storage.CLDevices{5}, }, @@ -367,12 +367,12 @@ func TestDeleteTask(t *testing.T) { defer db.DestroyTest() doc := storage.Task{ - FileID: uuid.NewV4().String(), - TaskID: uuid.NewV4().String(), + FileID: uuid.NewString(), + TaskID: uuid.NewString(), TaskName: "Testing", CaseCode: shared.GetStrPtr("CC-1337"), CreatedBy: "testing", - CreatedByUUID: uuid.NewV4().String(), + CreatedByUUID: uuid.NewString(), CreatedAt: time.Now().UTC(), AssignedToHost: "my-hostname", AssignedToDevices: &storage.CLDevices{4, 5}, diff --git a/server/storage/bdb/user.go b/server/storage/bdb/user.go index f07364a..c9ba2e9 100644 --- a/server/storage/bdb/user.go +++ b/server/storage/bdb/user.go @@ -3,10 +3,10 @@ package bdb import ( "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/asdine/storm" - "github.com/satori/go.uuid" + "github.com/google/uuid" ) // SearchForUserByPassword locates the user record by username. If a record is found, the checker function will be called to validate the password. @@ -27,7 +27,7 @@ func (s *BoltBackend) SearchForUserByPassword(username string, checker storage.P func (s *BoltBackend) CreateUser(user *storage.User) (err error) { user.CreatedAt = time.Now().UTC() if user.UserUUID == "" { - user.UserUUID = uuid.NewV4().String() + user.UserUUID = uuid.NewString() } if err = s.db.From("users").Save(&boltUser{User: *user, DocVersion: curUserVer}); err != nil { diff --git a/server/storage/bdb/user_test.go b/server/storage/bdb/user_test.go index 7fbf328..2da5dc0 100644 --- a/server/storage/bdb/user_test.go +++ b/server/storage/bdb/user_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/stretchr/testify/assert" ) diff --git a/server/storage/opencl_type.go b/server/storage/opencl_type.go index 482139e..5f1b355 100644 --- a/server/storage/opencl_type.go +++ b/server/storage/opencl_type.go @@ -5,7 +5,7 @@ import ( "encoding/json" "errors" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/shared" ) // CLDevices is a list of OpenCL device ID's that a task will use on a specific host diff --git a/server/storage_driver_bdb.go b/server/storage_driver_bdb.go index abd43d0..7e264ed 100644 --- a/server/storage_driver_bdb.go +++ b/server/storage_driver_bdb.go @@ -1,5 +1,6 @@ +//go:build stor_bdb // +build stor_bdb package server -import _ "github.com/fireeye/gocrack/server/storage/bdb" +import _ "github.com/mandiant/gocrack/server/storage/bdb" diff --git a/server/storage_driver_default.go b/server/storage_driver_default.go index 7fa6728..1fd84d2 100644 --- a/server/storage_driver_default.go +++ b/server/storage_driver_default.go @@ -1,5 +1,6 @@ +//go:build !stor_bdb && !stor_sql // +build !stor_bdb,!stor_sql package server -import _ "github.com/fireeye/gocrack/server/storage/bdb" +import _ "github.com/mandiant/gocrack/server/storage/bdb" diff --git a/server/web/api.go b/server/web/api.go index d45c7cb..6ee2bfe 100644 --- a/server/web/api.go +++ b/server/web/api.go @@ -7,11 +7,11 @@ import ( "net" "net/http" - "github.com/fireeye/gocrack/server/authentication" - "github.com/fireeye/gocrack/server/filemanager" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/server/workmgr" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server/authentication" + "github.com/mandiant/gocrack/server/filemanager" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/server/workmgr" + "github.com/mandiant/gocrack/shared" ) var ( diff --git a/server/web/audit_log.go b/server/web/audit_log.go index 2a91a04..2b6f237 100644 --- a/server/web/audit_log.go +++ b/server/web/audit_log.go @@ -6,7 +6,7 @@ import ( "net/http" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/gin-gonic/gin" ) diff --git a/server/web/auth.go b/server/web/auth.go index 52abbba..6639f41 100644 --- a/server/web/auth.go +++ b/server/web/auth.go @@ -5,8 +5,8 @@ import ( "net/http" "time" - "github.com/fireeye/gocrack/server/authentication" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/authentication" + "github.com/mandiant/gocrack/server/storage" "github.com/gin-gonic/gin" ) diff --git a/server/web/config.go b/server/web/config.go index 97a13af..03205af 100644 --- a/server/web/config.go +++ b/server/web/config.go @@ -4,7 +4,7 @@ import ( "errors" "time" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/shared" ) type corsSettings struct { diff --git a/server/web/engine_specific_hashcat.go b/server/web/engine_specific_hashcat.go index 49e1619..c49c104 100644 --- a/server/web/engine_specific_hashcat.go +++ b/server/web/engine_specific_hashcat.go @@ -3,11 +3,23 @@ package web import ( "net/http" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocat/v6/types" + "github.com/mandiant/gocrack/shared" "github.com/gin-gonic/gin" ) func (s *Server) apiHashcatGetTaskModes(c *gin.Context) { - c.JSON(http.StatusOK, shared.SupportedHashcatModes) + hashTypes := types.SupportedHashes() + + out := make([]shared.HModeInfo, len(hashTypes)) + for i, ht := range hashTypes { + out[i] = shared.HModeInfo{ + Name: ht.Name, + Example: ht.Example, + Number: ht.Type, + } + } + + c.JSON(http.StatusOK, out) } diff --git a/server/web/file_management_delete.go b/server/web/file_management_delete.go index ceb3f05..30d8434 100644 --- a/server/web/file_management_delete.go +++ b/server/web/file_management_delete.go @@ -4,8 +4,8 @@ import ( "errors" "net/http" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" "github.com/gin-gonic/gin" ) diff --git a/server/web/file_management_engine.go b/server/web/file_management_engine.go index 0df1967..70bb399 100644 --- a/server/web/file_management_engine.go +++ b/server/web/file_management_engine.go @@ -9,11 +9,11 @@ import ( "strings" "time" - "github.com/fireeye/gocrack/server/filemanager" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/filemanager" + "github.com/mandiant/gocrack/server/storage" "github.com/gin-gonic/gin" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" ) type FileType storage.EngineFileType @@ -86,7 +86,7 @@ func (s *Server) webUploadEngineFile(c *gin.Context) *WebAPIError { sf := storage.EngineFile{ FileName: c.Param("filename"), UploadedByUUID: claim.UserUUID, - FileID: uuid.NewV4().String(), + FileID: uuid.NewString(), IsShared: isShared, } diff --git a/server/web/file_management_task.go b/server/web/file_management_task.go index 7872106..5b22da3 100644 --- a/server/web/file_management_task.go +++ b/server/web/file_management_task.go @@ -1,6 +1,7 @@ package web import ( + "bufio" "fmt" "io" "mime/multipart" @@ -10,11 +11,11 @@ import ( "strings" "time" - "github.com/fireeye/gocat" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/gin-gonic/gin" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" + "github.com/tankbusta/hashvalidate" ) type APIEngine storage.TaskFileEngine @@ -110,7 +111,7 @@ func (s *Server) webUploadTaskFile(c *gin.Context) *WebAPIError { FileName: c.Param("filename"), UploadedAt: time.Now().UTC(), UploadedByUUID: claim.UserUUID, - FileID: uuid.NewV4().String(), + FileID: uuid.NewString(), } engineTypeStr, _ := c.GetQuery("engine") @@ -152,26 +153,54 @@ func (s *Server) webUploadTaskFile(c *gin.Context) *WebAPIError { } } - vresults, err := gocat.ValidateHashes(fresp.SavedTo, uint32(ftint)) + file, err := os.Open(fresp.SavedTo) if err != nil { os.Remove(fresp.SavedTo) return &WebAPIError{ StatusCode: http.StatusInternalServerError, + UserError: "Could not verify hashes", Err: err, - UserError: "Could not validate your file", } } + defer file.Close() + + hashes := 0 + errors := make([]string, 0) + scanner := bufio.NewScanner(file) + for scanner.Scan() { + val := scanner.Text() + if err := hashvalidate.ValidateHash(ftint, val); err != nil { + // TODO: We should raise some warning here + if strings.Contains(err.Error(), "does not exist") { + continue + } + + errors = append(errors, err.Error()) + continue + } + + hashes++ + } - if vresults != nil && len(vresults.Errors) > 0 { + if err := scanner.Err(); err != nil { + os.Remove(fresp.SavedTo) + return &WebAPIError{ + StatusCode: http.StatusInternalServerError, + UserError: "Could not verify hashes", + Err: err, + } + } + + if len(errors) > 0 { os.Remove(fresp.SavedTo) c.JSON(http.StatusBadRequest, &TaskFileLintError{ - Errors: vresults.Errors, + Errors: errors, Message: "One or more hashes in the file are not valid for the filetype you have selected", }) return nil } - tf.NumberOfPasswords = int(vresults.NumHashesUnique) - tf.NumberOfSalts = int(vresults.NumSalts) + + tf.NumberOfPasswords = hashes } if txn, err = s.stor.NewTaskFileTransaction(); err != nil { diff --git a/server/web/middlewares.go b/server/web/middlewares.go index a8be5d6..05d39b6 100644 --- a/server/web/middlewares.go +++ b/server/web/middlewares.go @@ -4,12 +4,12 @@ import ( "net/http" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/gin-gonic/gin" + "github.com/google/uuid" "github.com/gorilla/csrf" "github.com/rs/zerolog/log" - uuid "github.com/satori/go.uuid" ) // logAction records potentially sensitive actions to the database for auditing purposes @@ -140,7 +140,7 @@ func (s *Server) checkIfUserIsEntitled(entityIDLookup string, documentType stora func checkParamValidUUID(paramName string) gin.HandlerFunc { return func(c *gin.Context) { if uid := c.Param(paramName); uid != "" { - if _, err := uuid.FromString(uid); err != nil { + if _, err := uuid.Parse(uid); err != nil { goto Error } // UUID checks out diff --git a/server/web/middlewares_test.go b/server/web/middlewares_test.go index b235272..9587a72 100644 --- a/server/web/middlewares_test.go +++ b/server/web/middlewares_test.go @@ -7,8 +7,8 @@ import ( "net/http/httptest" "testing" - "github.com/fireeye/gocrack/server/authentication" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" + "github.com/mandiant/gocrack/server/authentication" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" @@ -68,7 +68,7 @@ func TestInternal_checkParamValidUUID(t *testing.T) { assert.Equal(t, "The UUID in the HTTP Path is not valid", ae.Error) // Make a good one! - req, _ = http.NewRequest("GET", fmt.Sprintf("/test/%s", uuid.NewV4().String()), nil) + req, _ = http.NewRequest("GET", fmt.Sprintf("/test/%s", uuid.NewString()), nil) w = httptest.NewRecorder() e.ServeHTTP(w, req) diff --git a/server/web/server.go b/server/web/server.go index 9f14bdb..4d9faf5 100644 --- a/server/web/server.go +++ b/server/web/server.go @@ -6,10 +6,10 @@ import ( "path/filepath" "strings" - "github.com/fireeye/gocrack/server/authentication" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" - "github.com/fireeye/gocrack/shared/ginlog" + "github.com/mandiant/gocrack/server/authentication" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" + "github.com/mandiant/gocrack/shared/ginlog" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" diff --git a/server/web/server_version.go b/server/web/server_version.go index 1aeb0eb..0227e20 100644 --- a/server/web/server_version.go +++ b/server/web/server_version.go @@ -3,7 +3,7 @@ package web import ( "net/http" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/shared" "github.com/gin-gonic/gin" ) diff --git a/server/web/sse_endpoint.go b/server/web/sse_endpoint.go index efb6dc8..3a53de7 100644 --- a/server/web/sse_endpoint.go +++ b/server/web/sse_endpoint.go @@ -8,9 +8,9 @@ import ( "sync" "time" - "github.com/fireeye/gocrack/server/authentication" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/server/workmgr" + "github.com/mandiant/gocrack/server/authentication" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/server/workmgr" "github.com/gin-gonic/gin" "github.com/rs/zerolog/log" diff --git a/server/web/task_management.go b/server/web/task_management.go index 188f7e2..23244c1 100644 --- a/server/web/task_management.go +++ b/server/web/task_management.go @@ -8,11 +8,11 @@ import ( "strings" "time" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" "github.com/gin-gonic/gin" - uuid "github.com/satori/go.uuid" + "github.com/google/uuid" ) type TaskCrackEngineFancy storage.WorkerCrackEngine @@ -160,7 +160,7 @@ func (s CreateTaskRequest) validate() []string { errs = append(errs, "task_name must not be empty") } - if _, err := uuid.FromString(s.FileID); err != nil { + if _, err := uuid.Parse(s.FileID); err != nil { errs = append(errs, "file_id must be a valid UUID") } @@ -241,7 +241,7 @@ func (s *Server) webCreateTask(c *gin.Context) *WebAPIError { task = storage.Task{ TaskName: request.TaskName, - TaskID: uuid.NewV4().String(), + TaskID: uuid.NewString(), CreatedAt: now, CreatedByUUID: claim.UserUUID, LastUpdatedAt: now, diff --git a/server/web/task_management_delete.go b/server/web/task_management_delete.go index 505fb34..95146ee 100644 --- a/server/web/task_management_delete.go +++ b/server/web/task_management_delete.go @@ -4,7 +4,7 @@ import ( "fmt" "net/http" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/gin-gonic/gin" ) diff --git a/server/web/task_management_entitlements.go b/server/web/task_management_entitlements.go index 1fac357..30887a5 100644 --- a/server/web/task_management_entitlements.go +++ b/server/web/task_management_entitlements.go @@ -4,7 +4,7 @@ import ( "net/http" "time" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/storage" "github.com/gin-gonic/gin" ) diff --git a/server/web/task_management_helpers.go b/server/web/task_management_helpers.go index 4de61a5..035920a 100644 --- a/server/web/task_management_helpers.go +++ b/server/web/task_management_helpers.go @@ -3,8 +3,8 @@ package web import ( "fmt" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" ) func setEngineFile(stor storage.Backend, engineFileID string) *EngineFileItem { @@ -58,11 +58,9 @@ func convertStorageTaskToItem(stor storage.Backend, t storage.Task) TaskInfoResp hcitem.AttackMode = "Unknown" } - if htype := shared.LookupHashcatHashType(ep.HashType); htype != nil { - hcitem.HashType = htype.Name - } else { - hcitem.HashType = fmt.Sprintf("Unknown HashType %d", ep.HashType) - } + // TODO: Due to some duplicate hash type IDs, we need to come back to this + hcitem.HashType = fmt.Sprintf("Type %d", ep.HashType) + item.EnginePayload = hcitem default: item.EnginePayload = ep diff --git a/server/web/users.go b/server/web/users.go index 81d988b..a0e7c67 100644 --- a/server/web/users.go +++ b/server/web/users.go @@ -7,8 +7,8 @@ import ( "strings" "time" - "github.com/fireeye/gocrack/server/authentication" - "github.com/fireeye/gocrack/server/storage" + "github.com/mandiant/gocrack/server/authentication" + "github.com/mandiant/gocrack/server/storage" "github.com/gin-gonic/gin" ) @@ -245,8 +245,8 @@ func (s *Server) webRegisterNewUser(c *gin.Context) *WebAPIError { if err := req.Validate(); err != nil { return &WebAPIError{ - StatusCode: http.StatusBadRequest, - Err: err, + StatusCode: http.StatusBadRequest, + Err: err, CanErrorBeShownToUser: true, } } diff --git a/server/web/workers.go b/server/web/workers.go index 0fcd4f0..24c4712 100644 --- a/server/web/workers.go +++ b/server/web/workers.go @@ -5,7 +5,7 @@ import ( "net/http" "time" - "github.com/fireeye/gocrack/opencl" + "github.com/mandiant/gocrack/opencl" "github.com/gin-gonic/gin" ) diff --git a/server/workmgr/config.go b/server/workmgr/config.go index 607a008..7dea400 100644 --- a/server/workmgr/config.go +++ b/server/workmgr/config.go @@ -1,6 +1,6 @@ package workmgr -import "github.com/fireeye/gocrack/shared" +import "github.com/mandiant/gocrack/shared" // Config defines all the configuration settings for the Work/Job Manager type Config struct { diff --git a/server/workmgr/workmgr.go b/server/workmgr/workmgr.go index 91d91a5..9fe2fe9 100644 --- a/server/workmgr/workmgr.go +++ b/server/workmgr/workmgr.go @@ -4,8 +4,8 @@ import ( "sync" "time" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" "github.com/tchap/go-exchange/exchange" ) diff --git a/server/workmgr/workmgr_test.go b/server/workmgr/workmgr_test.go index 0f9e3a6..490c84a 100644 --- a/server/workmgr/workmgr_test.go +++ b/server/workmgr/workmgr_test.go @@ -6,9 +6,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/fireeye/gocrack/opencl" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/opencl" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" ) type TestWorkManagerSuite struct { diff --git a/shared/hashcat_types.go b/shared/hashcat_types.go index 066c38a..150e48a 100644 --- a/shared/hashcat_types.go +++ b/shared/hashcat_types.go @@ -21,1382 +21,7 @@ type HashcatUserOptions struct { // HModeInfo describes the hashcat mode type HModeInfo struct { - Number int `json:"mode"` - Name string `json:"name"` - Category string `json:"category"` - Example string `json:"example,omitempty"` -} - -// SupportedHashcatModes is a list of all the supported hashcat cracking SupportedHashcatModes -// This is manually generated and is up-to-date as of v3.40 -var SupportedHashcatModes = []HModeInfo{ - { - Number: 900, - Name: "MD4", - Category: "Raw Hash", - }, - { - Number: 0, - Name: "MD5", - Category: "Raw Hash", - Example: "8743b52063cd84097a65d1633f5c74f5", - }, - { - Number: 5100, - Name: "Half MD5", - Category: "Raw Hash", - }, - { - Number: 100, - Name: "SHA1", - Category: "Raw Hash", - Example: "b89eaac7e61417341b710b727768294d0e6a277b", - }, - { - Number: 1300, - Name: "SHA-224", - Category: "Raw Hash", - }, - { - Number: 1400, - Name: "SHA-256", - Category: "Raw Hash", - }, - { - Number: 10800, - Name: "SHA-384", - Category: "Raw Hash", - }, - { - Number: 1700, - Name: "SHA-512", - Category: "Raw Hash", - }, - { - Number: 17300, - Name: "SHA3-224", - Category: "Raw Hash", - }, - { - Number: 17400, - Name: "SHA3-256", - Category: "Raw Hash", - }, - { - Number: 17500, - Name: "SHA3-384", - Category: "Raw Hash", - }, - { - Number: 17600, - Name: "SHA3-512", - Category: "Raw Hash", - }, - { - Number: 17700, - Name: "Keccak-224", - Category: "Raw Hash", - }, - { - Number: 17800, - Name: "Keccak-256", - Category: "Raw Hash", - }, - { - Number: 17900, - Name: "Keccak-384", - Category: "Raw Hash", - }, - { - Number: 18000, - Name: "Keccak-512", - Category: "Raw Hash", - }, - { - Number: 600, - Name: "BLAKE2b-512", - Category: "Raw Hash", - }, - { - Number: 10100, - Name: "SipHash", - Category: "Raw Hash", - }, - { - Number: 6000, - Name: "RipeMD160", - Category: "Raw Hash", - }, - { - Number: 6100, - Name: "Whirlpool", - Category: "Raw Hash", - }, - { - Number: 6900, - Name: "GOST R 34.11-94", - Category: "Raw Hash", - }, - { - Number: 11700, - Name: "GOST R 34.11-2012 (Streebog) 256-bit, big-endian", - Category: "Raw Hash", - }, - { - Number: 11800, - Name: "GOST R 34.11-2012 (Streebog) 512-bit, big-endian", - Category: "Raw Hash", - }, - { - Number: 10, - Name: "md5($pass.$salt)", - Category: "Raw Hash, Salted and / or Iterated", - Example: "01dfae6e5d4d90d9892622325959afbe:7050461", - }, - { - Number: 20, - Name: "md5($salt.$pass)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 30, - Name: "md5(unicode($pass).$salt)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 40, - Name: "md5($salt.unicode($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 3800, - Name: "md5($salt.$pass.$salt)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 3710, - Name: "md5($salt.md5($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 4010, - Name: "md5($salt.md5($salt.$pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 4110, - Name: "md5($salt.md5($pass.$salt))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 2600, - Name: "md5(md5($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 3910, - Name: "md5(md5($pass).md5($salt))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 4300, - Name: "md5(strtoupper(md5($pass)))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 4400, - Name: "md5(sha1($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 110, - Name: "sha1($pass.$salt)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 120, - Name: "sha1($salt.$pass)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 130, - Name: "sha1(unicode($pass).$salt)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 140, - Name: "sha1($salt.unicode($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 4500, - Name: "sha1(sha1($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 4520, - Name: "sha1($salt.sha1($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 4700, - Name: "sha1(md5($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 4900, - Name: "sha1($salt.$pass.$salt)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 14400, - Name: "sha1(CX)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 1410, - Name: "sha256($pass.$salt)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 1420, - Name: "sha256($salt.$pass)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 1430, - Name: "sha256(unicode($pass).$salt)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 1440, - Name: "sha256($salt.unicode($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 1710, - Name: "sha512($pass.$salt)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 1720, - Name: "sha512($salt.$pass)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 1730, - Name: "sha512(unicode($pass).$salt)", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 1740, - Name: "sha512($salt.unicode($pass))", - Category: "Raw Hash, Salted and / or Iterated", - }, - { - Number: 50, - Name: "HMAC-MD5 (key = $pass)", - Category: "Raw Hash, Authenticated", - }, - { - Number: 60, - Name: "HMAC-MD5 (key = $salt)", - Category: "Raw Hash, Authenticated", - }, - { - Number: 150, - Name: "HMAC-SHA1 (key = $pass)", - Category: "Raw Hash, Authenticated", - }, - { - Number: 160, - Name: "HMAC-SHA1 (key = $salt)", - Category: "Raw Hash, Authenticated", - }, - { - Number: 1450, - Name: "HMAC-SHA256 (key = $pass)", - Category: "Raw Hash, Authenticated", - }, - { - Number: 1460, - Name: "HMAC-SHA256 (key = $salt)", - Category: "Raw Hash, Authenticated", - }, - { - Number: 1750, - Name: "HMAC-SHA512 (key = $pass)", - Category: "Raw Hash, Authenticated", - }, - { - Number: 1760, - Name: "HMAC-SHA512 (key = $salt)", - Category: "Raw Hash, Authenticated", - }, - { - Number: 11750, - Name: "HMAC-Streebog-256 (key = $pass), big-endian", - Category: "Raw Hash, Authenticated", - }, - { - Number: 11760, - Name: "HMAC-Streebog-256 (key = $salt), big-endian", - Category: "Raw Hash, Authenticated", - }, - { - Number: 11850, - Name: "HMAC-Streebog-512 (key = $pass), big-endian", - Category: "Raw Hash, Authenticated", - }, - { - Number: 11860, - Name: "HMAC-Streebog-512 (key = $salt), big-endian", - Category: "Raw Hash, Authenticated", - }, - { - Number: 14000, - Name: "DES (PT = $salt, key = $pass)", - Category: "Raw Cipher, Known-Plaintext attack", - }, - { - Number: 14100, - Name: "3DES (PT = $salt, key = $pass)", - Category: "Raw Cipher, Known-Plaintext attack", - }, - { - Number: 14900, - Name: "Skip32 (PT = $salt, key = $pass)", - Category: "Raw Cipher, Known-Plaintext attack", - }, - { - Number: 400, - Name: "phpass", - Category: "Generic KDF", - }, - { - Number: 8900, - Name: "scrypt", - Category: "Generic KDF", - }, - { - Number: 11900, - Name: "PBKDF2-HMAC-MD5", - Category: "Generic KDF", - }, - { - Number: 12000, - Name: "PBKDF2-HMAC-SHA1", - Category: "Generic KDF", - }, - { - Number: 10900, - Name: "PBKDF2-HMAC-SHA256", - Category: "Generic KDF", - }, - { - Number: 12100, - Name: "PBKDF2-HMAC-SHA512", - Category: "Generic KDF", - }, - { - Number: 23, - Name: "Skype", - Category: "Network protocols", - }, - { - Number: 2500, - Name: "WPA-EAPOL-PBKDF2", - Category: "Network protocols", - }, - { - Number: 2501, - Name: "WPA-EAPOL-PMK", - Category: "Network protocols", - }, - { - Number: 16800, - Name: "WPA-PMKID-PBKDF2", - Category: "Network protocols", - }, - { - Number: 16801, - Name: "WPA-PMKID-PMK", - Category: "Network protocols", - }, - { - Number: 4800, - Name: "iSCSI CHAP authentication, MD5(Chap)", - Category: "Network protocols", - }, - { - Number: 5300, - Name: "IKE-PSK MD5", - Category: "Network protocols", - }, - { - Number: 5400, - Name: "IKE-PSK SHA1", - Category: "Network protocols", - }, - { - Number: 5500, - Name: "NetNTLMv1 / NetNTLMv1 + ESS", - Category: "Network protocols", - Example: "u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c", - }, - { - Number: 5600, - Name: "NetNTLMv2", - Category: "Network protocols", - Example: "admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030", - }, - { - Number: 7300, - Name: "IPMI2 RAKP HMAC-SHA1", - Category: "Network protocols", - }, - { - Number: 7500, - Name: "Kerberos 5 AS-REQ Pre-Auth etype 23", - Category: "Network protocols", - }, - { - Number: 8300, - Name: "DNSSEC (NSEC3)", - Category: "Network protocols", - }, - { - Number: 10200, - Name: "Cram MD5", - Category: "Network protocols", - }, - { - Number: 11100, - Name: "PostgreSQL CRAM (MD5)", - Category: "Network protocols", - }, - { - Number: 11200, - Name: "MySQL CRAM (SHA1)", - Category: "Network protocols", - }, - { - Number: 11400, - Name: "SIP digest authentication (MD5)", - Category: "Network protocols", - }, - { - Number: 13100, - Name: "Kerberos 5 TGS-REP etype 23", - Category: "Network protocols", - Example: "$krb5tgs$23$*user$realm$test/spn*$63386d22d359fe42230300d56852c9eb$891ad31d09ab89c6b3b8c5e5de6c06a7f49fd559d7a9a3c32576c8fedf705376cea582ab5938f7fc8bc741acf05c5990741b36ef4311fe3562a41b70a4ec6ecba849905f2385bb3799d92499909658c7287c49160276bca0006c350b0db4fd387adc27c01e9e9ad0c20ed53a7e6356dee2452e35eca2a6a1d1432796fc5c19d068978df74d3d0baf35c77de12456bf1144b6a750d11f55805f5a16ece2975246e2d026dce997fba34ac8757312e9e4e6272de35e20d52fb668c5ed", - }, - { - Number: 16100, - Name: "TACACS+", - Category: "Network protocols", - }, - { - Number: 16500, - Name: "JWT (JSON Web Token)", - Category: "Network protocols", - }, - { - Number: 18200, - Name: "Kerberos 5 AS-REP etype 23", - Category: "Network protocols", - }, - { - Number: 121, - Name: "SMF (Simple Machines Forum)", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 400, - Name: "phpBB3", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 2611, - Name: "vBulletin < v3.8.5", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 2711, - Name: "vBulletin > v3.8.5", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 2811, - Name: "MyBB", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 2811, - Name: "IPB (Invison Power Board)", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 8400, - Name: "WBB3 (Woltlab Burning Board)", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 11, - Name: "Joomla < 2.5.18", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 400, - Name: "Joomla > 2.5.18", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 400, - Name: "Wordpress", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 2612, - Name: "PHPS", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 7900, - Name: "Drupal7", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 21, - Name: "osCommerce", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 21, - Name: "xt:Commerce", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 11000, - Name: "PrestaShop", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 124, - Name: "Django (SHA-1)", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 10000, - Name: "Django (PBKDF2-SHA256)", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 16000, - Name: "Tripcode", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 3711, - Name: "Mediawiki B type", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 13900, - Name: "OpenCart", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 4521, - Name: "Redmine", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 4522, - Name: "PunBB", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 12001, - Name: "Atlassian (PBKDF2-HMAC-SHA1)", - Category: "Forums, CMS, E-Commerce, Frameworks", - }, - { - Number: 12, - Name: "PostgreSQL", - Category: "Database Server", - }, - { - Number: 131, - Name: "MSSQL(2000)", - Category: "Database Server", - }, - { - Number: 132, - Name: "MSSQL(2005)", - Category: "Database Server", - }, - { - Number: 1731, - Name: "MSSQL(2012)", - Category: "Database Server", - }, - { - Number: 1731, - Name: "MSSQL(2014)", - Category: "Database Server", - }, - { - Number: 200, - Name: "MySQL323", - Category: "Database Server", - }, - { - Number: 300, - Name: "MySQL4.1/MySQL5", - Category: "Database Server", - }, - { - Number: 3100, - Name: "Oracle H: Type (Oracle 7+)", - Category: "Database Server", - }, - { - Number: 112, - Name: "Oracle S: Type (Oracle 11+)", - Category: "Database Server", - }, - { - Number: 12300, - Name: "Oracle T: Type (Oracle 12+)", - Category: "Database Server", - }, - { - Number: 8000, - Name: "Sybase ASE", - Category: "Database Server", - }, - { - Number: 141, - Name: "EPiServer 6.x < v4", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 1441, - Name: "EPiServer 6.x > v4", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 1600, - Name: "Apache $apr1$", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 12600, - Name: "ColdFusion 10+", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 1421, - Name: "hMailServer", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 101, - Name: "nsldap, SHA-1(Base64), Netscape LDAP SHA", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 111, - Name: "nsldaps, SSHA-1(Base64), Netscape LDAP SSHA", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 1411, - Name: "SSHA-256(Base64), LDAP {SSHA256}", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 1711, - Name: "SSHA-512(Base64), LDAP {SSHA512}", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 16400, - Name: "CRAM-MD5 Dovecot", - Category: "HTTP, SMTP, LDAP Server", - }, - { - Number: 15000, - Name: "FileZilla Server >= 0.9.55", - Category: "FTP Server", - }, - { - Number: 11500, - Name: "CRC32", - Category: "Checksums", - }, - { - Number: 3000, - Name: "LM", - Category: "Operating-Systems", - Example: "299bd128c1101fd6", - }, - { - Number: 1000, - Name: "NTLM", - Category: "Operating-Systems", - Example: "b4b9b02e6f09a9bd760f388b67351e2b", - }, - { - Number: 1100, - Name: "Domain Cached Credentials (DCC), MS Cache", - Category: "Operating-Systems", - }, - { - Number: 2100, - Name: "Domain Cached Credentials 2 (DCC2), MS Cache 2", - Category: "Operating-Systems", - }, - { - Number: 12800, - Name: "MS-AzureSync PBKDF2-HMAC-SHA256", - Category: "Operating-Systems", - }, - { - Number: 1500, - Name: "descrypt, DES(Unix), Traditional DES", - Category: "Operating-Systems", - }, - { - Number: 12400, - Name: "BSDiCrypt, Extended DES", - Category: "Operating-Systems", - }, - { - Number: 500, - Name: "md5crypt $1$, MD5(Unix)", - Category: "Operating-Systems", - }, - { - Number: 3200, - Name: "bcrypt $2*$, Blowfish(Unix)", - Category: "Operating-Systems", - Example: "$2a$05$LhayLxezLhK1LhWvKxCyLOj0j1u.Kj0jZ0pEmm134uzrQlFvQJLF6", - }, - { - Number: 7400, - Name: "sha256crypt $5$, SHA256(Unix)", - Category: "Operating-Systems", - }, - { - Number: 1800, - Name: "sha512crypt $6$, SHA512(Unix)", - Category: "Operating-Systems", - }, - { - Number: 122, - Name: "macOS v10.4, MacOS v10.5, MacOS v10.6", - Category: "Operating-Systems", - }, - { - Number: 1722, - Name: "macOS v10.7", - Category: "Operating-Systems", - }, - { - Number: 7100, - Name: "macOS v10.8+ (PBKDF2-SHA512)", - Category: "Operating-Systems", - }, - { - Number: 6300, - Name: "AIX {smd5}", - Category: "Operating-Systems", - }, - { - Number: 6700, - Name: "AIX {ssha1}", - Category: "Operating-Systems", - }, - { - Number: 6400, - Name: "AIX {ssha256}", - Category: "Operating-Systems", - }, - { - Number: 6500, - Name: "AIX {ssha512}", - Category: "Operating-Systems", - }, - { - Number: 2400, - Name: "Cisco-PIX", - Category: "Operating-Systems", - }, - { - Number: 2410, - Name: "Cisco-ASA", - Category: "Operating-Systems", - }, - { - Number: 500, - Name: "Cisco-IOS $1$", - Category: "Operating-Systems", - }, - { - Number: 5700, - Name: "Cisco-IOS $4$", - Category: "Operating-Systems", - }, - { - Number: 9200, - Name: "Cisco-IOS $8$", - Category: "Operating-Systems", - }, - { - Number: 9300, - Name: "Cisco-IOS $9$", - Category: "Operating-Systems", - }, - { - Number: 22, - Name: "Juniper Netscreen/SSG (ScreenOS)", - Category: "Operating-Systems", - }, - { - Number: 501, - Name: "Juniper IVE", - Category: "Operating-Systems", - }, - { - Number: 7000, - Name: "Fortigate (FortiOS)", - Category: "Operating-Systems", - }, - { - Number: 5800, - Name: "Android PIN", - Category: "Operating-Systems", - }, - { - Number: 13800, - Name: "Windows 8+ phone PIN/Password", - Category: "Operating-Systems", - }, - { - Number: 8100, - Name: "Citrix Netscaler", - Category: "Operating-Systems", - }, - { - Number: 8500, - Name: "RACF", - Category: "Operating-Systems", - }, - { - Number: 7200, - Name: "GRUB 2", - Category: "Operating-Systems", - }, - { - Number: 9900, - Name: "Radmin2", - Category: "Operating-Systems", - }, - { - Number: 125, - Name: "ArubaOS", - Category: "Operating-Systems", - }, - { - Number: 7700, - Name: "SAP CODVN B (BCODE)", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 7701, - Name: "SAP CODVN B (BCODE) via RFC_READ_TABLE", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 7800, - Name: "SAP CODVN F/G (PASSCODE)", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 7801, - Name: "SAP CODVN F/G (PASSCODE) via RFC_READ_TABLE", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 10300, - Name: "SAP CODVN H (PWDSALTEDHASH) iSSHA-1", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 8600, - Name: "Lotus Notes/Domino 5", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 8700, - Name: "Lotus Notes/Domino 6", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 9100, - Name: "Lotus Notes/Domino 8", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 133, - Name: "PeopleSoft", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 13500, - Name: "PeopleSoft Token", - Category: "Enterprise Application Software (EAS)", - }, - { - Number: 11600, - Name: "7-Zip", - Category: "Archives", - }, - { - Number: 12500, - Name: "RAR3-hp", - Category: "Archives", - }, - { - Number: 13000, - Name: "RAR5", - Category: "Archives", - }, - { - Number: 13200, - Name: "AxCrypt", - Category: "Archives", - }, - { - Number: 13300, - Name: "AxCrypt in memory SHA1", - Category: "Archives", - }, - { - Number: 13600, - Name: "WinZip", - Category: "Archives", - }, - { - Number: 14700, - Name: "iTunes Backup < 10.0", - Category: "Backup", - }, - { - Number: 14800, - Name: "iTunes Backup >= 10.0", - Category: "Backup", - }, - { - Number: 8800, - Name: "Android FDE < v4.3", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 12900, - Name: "Android FDE (Samsung DEK)", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 12200, - Name: "eCryptfs", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 14600, - Name: "LUKS", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 16700, - Name: "FileVault 2", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 18300, - Name: "Apple File System (APFS)", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 9700, - Name: "MS Office <= 2003 $0", - Category: "$1, MD5 + RC4 | Documents", - }, - { - Number: 9710, - Name: "MS Office <= 2003 $0", - Category: "$1, MD5 + RC4, collider #1 | Documents", - }, - { - Number: 9720, - Name: "MS Office <= 2003 $0", - Category: "$1, MD5 + RC4, collider #2 | Documents", - }, - { - Number: 9800, - Name: "MS Office <= 2003 $3", - Category: "$4, SHA1 + RC4 | Documents", - }, - { - Number: 9810, - Name: "MS Office <= 2003 $3", - Category: "$4, SHA1 + RC4, collider #1 | Documents", - }, - { - Number: 9820, - Name: "MS Office <= 2003 $3", - Category: "$4, SHA1 + RC4, collider #2 | Documents", - }, - { - Number: 9400, - Name: "MS Office 2007", - Category: "Documents", - }, - { - Number: 9500, - Name: "MS Office 2010", - Category: "Documents", - }, - { - Number: 9600, - Name: "MS Office 2013", - Category: "Documents", - }, - { - Number: 10400, - Name: "PDF 1.1 - 1.3 (Acrobat 2 - 4)", - Category: "Documents", - }, - { - Number: 10410, - Name: "PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #1", - Category: "Documents", - }, - { - Number: 10420, - Name: "PDF 1.1 - 1.3 (Acrobat 2 - 4), collider #2", - Category: "Documents", - }, - { - Number: 10500, - Name: "PDF 1.4 - 1.6 (Acrobat 5 - 8)", - Category: "Documents", - }, - { - Number: 10600, - Name: "PDF 1.7 Level 3 (Acrobat 9)", - Category: "Documents", - }, - { - Number: 10700, - Name: "PDF 1.7 Level 8 (Acrobat 10 - 11)", - Category: "Documents", - }, - { - Number: 16200, - Name: "Apple Secure Notes", - Category: "Documents", - }, - { - Number: 9000, - Name: "Password Safe v2", - Category: "Password Managers", - }, - { - Number: 5200, - Name: "Password Safe v3", - Category: "Password Managers", - }, - { - Number: 6800, - Name: "Lastpass + Lastpass sniffed", - Category: "Password Managers", - }, - { - Number: 6600, - Name: "1Password, agilekeychain", - Category: "Password Managers", - }, - { - Number: 8200, - Name: "1Password, cloudkeychain", - Category: "Password Managers", - }, - { - Number: 11300, - Name: "Bitcoin/Litecoin wallet.dat", - Category: "Password Managers", - }, - { - Number: 12700, - Name: "Blockchain, My Wallet", - Category: "Password Managers", - }, - { - Number: 15200, - Name: "Blockchain, My Wallet V2", - Category: "Password Managers", - }, - { - Number: 16600, - Name: "Electrum Wallet (Salt-Type 1-3)", - Category: "Password Managers", - }, - { - Number: 13400, - Name: "Keepass 1 (AES/Twofish) and Keepass 2 (AES)", - Category: "Password Managers", - }, - { - Number: 16300, - Name: "Ethereum Pre-Sale Wallet, PBKDF2-HMAC-SHA256", - Category: "Password Managers", - }, - { - Number: 16900, - Name: "Ansible Vault", - Category: "Password Managers", - }, - { - Number: 18100, - Name: "TOTP (HMAC-SHA1)", - Category: "One-Time Passwords", - }, - { - Number: 99999, - Name: "Plaintext", - Category: "Plaintext", - }, - { - Number: 6211, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 512 bit pure AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6211, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 512 bit pure Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6211, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 512 bit pure Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6212, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 1024 bit pure AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6212, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 1024 bit pure Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6212, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 1024 bit pure Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6212, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 1024 bit cascaded AES-Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6212, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 1024 bit cascaded Serpent-AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6212, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 1024 bit cascaded Twofish-Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6213, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 XTS 1536 bit all", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6221, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 512 bit pure AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6221, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 512 bit pure Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6221, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 512 bit pure Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6222, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 1024 bit pure AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6222, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 1024 bit pure Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6222, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 1024 bit pure Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6222, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 1024 bit cascaded AES-Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6222, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 1024 bit cascaded Serpent-AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6222, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 1024 bit cascaded Twofish-Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6223, - Name: "TrueCrypt PBKDF2-HMAC-SHA512 XTS 1536 bit all", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6231, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 512 bit pure AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6231, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 512 bit pure Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6231, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 512 bit pure Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6232, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 1024 bit pure AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6232, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 1024 bit pure Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6232, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 1024 bit pure Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6232, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 1024 bit cascaded AES-Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6232, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 1024 bit cascaded Serpent-AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6232, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 1024 bit cascaded Twofish-Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6233, - Name: "TrueCrypt PBKDF2-HMAC-Whirlpool XTS 1536 bit all", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6241, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 512 bit pure AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6241, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 512 bit pure Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6241, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 512 bit pure Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6242, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 1024 bit pure AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6242, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 1024 bit pure Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6242, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 1024 bit pure Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6242, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 1024 bit cascaded AES-Twofish", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6242, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 1024 bit cascaded Serpent-AES", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6242, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 1024 bit cascaded Twofish-Serpent", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 6243, - Name: "TrueCrypt PBKDF2-HMAC-RipeMD160 + boot-mode XTS 1536 bit all", - Category: "Full-Disk encryptions (FDE)", - }, - { - Number: 15300, - Name: "DPAPI masterkey file v1", - Category: "Operating Systems", - }, - { - Number: 15900, - Name: "DPAPI masterkey file v2", - Category: "Operating Systems", - }, -} - -// LookupHashcatHashType takes a hash type integer and returns info about it if it exists -func LookupHashcatHashType(hashtype int) *HModeInfo { - for _, h := range SupportedHashcatModes { - if h.Number == hashtype { - return &h - } - } - return nil + Number int `json:"mode"` + Name string `json:"name"` + Example string `json:"example,omitempty"` } diff --git a/shared/hashcat_types_test.go b/shared/hashcat_types_test.go deleted file mode 100644 index 54cd6dc..0000000 --- a/shared/hashcat_types_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package shared - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestLookupHashcatHashType(t *testing.T) { - ht := LookupHashcatHashType(0) - if ht == nil { - assert.Fail(t, "ht lookup failed") - return - } - - assert.Equal(t, "MD5", ht.Name) - - ht = LookupHashcatHashType(1333333337) - assert.Nil(t, ht) -} diff --git a/shared/types.go b/shared/types.go index f487a62..b59590f 100644 --- a/shared/types.go +++ b/shared/types.go @@ -5,7 +5,7 @@ import ( "strings" "time" - "github.com/fireeye/gocrack/opencl" + "github.com/mandiant/gocrack/opencl" ) // Device describes an OpenCL device on a worker diff --git a/shared/types_test.go b/shared/types_test.go index 8232b26..1b790e1 100644 --- a/shared/types_test.go +++ b/shared/types_test.go @@ -3,7 +3,7 @@ package shared import ( "testing" - "github.com/fireeye/gocrack/opencl" + "github.com/mandiant/gocrack/opencl" "github.com/stretchr/testify/assert" ) diff --git a/worker/child/child.go b/worker/child/child.go index 25ace0f..2f9206c 100644 --- a/worker/child/child.go +++ b/worker/child/child.go @@ -5,9 +5,9 @@ import ( "os" "time" - "github.com/fireeye/gocrack/server/rpc" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/worker" + "github.com/mandiant/gocrack/server/rpc" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/worker" "github.com/rs/zerolog/log" ) diff --git a/worker/child/task.go b/worker/child/task.go index 0f36c17..843be40 100644 --- a/worker/child/task.go +++ b/worker/child/task.go @@ -10,12 +10,12 @@ import ( "sync" "time" - "github.com/fireeye/gocrack/server/rpc" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" - "github.com/fireeye/gocrack/worker" - "github.com/fireeye/gocrack/worker/engines" - "github.com/fireeye/gocrack/worker/engines/hashcat" + "github.com/mandiant/gocrack/server/rpc" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" + "github.com/mandiant/gocrack/worker" + "github.com/mandiant/gocrack/worker/engines" + "github.com/mandiant/gocrack/worker/engines/hashcat" "github.com/rs/zerolog/log" ) diff --git a/worker/config.go b/worker/config.go index e24e791..7766caf 100644 --- a/worker/config.go +++ b/worker/config.go @@ -4,7 +4,7 @@ import ( "errors" "time" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/shared" ) var ( diff --git a/worker/engines/hashcat/hashcat_engine.go b/worker/engines/hashcat/hashcat_engine.go index c490ee2..bef76a8 100644 --- a/worker/engines/hashcat/hashcat_engine.go +++ b/worker/engines/hashcat/hashcat_engine.go @@ -7,14 +7,14 @@ import ( "runtime" "unsafe" - "github.com/fireeye/gocat" - "github.com/fireeye/gocat/hcargp" - "github.com/fireeye/gocat/restoreutil" - "github.com/fireeye/gocrack/opencl" - "github.com/fireeye/gocrack/server/rpc" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" - "github.com/fireeye/gocrack/worker" + "github.com/mandiant/gocat/v6" + "github.com/mandiant/gocat/v6/hcargp" + "github.com/mandiant/gocat/v6/restoreutil" + "github.com/mandiant/gocrack/opencl" + "github.com/mandiant/gocrack/server/rpc" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" + "github.com/mandiant/gocrack/worker" "github.com/rs/zerolog/log" ) @@ -219,7 +219,7 @@ func (s *HashcatEngine) Start() error { } } - opts.OpenCLDevices = hcargp.GetStringPtr(s.CLDevices.String()) + opts.BackendDevices = hcargp.GetStringPtr(s.CLDevices.String()) opts.OpenCLDeviceTypes = hcargp.GetStringPtr(shared.IntSliceToString(devTypes)) } } diff --git a/worker/engines/hashcat/helpers.go b/worker/engines/hashcat/helpers.go index 8c9a5d4..7c4bd98 100644 --- a/worker/engines/hashcat/helpers.go +++ b/worker/engines/hashcat/helpers.go @@ -4,8 +4,8 @@ import ( "io/ioutil" "os" - "github.com/fireeye/gocat/restoreutil" - "github.com/fireeye/gocrack/server/rpc" + "github.com/mandiant/gocat/v6/restoreutil" + "github.com/mandiant/gocrack/server/rpc" "github.com/rs/zerolog/log" ) diff --git a/worker/engines/hashcat/restore_modifer.go b/worker/engines/hashcat/restore_modifer.go index 6142aee..62a560c 100644 --- a/worker/engines/hashcat/restore_modifer.go +++ b/worker/engines/hashcat/restore_modifer.go @@ -7,10 +7,10 @@ import ( "strconv" "strings" - "github.com/fireeye/gocat/restoreutil" - "github.com/fireeye/gocrack/opencl" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocat/v6/restoreutil" + "github.com/mandiant/gocrack/opencl" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" ) // ErrMalformedCLDevicesArg indicates that the "--opencl-devices" arg is not in the expected format diff --git a/worker/engines/hashcat/restore_modifier_test.go b/worker/engines/hashcat/restore_modifier_test.go index 44b301f..6591b40 100644 --- a/worker/engines/hashcat/restore_modifier_test.go +++ b/worker/engines/hashcat/restore_modifier_test.go @@ -3,10 +3,10 @@ package hashcat import ( "testing" - "github.com/fireeye/gocat/restoreutil" - "github.com/fireeye/gocrack/opencl" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocat/v6/restoreutil" + "github.com/mandiant/gocrack/opencl" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" "github.com/stretchr/testify/assert" ) diff --git a/worker/opencl_info.go b/worker/opencl_info.go index 32134b5..ad8847d 100644 --- a/worker/opencl_info.go +++ b/worker/opencl_info.go @@ -1,8 +1,8 @@ package worker import ( - "github.com/fireeye/gocrack/opencl" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/opencl" + "github.com/mandiant/gocrack/shared" ) // GetAvailableDevices returns all available OpenCL devices with the same ID of hashcat diff --git a/worker/parent/beacon.go b/worker/parent/beacon.go index e21bc50..cc4df2e 100644 --- a/worker/parent/beacon.go +++ b/worker/parent/beacon.go @@ -6,12 +6,12 @@ import ( "strings" "time" - "github.com/fireeye/gocrack/opencl" - "github.com/fireeye/gocrack/server/rpc" - "github.com/fireeye/gocrack/server/storage" - "github.com/fireeye/gocrack/shared" - "github.com/fireeye/gocrack/worker" - "github.com/fireeye/gocrack/worker/engines/hashcat" + "github.com/mandiant/gocrack/opencl" + "github.com/mandiant/gocrack/server/rpc" + "github.com/mandiant/gocrack/server/storage" + "github.com/mandiant/gocrack/shared" + "github.com/mandiant/gocrack/worker" + "github.com/mandiant/gocrack/worker/engines/hashcat" "github.com/rs/zerolog/log" ) diff --git a/worker/parent/mule_manager.go b/worker/parent/mule_manager.go index 8d2ba87..395e677 100644 --- a/worker/parent/mule_manager.go +++ b/worker/parent/mule_manager.go @@ -10,7 +10,7 @@ import ( "syscall" "time" - "github.com/fireeye/gocrack/shared" + "github.com/mandiant/gocrack/shared" "github.com/shirou/gopsutil/process" ) diff --git a/worker/parent/mule_manager_test.go b/worker/parent/mule_manager_test.go index 596c970..9a01985 100644 --- a/worker/parent/mule_manager_test.go +++ b/worker/parent/mule_manager_test.go @@ -9,6 +9,8 @@ import ( "github.com/stretchr/testify/assert" ) +var pythonCommand = "python3" + type remoteProcessManagerTest struct { *RemoteProcessManager @@ -59,7 +61,7 @@ func TestRemoteProcessManager(t *testing.T) { // pid should be unknown at this point because the process hasnt started assert.Equal(t, PIDUNKN, rpmt.GetRunningPID()) - err := rpmt.Start("python", "testdata/printloop.py", "--rc", "25") + err := rpmt.Start(pythonCommand, "testdata/printloop.py", "--rc", "25") assert.Nil(t, err) rpmt.Wait() @@ -87,7 +89,7 @@ func rpmKillTest(t *testing.T, sigKill bool) { rpmt := newRemoteProcessManagerTest() defer rpmt.CleanupTest() - err := rpmt.Start("python", "testdata/printloop.py", "--max", "25") + err := rpmt.Start(pythonCommand, "testdata/printloop.py", "--max", "25") assert.Nil(t, err) time.Sleep(2 * time.Second) diff --git a/worker/parent/worker.go b/worker/parent/worker.go index fac33ef..f256dd5 100644 --- a/worker/parent/worker.go +++ b/worker/parent/worker.go @@ -5,9 +5,9 @@ import ( "os" "sync" - "github.com/fireeye/gocrack/server/rpc" - "github.com/fireeye/gocrack/shared" - "github.com/fireeye/gocrack/worker" + "github.com/mandiant/gocrack/server/rpc" + "github.com/mandiant/gocrack/shared" + "github.com/mandiant/gocrack/worker" "github.com/rs/zerolog/log" ) diff --git a/worker/worker.go b/worker/worker.go index 41003b3..9ca4f8d 100644 --- a/worker/worker.go +++ b/worker/worker.go @@ -1,6 +1,6 @@ package worker -import rpcclient "github.com/fireeye/gocrack/server/rpc/client" +import rpcclient "github.com/mandiant/gocrack/server/rpc/client" var ( // CompileTime is when this was compiled