diff --git a/internal/browingdata/bookmark/bookmark.go b/internal/browingdata/bookmark/bookmark.go index 2a79058..2e45535 100644 --- a/internal/browingdata/bookmark/bookmark.go +++ b/internal/browingdata/bookmark/bookmark.go @@ -76,10 +76,23 @@ func getBookmarkChildren(value gjson.Result, w *ChromiumBookmark) (children gjso return children } +func bookmarkType(a int64) string { + switch a { + case 1: + return "url" + default: + return "folder" + } +} + func (c *ChromiumBookmark) Name() string { return "bookmark" } +func (c *ChromiumBookmark) Length() int { + return len(*c) +} + type FirefoxBookmark []bookmark const ( @@ -134,11 +147,6 @@ func (f *FirefoxBookmark) Name() string { return "bookmark" } -func bookmarkType(a int64) string { - switch a { - case 1: - return "url" - default: - return "folder" - } +func (f *FirefoxBookmark) Length() int { + return len(*f) } diff --git a/internal/browingdata/browsingdata.go b/internal/browingdata/browsingdata.go index 356706c..4c244b0 100644 --- a/internal/browingdata/browsingdata.go +++ b/internal/browingdata/browsingdata.go @@ -24,6 +24,8 @@ type Source interface { Parse(masterKey []byte) error Name() string + + Length() int } func New(sources []item.Item) *Data { @@ -47,6 +49,10 @@ func (d *Data) Output(dir, browserName, flag string) { output := NewOutPutter(flag) for _, source := range d.sources { + if source.Length() == 0 { + // if the length of the export data is 0, then it is not necessary to output + continue + } filename := fileutil.Filename(browserName, source.Name(), output.Ext()) f, err := output.CreateFile(dir, filename) diff --git a/internal/browingdata/cookie/cookie.go b/internal/browingdata/cookie/cookie.go index 45a4fbd..14cae53 100644 --- a/internal/browingdata/cookie/cookie.go +++ b/internal/browingdata/cookie/cookie.go @@ -93,6 +93,10 @@ func (c *ChromiumCookie) Name() string { return "cookie" } +func (c *ChromiumCookie) Length() int { + return len(*c) +} + type FirefoxCookie []cookie const ( @@ -137,3 +141,7 @@ func (f *FirefoxCookie) Parse(masterKey []byte) error { func (f *FirefoxCookie) Name() string { return "cookie" } + +func (f *FirefoxCookie) Length() int { + return len(*f) +} diff --git a/internal/browingdata/creditcard/creditcard.go b/internal/browingdata/creditcard/creditcard.go index fb772ad..781fe90 100644 --- a/internal/browingdata/creditcard/creditcard.go +++ b/internal/browingdata/creditcard/creditcard.go @@ -76,6 +76,10 @@ func (c *ChromiumCreditCard) Name() string { return "creditcard" } +func (c *ChromiumCreditCard) Length() int { + return len(*c) +} + type YandexCreditCard []card func (c *YandexCreditCard) Parse(masterKey []byte) error { @@ -127,3 +131,7 @@ func (c *YandexCreditCard) Parse(masterKey []byte) error { func (c *YandexCreditCard) Name() string { return "creditcard" } + +func (c *YandexCreditCard) Length() int { + return len(*c) +} diff --git a/internal/browingdata/download/download.go b/internal/browingdata/download/download.go index ae7a939..55bcc2d 100644 --- a/internal/browingdata/download/download.go +++ b/internal/browingdata/download/download.go @@ -70,6 +70,10 @@ func (c *ChromiumDownload) Name() string { return "download" } +func (c *ChromiumDownload) Length() int { + return len(*c) +} + type FirefoxDownload []download const ( @@ -131,3 +135,7 @@ func (f *FirefoxDownload) Parse(masterKey []byte) error { func (f *FirefoxDownload) Name() string { return "download" } + +func (f *FirefoxDownload) Length() int { + return len(*f) +} diff --git a/internal/browingdata/extension/extension.go b/internal/browingdata/extension/extension.go index ecc8261..4758ce2 100644 --- a/internal/browingdata/extension/extension.go +++ b/internal/browingdata/extension/extension.go @@ -50,6 +50,10 @@ func (c *ChromiumExtension) Name() string { return "extension" } +func (c *ChromiumExtension) Length() int { + return len(*c) +} + type FirefoxExtension []*extension func (f *FirefoxExtension) Parse(masterKey []byte) error { @@ -73,3 +77,7 @@ func (f *FirefoxExtension) Parse(masterKey []byte) error { func (f *FirefoxExtension) Name() string { return "extension" } + +func (f *FirefoxExtension) Length() int { + return len(*f) +} diff --git a/internal/browingdata/history/history.go b/internal/browingdata/history/history.go index f5fc6bf..2b67e58 100644 --- a/internal/browingdata/history/history.go +++ b/internal/browingdata/history/history.go @@ -65,6 +65,10 @@ func (c *ChromiumHistory) Name() string { return "history" } +func (c *ChromiumHistory) Length() int { + return len(*c) +} + type FirefoxHistory []history const ( @@ -119,3 +123,7 @@ func (f *FirefoxHistory) Parse(masterKey []byte) error { func (f *FirefoxHistory) Name() string { return "history" } + +func (f *FirefoxHistory) Length() int { + return len(*f) +} diff --git a/internal/browingdata/localstorage/localstorage.go b/internal/browingdata/localstorage/localstorage.go index dd34e28..ccd7340 100644 --- a/internal/browingdata/localstorage/localstorage.go +++ b/internal/browingdata/localstorage/localstorage.go @@ -58,6 +58,10 @@ func (c *ChromiumLocalStorage) Name() string { return "localStorage" } +func (c *ChromiumLocalStorage) Length() int { + return len(*c) +} + func (s *storage) fillKey(b []byte) { keys := bytes.Split(b, []byte("\x00")) if len(keys) == 1 && bytes.HasPrefix(keys[0], []byte("META:")) { @@ -142,3 +146,7 @@ func (s *storage) fillFirefox(originKey, key, value string) { func (f *FirefoxLocalStorage) Name() string { return "localStorage" } + +func (f *FirefoxLocalStorage) Length() int { + return len(*f) +} diff --git a/internal/browingdata/password/password.go b/internal/browingdata/password/password.go index 14c049f..77ea409 100644 --- a/internal/browingdata/password/password.go +++ b/internal/browingdata/password/password.go @@ -90,6 +90,10 @@ func (c *ChromiumPassword) Name() string { return "password" } +func (c *ChromiumPassword) Length() int { + return len(*c) +} + type YandexPassword []loginData const ( @@ -154,6 +158,10 @@ func (c *YandexPassword) Name() string { return "password" } +func (c *YandexPassword) Length() int { + return len(*c) +} + type FirefoxPassword []loginData const ( @@ -224,10 +232,6 @@ func (f *FirefoxPassword) Parse(masterKey []byte) error { return nil } -func (f *FirefoxPassword) Name() string { - return "password" -} - func getFirefoxDecryptKey(key4file string) (item1, item2, a11, a102 []byte, err error) { var keyDB *sql.DB keyDB, err = sql.Open("sqlite3", key4file) @@ -278,3 +282,11 @@ func getFirefoxLoginData(loginJson string) (l []loginData, err error) { } return l, nil } + +func (f *FirefoxPassword) Name() string { + return "password" +} + +func (f *FirefoxPassword) Length() int { + return len(*f) +}