From 7d44c55181d7294bc431dc7079eafd1149f65bf5 Mon Sep 17 00:00:00 2001 From: Manfred Touron Date: Mon, 12 Aug 2019 09:57:48 +0200 Subject: [PATCH] feat: support recursive base64 --- README.md | 49 ++++++++++++++++++++----------------- cryptoguess/guess_base64.go | 13 +++++++--- cryptoguess/guess_jwt.go | 1 + cryptoguess/guess_pem.go | 4 +-- 4 files changed, 37 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 2a913d8..67e06cb 100644 --- a/README.md +++ b/README.md @@ -66,29 +66,32 @@ GLOBAL OPTIONS: ## Decoders -| Encoding | Status | Recursive | -|---------------|--------------------|--------------| -| aes | :red_circle: | :red_circle: | -| ascii85 | :red_circle: | :red_circle: | -| asn1 | :red_circle: | :red_circle: | -| base32 | :red_circle: | :red_circle: | -| base64 | :white_check_mark: | :red_circle: | -| cipher | :red_circle: | :red_circle: | -| csv | :red_circle: | :red_circle: | -| des | :red_circle: | :red_circle: | -| dsa | :red_circle: | :red_circle: | -| ecdsa | :red_circle: | :red_circle: | -| elliptic | :red_circle: | :red_circle: | -| encrypted jwt | :red_circle: | :red_circle: | -| gob | :red_circle: | :red_circle: | -| json | :red_circle: | :red_circle: | -| pem | :white_check_mark: | :red_circle: | -| rsa | :red_circle: | :red_circle: | -| signed jwt | :white_check_mark: | :red_circle: | -| ssh | :white_check_mark: | :red_circle: | -| tls | :red_circle: | :red_circle: | -| x509 | :white_check_mark: | :red_circle: | -| xml | :red_circle: | :red_circle: | +| Encoding | Status | Recursive | +|-------------------|--------------------|--------------------| +| aes | :red_circle: | :red_circle: | +| ascii85 | :red_circle: | :red_circle: | +| asn1 | :red_circle: | :red_circle: | +| base32 | :red_circle: | :red_circle: | +| base64 | :white_check_mark: | :white_check_mark: | +| cipher | :red_circle: | :red_circle: | +| csv | :red_circle: | :red_circle: | +| des | :red_circle: | :red_circle: | +| dsa | :red_circle: | :red_circle: | +| ecdsa | :red_circle: | :red_circle: | +| elliptic | :red_circle: | :red_circle: | +| encodings (utf-8) | :red_circle: | :red_circle: | +| encrypted jwt | :red_circle: | :red_circle: | +| gob | :red_circle: | :red_circle: | +| gzip,lzw,... | :red_circle: | :red_circle: | +| json | :red_circle: | :red_circle: | +| pem | :white_check_mark: | :white_check_mark: | +| rsa | :red_circle: | :red_circle: | +| signed jwt | :white_check_mark: | :red_circle: | +| ssh | :white_check_mark: | :red_circle: | +| tls | :red_circle: | :red_circle: | +| url escaped | :red_circle: | :red_circle: | +| x509 | :white_check_mark: | :red_circle: | +| xml | :red_circle: | :red_circle: | ## Install diff --git a/cryptoguess/guess_base64.go b/cryptoguess/guess_base64.go index 45effef..de80f5f 100644 --- a/cryptoguess/guess_base64.go +++ b/cryptoguess/guess_base64.go @@ -12,10 +12,15 @@ type BASE64Block struct{ *baseExperiment } func runBASE64Block(exp Experiment) []Result { results := []Result{} - result := &baseResult{exp: exp} - result.data, result.err = base64.StdEncoding.DecodeString(string(exp.Input())) - results = append(results, result) - // FIXME: recursively call other parsers with prefix=base64-encoded (like multiaddr) + data, err := base64.StdEncoding.DecodeString(string(exp.Input())) + if err != nil { + result := &baseResult{exp: exp, err: err} + results = append(results, result) + } else { + result := &baseResult{exp: exp, data: data} + results = append(results, recursiveResults(result, data)...) + results = append(results, result) + } return results } diff --git a/cryptoguess/guess_jwt.go b/cryptoguess/guess_jwt.go index 9224980..1ed32ec 100644 --- a/cryptoguess/guess_jwt.go +++ b/cryptoguess/guess_jwt.go @@ -26,6 +26,7 @@ func runJWTSignedToken(exp Experiment) []Result { result.err = parsed.Token.UnsafeClaimsWithoutVerification(&parsed.Claims) } results = append(results, result) + // FIXME: recursively call cryptoguess return results } diff --git a/cryptoguess/guess_pem.go b/cryptoguess/guess_pem.go index c721c16..0a6535c 100644 --- a/cryptoguess/guess_pem.go +++ b/cryptoguess/guess_pem.go @@ -21,9 +21,7 @@ func runPEMBlock(exp Experiment) []Result { // FIXME: data.Type // FIXME: data.Headers result := &baseResult{exp: exp, rest: rest, data: data} - for _, childResult := range recursiveResults(result, data.Bytes) { - results = append(results, childResult) - } + results = append(results, recursiveResults(result, data.Bytes)...) results = append(results, result) } return results