From bccf76b06c77f0a764468c06fc1b617c8fbdddf8 Mon Sep 17 00:00:00 2001 From: Jinks Date: Mon, 27 Feb 2017 12:30:54 +0100 Subject: [PATCH] LastPass support and embedded quotes --- README.md | 4 ++++ passbleed.go | 19 +++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index be53c26..59fd336 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,10 @@ go get github.com/jinks/passbleed * __The exported CSV contains sensitive data.__ Put it on an encrypted disk and/or _securely_ delete it when you're done. ## Changelog +v1.2: +* Support emebedded quotes +* Added LastPass CSV support (untested) + v1.1: * Added 1Password CSV support * Sorted output diff --git a/passbleed.go b/passbleed.go index 656d527..b59bf35 100644 --- a/passbleed.go +++ b/passbleed.go @@ -15,7 +15,8 @@ import ( // Different CSV formats const ( - UnknownFormat = iota + UnknownFormat = -1 + iota + LastPassFormat _ _ KeePass1Format @@ -37,17 +38,18 @@ func findCSVType(reader *csv.Reader) (int, error) { } else if err != nil { return UnknownFormat, err } - if len(header) >= 4 && header[3] == "Web Site" { + switch { + case len(header) >= 1 && header[0] == "url": + return LastPassFormat, nil + case len(header) >= 4 && header[3] == "Web Site": return KeePass1Format, nil - } - if len(header) >= 5 && header[4] == "URL" { + case len(header) >= 5 && header[4] == "URL": return KeePassXFormat, nil - } - if len(header) >= 9 && header[8] == "urls" { + case len(header) >= 9 && header[8] == "urls": return OnePasswordFormat, nil + default: + return UnknownFormat, fmt.Errorf("unkonwn CSV format, please use a supported export format (see README)") } - return UnknownFormat, fmt.Errorf("unkonwn CSV format, please use KeePass2, KeePassX or 1Password CSV export") - } func buildKeepass(filename string) (*DomainSet, error) { @@ -58,6 +60,7 @@ func buildKeepass(filename string) (*DomainSet, error) { defer file.Close() reader := csv.NewReader(file) + reader.LazyQuotes = true col, err := findCSVType(reader) if err != nil { return nil, err