Skip to content

Commit 2de62ac

Browse files
authored
update to v0.4.1, support export local storage
Merge pull request #125 from moonD4rk/dev
2 parents aa3326f + 4fe266d commit 2de62ac

15 files changed

Lines changed: 306 additions & 86 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
[中文说明](https://github.com/moonD4rk/HackBrowserData/blob/master/README_ZH.md)
66

7-
`HackBrowserData` is an open-source tool that could help you decrypt data ( password|bookmark|cookie|history|credit card|downloads link ) from the browser. It supports the most popular browsers on the market and runs on Windows, macOS and Linux.
7+
`HackBrowserData` is an open-source tool that could help you decrypt data ( password|bookmark|cookie|history|credit card|download link|local storage ) from the browser. It supports the most popular browsers on the market and runs on Windows, macOS and Linux.
88

99
> Disclaimer: This tool is limited to security research only, and the user assumes all legal and related responsibilities arising from its use! The author assumes no legal responsibility!
1010
@@ -103,7 +103,7 @@ Need install target OS's `gcc` library, here's an example of use `Mac` building
103103
```shell
104104
brew install mingw-w64
105105

106-
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC="x86_64-w64-mingw32-gcc" go build
106+
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc go build
107107
```
108108

109109
#### For Linux
@@ -129,7 +129,7 @@ USAGE:
129129
Github Link: https://github.com/moonD4rk/HackBrowserData
130130
131131
VERSION:
132-
0.4.0
132+
0.4.1
133133
134134
GLOBAL OPTIONS:
135135
--verbose, --vv verbose (default: false)

README_ZH.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# HackBrowserData
22

3-
`HackBrowserData` 是一个浏览器数据(密码 | 历史记录 | Cookie | 书签 | 信用卡 | 下载记录)的导出工具,支持全平台主流浏览器。
3+
`HackBrowserData` 是一个浏览器数据(密码 | 历史记录 | Cookie | 书签 | 信用卡 | 下载记录|local Storage)的导出工具,支持全平台主流浏览器。
44

55

66
> 免责声明:此工具仅限于安全研究,用户承担因使用此工具而导致的所有法律和相关责任!作者不承担任何法律责任!
@@ -99,7 +99,7 @@ $ CGO_ENABLED=1 go build
9999
``` shell
100100
brew install mingw-w64
101101

102-
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC="x86_64-w64-mingw32-gcc" go build
102+
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc go build
103103
```
104104

105105
#### Linux
@@ -124,7 +124,7 @@ USAGE:
124124
Github Link: https://github.com/moonD4rk/HackBrowserData
125125
126126
VERSION:
127-
0.4.0
127+
0.4.1
128128
129129
GLOBAL OPTIONS:
130130
--verbose, --vv verbose (default: false)

cmd/hack-browser-data/main.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func Execute() {
2929
Name: "hack-browser-data",
3030
Usage: "Export passwords/cookies/history/bookmarks from browser",
3131
UsageText: "[hack-browser-data -b chrome -f json -dir results -cc]\nExport all browingdata(password/cookie/history/bookmark) from browser\nGithub Link: https://github.com/moonD4rk/HackBrowserData",
32-
Version: "0.4.0",
32+
Version: "0.4.1",
3333
Flags: []cli.Flag{
3434
&cli.BoolFlag{Name: "verbose", Aliases: []string{"vv"}, Destination: &verbose, Value: false, Usage: "verbose"},
3535
&cli.BoolFlag{Name: "compress", Aliases: []string{"zip"}, Destination: &compress, Value: false, Usage: "compress result to zip"},
@@ -49,7 +49,6 @@ func Execute() {
4949
browsers []browser.Browser
5050
err error
5151
)
52-
log.Debugf("browser: %s", browserName)
5352
browsers, err = browser.PickBrowser(browserName, profilePath)
5453
if err != nil {
5554
log.Error(err)

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ require (
99
github.com/gookit/slog v0.2.2-0.20220415153407-dd89ed7b0448
1010
github.com/json-iterator/go v1.1.12
1111
github.com/mattn/go-sqlite3 v1.14.9
12+
github.com/otiai10/copy v1.7.0
1213
github.com/ppacher/go-dbus-keyring v1.0.1
14+
github.com/syndtr/goleveldb v1.0.0
1315
github.com/tidwall/gjson v1.9.3
1416
github.com/urfave/cli/v2 v2.4.0
1517
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3
@@ -18,6 +20,7 @@ require (
1820

1921
require (
2022
github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect
23+
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect
2124
github.com/gookit/goutil v0.5.0 // indirect
2225
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
2326
github.com/modern-go/reflect2 v1.0.2 // indirect

go.sum

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,24 @@ github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t
44
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
55
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
66
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
7+
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
78
github.com/gocarina/gocsv v0.0.0-20211203214250-4735fba0c1d9 h1:ptTza/LLPmfRtmz77X+6J61Wyf5e1hz5xYMvRk/hkE4=
89
github.com/gocarina/gocsv v0.0.0-20211203214250-4735fba0c1d9/go.mod h1:5YoVOkjYAQumqlV356Hj3xeYh4BdZuLE0/nRkf2NKkI=
910
github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
1011
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
1112
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
13+
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
14+
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w=
15+
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
1216
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
1317
github.com/gookit/color v1.5.0 h1:1Opow3+BWDwqor78DcJkJCIwnkviFi+rrOANki9BUFw=
1418
github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo=
1519
github.com/gookit/goutil v0.5.0 h1:SrbfjqZ8iprxJOfKZVT0yGJ4/82afr4Qa0RQwON19I4=
1620
github.com/gookit/goutil v0.5.0/go.mod h1:pq1eTibwb2wN96jrci0xy7xogWzzo9CihOQJEAvz4yQ=
1721
github.com/gookit/slog v0.2.2-0.20220415153407-dd89ed7b0448 h1:7kNDAgYDAu/5X+PbFfzGToaKJiDcghKv7B4XOGosrPM=
1822
github.com/gookit/slog v0.2.2-0.20220415153407-dd89ed7b0448/go.mod h1:9Sh1Utw3LVG0kqN++ankdfrCVQ7yixKDL1+YrYvIulU=
23+
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
24+
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
1925
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
2026
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
2127
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
@@ -27,6 +33,18 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
2733
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
2834
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
2935
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
36+
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
37+
github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
38+
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
39+
github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
40+
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
41+
github.com/otiai10/copy v1.7.0 h1:hVoPiN+t+7d2nzzwMiDHPSOogsWAStewq3TwU05+clE=
42+
github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U=
43+
github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
44+
github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
45+
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
46+
github.com/otiai10/mint v1.3.3 h1:7JgpsBaN0uMkyju4tbYHu0mnM55hNKVYLsXmwr15NQI=
47+
github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
3048
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
3149
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3250
github.com/ppacher/go-dbus-keyring v1.0.1 h1:dM4dMfP5w9MxY+foFHCQiN7izEGpFdKr3tZeMGmvqD0=
@@ -38,6 +56,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
3856
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
3957
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
4058
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
59+
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
60+
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
4161
github.com/tidwall/gjson v1.9.3 h1:hqzS9wAHMO+KVBBkLxYdkEeeFHuqr95GfClRLKlgK0E=
4262
github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
4363
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
@@ -56,7 +76,11 @@ golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 h1:0es+/5331RGQPcXlMfP+Wr
5676
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
5777
golang.org/x/exp v0.0.0-20220414153411-bcd21879b8fd h1:zVFyTKZN/Q7mNRWSs1GOYnHM9NiFSJ54YVRsD0rNWT4=
5878
golang.org/x/exp v0.0.0-20220414153411-bcd21879b8fd/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
79+
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
5980
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
81+
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
82+
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
83+
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
6084
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
6185
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
6286
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -65,7 +89,14 @@ golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w
6589
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
6690
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
6791
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
92+
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
6893
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
94+
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
95+
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
96+
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
97+
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
98+
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
99+
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
69100
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
70101
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
71102
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=

internal/browingdata/browsingdata.go

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@ import (
88
"hack-browser-data/internal/browingdata/creditcard"
99
"hack-browser-data/internal/browingdata/download"
1010
"hack-browser-data/internal/browingdata/history"
11+
"hack-browser-data/internal/browingdata/localstorage"
1112
"hack-browser-data/internal/browingdata/password"
1213
"hack-browser-data/internal/item"
1314
"hack-browser-data/internal/log"
1415
"hack-browser-data/internal/utils/fileutil"
1516
)
1617

1718
type Data struct {
18-
Sources map[item.Item]Source
19+
sources map[item.Item]Source
1920
}
2021

2122
type Source interface {
@@ -26,17 +27,17 @@ type Source interface {
2627

2728
func New(sources []item.Item) *Data {
2829
bd := &Data{
29-
Sources: make(map[item.Item]Source),
30+
sources: make(map[item.Item]Source),
3031
}
3132
bd.addSource(sources)
3233
return bd
3334
}
3435

3536
func (d *Data) Recovery(masterKey []byte) error {
3637

37-
for _, source := range d.Sources {
38+
for _, source := range d.sources {
3839
if err := source.Parse(masterKey); err != nil {
39-
log.Error(err)
40+
log.Errorf("parse %s error %s", source.Name(), err.Error())
4041
}
4142
}
4243
return nil
@@ -45,16 +46,16 @@ func (d *Data) Recovery(masterKey []byte) error {
4546
func (d *Data) Output(dir, browserName, flag string) {
4647
output := NewOutPutter(flag)
4748

48-
for _, source := range d.Sources {
49+
for _, source := range d.sources {
4950

5051
filename := fileutil.Filename(browserName, source.Name(), output.Ext())
5152

5253
f, err := output.CreateFile(dir, filename)
5354
if err != nil {
54-
log.Error(err)
55+
log.Errorf("create file error %s", err)
5556
}
5657
if err := output.Write(source, f); err != nil {
57-
log.Error(err)
58+
log.Errorf("%s write to file %s error %s", source.Name(), filename, err.Error())
5859
}
5960
log.Noticef("output to file %s success", path.Join(dir, filename))
6061
}
@@ -64,31 +65,35 @@ func (d *Data) addSource(Sources []item.Item) {
6465
for _, source := range Sources {
6566
switch source {
6667
case item.ChromiumPassword:
67-
d.Sources[source] = &password.ChromiumPassword{}
68+
d.sources[source] = &password.ChromiumPassword{}
6869
case item.ChromiumCookie:
69-
d.Sources[source] = &cookie.ChromiumCookie{}
70+
d.sources[source] = &cookie.ChromiumCookie{}
7071
case item.ChromiumBookmark:
71-
d.Sources[source] = &bookmark.ChromiumBookmark{}
72+
d.sources[source] = &bookmark.ChromiumBookmark{}
7273
case item.ChromiumHistory:
73-
d.Sources[source] = &history.ChromiumHistory{}
74+
d.sources[source] = &history.ChromiumHistory{}
7475
case item.ChromiumDownload:
75-
d.Sources[source] = &download.ChromiumDownload{}
76+
d.sources[source] = &download.ChromiumDownload{}
7677
case item.ChromiumCreditCard:
77-
d.Sources[source] = &creditcard.ChromiumCreditCard{}
78+
d.sources[source] = &creditcard.ChromiumCreditCard{}
79+
case item.ChromiumLocalStorage:
80+
d.sources[source] = &localstorage.ChromiumLocalStorage{}
7881
case item.YandexPassword:
79-
d.Sources[source] = &password.YandexPassword{}
82+
d.sources[source] = &password.YandexPassword{}
8083
case item.YandexCreditCard:
81-
d.Sources[source] = &creditcard.YandexCreditCard{}
84+
d.sources[source] = &creditcard.YandexCreditCard{}
8285
case item.FirefoxPassword:
83-
d.Sources[source] = &password.FirefoxPassword{}
86+
d.sources[source] = &password.FirefoxPassword{}
8487
case item.FirefoxCookie:
85-
d.Sources[source] = &cookie.FirefoxCookie{}
88+
d.sources[source] = &cookie.FirefoxCookie{}
8689
case item.FirefoxBookmark:
87-
d.Sources[source] = &bookmark.FirefoxBookmark{}
90+
d.sources[source] = &bookmark.FirefoxBookmark{}
8891
case item.FirefoxHistory:
89-
d.Sources[source] = &history.FirefoxHistory{}
92+
d.sources[source] = &history.FirefoxHistory{}
9093
case item.FirefoxDownload:
91-
d.Sources[source] = &download.FirefoxDownload{}
94+
d.sources[source] = &download.FirefoxDownload{}
95+
case item.FirefoxLocalStorage:
96+
d.sources[source] = &localstorage.FirefoxLocalStorage{}
9297
}
9398
}
9499
}

0 commit comments

Comments
 (0)