Compare commits

...

3 Commits

Author SHA1 Message Date
Dan Ballard 52fab4e2b5 cleaning up, reporting 2016-06-01 07:15:44 -07:00
Dan Ballard e1760189a0 attempts to get v3 fingerprint 2016-05-29 20:55:09 -07:00
Dan Ballard aa8f8aff57 initial import of pgp libs 2016-05-27 08:04:10 -07:00
2 changed files with 34 additions and 7 deletions

View File

@ -16,6 +16,12 @@ type ExifImage struct {
ExifTags []ExifTag `json:"exifTags"`
}
type PGPKey struct {
ArmoredKey string `json:"armoredKey"`
Identity string `json:"identity"`
FingerPrint string `json:"fingerprint"`
}
type OnionScanReport struct {
WebDetected bool `json:"webDetected"`
SSHDetected bool `json:"sshDetected"`
@ -40,7 +46,7 @@ type OnionScanReport struct {
ExifImages []ExifImage `json:"exifImages"`
InterestingFiles []string `json:"interestingFiles"`
PageReferencedDirectories []string `json:"pageReferencedDirectories"`
PGPKeys []string `json:"pgpKeys"`
PGPKeys []PGPKey `json:"pgpKeys"`
Hashes []string `json:"hashes"`
SSHKey string `json:"sshKey"`
@ -93,9 +99,9 @@ func (osr *OnionScanReport) AddInternalPage(site string) {
utils.RemoveDuplicates(&osr.InternalPages)
}
func (osr *OnionScanReport) AddPGPKey(key string) {
osr.PGPKeys = append(osr.PGPKeys, key)
utils.RemoveDuplicates(&osr.PGPKeys)
func (osr *OnionScanReport) AddPGPKey(armoredKey, identity, fingerprint string) {
osr.PGPKeys = append(osr.PGPKeys, PGPKey{armoredKey, identity, fingerprint})
//TODO map of fingerprint:PGPKeys? and utils.RemoveDuplicates(&osr.PGPKeys)
}
func (osr *OnionScanReport) AddResponseHeader(name string, value string) {

View File

@ -2,18 +2,39 @@ package scans
import (
"github.com/s-rah/onionscan/report"
"golang.org/x/crypto/openpgp"
"log"
"regexp"
"strings"
"fmt"
)
type PGPContentScan struct {
}
func (cs *PGPContentScan) ScanContent(content string, report *report.OnionScanReport) {
log.Printf("\tScanning for PGP Key\n")
log.Printf("Scanning for PGP Key\n")
pgpRegexp := regexp.MustCompile("-----BEGIN PGP PUBLIC KEY BLOCK-----((?s).*)-----END PGP PUBLIC KEY BLOCK-----")
foundPGP := pgpRegexp.FindAllString(content, -1)
for _, key := range foundPGP {
report.AddPGPKey(key)
for _, keyString := range foundPGP {
keys, err := openpgp.ReadArmoredKeyRing(strings.NewReader(keyString));
if err != nil {
log.Printf("ERROR: %s\n", err)
continue
}
if len(keys) < 1 || len(keys[0].Subkeys) < 1 || len(keys[0].Identities) < 1{
log.Printf("ERROR: failed to accept key\n")
continue
}
var identity string
for identity, _ = range keys[0].Identities {
break
}
var fingerprint string
fingerprint = fmt.Sprintf("%X", keys[0].Subkeys[0].PublicKey.Fingerprint)
log.Printf("\tFound PGP Key fingerprint: %s belonging to %s", fingerprint, identity)
report.AddPGPKey(keyString, identity, fingerprint)
}
}