mirror of
https://github.com/moonD4rk/HackBrowserData.git
synced 2026-05-19 18:58:03 +02:00
refactor: Optimize traversal browser data logic (#311)
* refactor: Refactor package names and imports for better code organization. * refactor: Package imports and variable types for consistency * chore: Disable unused-parameter rule in revive. * refactor: Refactor and organize data extraction and browserdata parse. * fix: rename wrong error message info
This commit is contained in:
+13
-13
@@ -11,9 +11,9 @@ import (
|
||||
|
||||
_ "modernc.org/sqlite" // sqlite3 driver TODO: replace with chooseable driver
|
||||
|
||||
"github.com/moond4rk/hackbrowserdata/browsingdata"
|
||||
"github.com/moond4rk/hackbrowserdata/browserdata"
|
||||
"github.com/moond4rk/hackbrowserdata/crypto"
|
||||
"github.com/moond4rk/hackbrowserdata/item"
|
||||
"github.com/moond4rk/hackbrowserdata/types"
|
||||
"github.com/moond4rk/hackbrowserdata/utils/fileutil"
|
||||
"github.com/moond4rk/hackbrowserdata/utils/typeutil"
|
||||
)
|
||||
@@ -23,15 +23,15 @@ type Firefox struct {
|
||||
storage string
|
||||
profilePath string
|
||||
masterKey []byte
|
||||
items []item.Item
|
||||
itemPaths map[item.Item]string
|
||||
items []types.DataType
|
||||
itemPaths map[types.DataType]string
|
||||
}
|
||||
|
||||
var ErrProfilePathNotFound = errors.New("profile path not found")
|
||||
|
||||
// New returns new Firefox instances.
|
||||
func New(profilePath string, items []item.Item) ([]*Firefox, error) {
|
||||
multiItemPaths := make(map[string]map[item.Item]string)
|
||||
func New(profilePath string, items []types.DataType) ([]*Firefox, error) {
|
||||
multiItemPaths := make(map[string]map[types.DataType]string)
|
||||
// ignore walk dir error since it can be produced by a single entry
|
||||
_ = filepath.WalkDir(profilePath, firefoxWalkFunc(items, multiItemPaths))
|
||||
|
||||
@@ -57,7 +57,7 @@ func (f *Firefox) copyItemToLocal() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]string) fs.WalkDirFunc {
|
||||
func firefoxWalkFunc(items []types.DataType, multiItemPaths map[string]map[types.DataType]string) fs.WalkDirFunc {
|
||||
return func(path string, info fs.DirEntry, err error) error {
|
||||
for _, v := range items {
|
||||
if info.Name() == v.Filename() {
|
||||
@@ -65,7 +65,7 @@ func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]
|
||||
if _, exist := multiItemPaths[parentBaseDir]; exist {
|
||||
multiItemPaths[parentBaseDir][v] = path
|
||||
} else {
|
||||
multiItemPaths[parentBaseDir] = map[item.Item]string{v: path}
|
||||
multiItemPaths[parentBaseDir] = map[types.DataType]string{v: path}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,7 +76,7 @@ func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]
|
||||
|
||||
// GetMasterKey returns master key of Firefox. from key4.db
|
||||
func (f *Firefox) GetMasterKey() ([]byte, error) {
|
||||
tempFilename := item.FirefoxKey4.TempFilename()
|
||||
tempFilename := types.FirefoxKey4.TempFilename()
|
||||
|
||||
// Open and defer close of the database.
|
||||
keyDB, err := sql.Open("sqlite", tempFilename)
|
||||
@@ -135,7 +135,7 @@ func processMasterKey(metaItem1, metaItem2, nssA11, nssA102 []byte) ([]byte, err
|
||||
return nil, errors.New("flag verification failed: password-check not found")
|
||||
}
|
||||
|
||||
var keyLin = []byte{248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}
|
||||
keyLin := []byte{248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}
|
||||
if !bytes.Equal(nssA102, keyLin) {
|
||||
return nil, errors.New("master key verification failed: nssA102 not equal to expected value")
|
||||
}
|
||||
@@ -159,13 +159,13 @@ func (f *Firefox) Name() string {
|
||||
return f.name
|
||||
}
|
||||
|
||||
func (f *Firefox) BrowsingData(isFullExport bool) (*browsingdata.Data, error) {
|
||||
func (f *Firefox) BrowsingData(isFullExport bool) (*browserdata.BrowserData, error) {
|
||||
items := f.items
|
||||
if !isFullExport {
|
||||
items = item.FilterSensitiveItems(f.items)
|
||||
items = types.FilterSensitiveItems(f.items)
|
||||
}
|
||||
|
||||
b := browsingdata.New(items)
|
||||
b := browserdata.New(items)
|
||||
|
||||
if err := f.copyItemToLocal(); err != nil {
|
||||
return nil, err
|
||||
|
||||
Reference in New Issue
Block a user