feat: format project layout

This commit is contained in:
ᴍᴏᴏɴD4ʀᴋ
2022-04-01 15:00:56 +08:00
parent f8b1de4666
commit 1c81220967
29 changed files with 420 additions and 2746 deletions
+51 -70
View File
@@ -10,6 +10,7 @@ import (
"strings"
"hack-browser-data/internal/browser/data"
"hack-browser-data/internal/browser/item"
)
type Browser interface {
@@ -75,8 +76,8 @@ func pickFirefox(name string) []Browser {
var browsers []Browser
name = strings.ToLower(name)
if name == "all" || name == "firefox" {
for _, b := range firefoxList {
multiFirefox, err := newMultiFirefox(b.browserInfo, b.items)
for _, f := range firefoxList {
multiFirefox, err := newMultiFirefox(f.browserInfo, f.items)
if err != nil {
panic(err)
}
@@ -91,17 +92,22 @@ func pickFirefox(name string) []Browser {
type chromium struct {
browserInfo *browserInfo
items []item
itemPaths map[item]string
items []item.Item
itemPaths map[item.Item]string
}
// NewBrowser 根据浏览器信息生成 Browser Interface
func newChromium(info *browserInfo, items []item) (*chromium, error) {
// newChromium 根据浏览器信息生成 Browser Interface
func newChromium(info *browserInfo, items []item.Item) (*chromium, error) {
c := &chromium{
browserInfo: info,
items: items,
}
itemsPaths, err := getChromiumItemAbsPath(c.browserInfo.profilePath, c.items)
absProfilePath := path.Join(homeDir, filepath.Clean(c.browserInfo.profilePath))
// TODO: Handle file path is not exist
if !isFileExist(absProfilePath) {
return nil, fmt.Errorf("%s profile path is not exist", absProfilePath)
}
itemsPaths, err := getChromiumItemPath(absProfilePath, c.items)
if err != nil {
return nil, err
}
@@ -153,13 +159,13 @@ func (c *chromium) CopyItemFileToLocal() error {
type firefox struct {
browserInfo *browserInfo
items []item
itemPaths map[item]string
multiItemPaths map[string]map[item]string
items []item.Item
itemPaths map[item.Item]string
multiItemPaths map[string]map[item.Item]string
}
// newFirefox
func newMultiFirefox(info *browserInfo, items []item) ([]*firefox, error) {
func newMultiFirefox(info *browserInfo, items []item.Item) ([]*firefox, error) {
f := &firefox{
browserInfo: info,
items: items,
@@ -186,8 +192,8 @@ func newMultiFirefox(info *browserInfo, items []item) ([]*firefox, error) {
return firefoxList, nil
}
func getFirefoxItemAbsPath(profilePath string, items []item) (map[string]map[item]string, error) {
var multiItemPaths = make(map[string]map[item]string)
func getFirefoxItemAbsPath(profilePath string, items []item.Item) (map[string]map[item.Item]string, error) {
var multiItemPaths = make(map[string]map[item.Item]string)
absProfilePath := path.Join(homeDir, filepath.Clean(profilePath))
// TODO: Handle read file error
if !isFileExist(absProfilePath) {
@@ -224,7 +230,7 @@ func (f *firefox) CopyItemFileToLocal() error {
return nil
}
func firefoxWalkFunc(items []item, multiItemPaths map[string]map[item]string) filepath.WalkFunc {
func firefoxWalkFunc(items []item.Item, multiItemPaths map[string]map[item.Item]string) filepath.WalkFunc {
return func(path string, info fs.FileInfo, err error) error {
for _, v := range items {
if info.Name() == v.DefaultName() {
@@ -232,7 +238,7 @@ func firefoxWalkFunc(items []item, multiItemPaths map[string]map[item]string) fi
if _, exist := multiItemPaths[parentDir]; exist {
multiItemPaths[parentDir][v] = path
} else {
multiItemPaths[parentDir] = map[item]string{v: path}
multiItemPaths[parentDir] = map[item.Item]string{v: path}
}
}
}
@@ -244,31 +250,6 @@ func getParentDir(absPath string) string {
return filepath.Base(filepath.Dir(absPath))
}
func chromiumWalkFunc(items []item, itemPaths map[item]string) filepath.WalkFunc {
return func(path string, info os.FileInfo, err error) error {
for _, item := range items {
if item.DefaultName() == info.Name() && item == chromiumKey {
itemPaths[item] = path
}
if item.DefaultName() == info.Name() && strings.Contains(path, "Default") {
itemPaths[item] = path
}
}
return err
}
}
func getChromiumItemAbsPath(profilePath string, items []item) (map[item]string, error) {
var itemPaths = make(map[item]string)
absProfilePath := path.Join(homeDir, filepath.Clean(profilePath))
// TODO: Handle file path is not exist
if !isFileExist(absProfilePath) {
return nil, fmt.Errorf("%s profile path is not exist", absProfilePath)
}
err := filepath.Walk(absProfilePath, chromiumWalkFunc(items, itemPaths))
return itemPaths, err
}
func (f *firefox) GetMasterKey() ([]byte, error) {
return f.browserInfo.masterKey, nil
}
@@ -333,38 +314,38 @@ const (
yandexName = "Yandex"
)
var defaultFirefoxItems = []item{
firefoxKey4,
firefoxPassword,
firefoxCookie,
firefoxBookmark,
firefoxHistory,
firefoxDownload,
firefoxCreditCard,
firefoxLocalStorage,
firefoxExtension,
var defaultFirefoxItems = []item.Item{
item.firefoxKey4,
item.firefoxPassword,
item.firefoxCookie,
item.firefoxBookmark,
item.firefoxHistory,
item.firefoxDownload,
item.firefoxCreditCard,
item.firefoxLocalStorage,
item.firefoxExtension,
}
var defaultYandexItems = []item{
chromiumKey,
yandexPassword,
chromiumCookie,
chromiumBookmark,
chromiumHistory,
chromiumDownload,
yandexCreditCard,
chromiumLocalStorage,
chromiumExtension,
var defaultYandexItems = []item.Item{
item.chromiumKey,
item.yandexPassword,
item.chromiumCookie,
item.chromiumBookmark,
item.chromiumHistory,
item.chromiumDownload,
item.yandexCreditCard,
item.chromiumLocalStorage,
item.chromiumExtension,
}
var defaultChromiumItems = []item{
chromiumKey,
chromiumPassword,
chromiumCookie,
chromiumBookmark,
chromiumHistory,
chromiumDownload,
chromiumCreditCard,
chromiumLocalStorage,
chromiumExtension,
var defaultChromiumItems = []item.Item{
item.chromiumKey,
item.chromiumPassword,
item.chromiumCookie,
item.chromiumBookmark,
item.chromiumHistory,
item.chromiumDownload,
item.chromiumCreditCard,
item.chromiumLocalStorage,
item.chromiumExtension,
}
+4 -2
View File
@@ -7,12 +7,14 @@ import (
"os/exec"
"golang.org/x/crypto/pbkdf2"
"hack-browser-data/internal/browser/item"
)
var (
chromiumList = map[string]struct {
browserInfo *browserInfo
items []item
items []item.Item
}{
"chrome": {
browserInfo: chromeInfo,
@@ -57,7 +59,7 @@ var (
}
firefoxList = map[string]struct {
browserInfo *browserInfo
items []item
items []item.Item
}{
"firefox": {
browserInfo: firefoxInfo,
+9
View File
@@ -44,6 +44,15 @@ func TestPickChromium(t *testing.T) {
}
}
func TestGetChromiumItemAbsPath(t *testing.T) {
p := `/Library/Application Support/Google/Chrome/`
s, err := getChromiumItemPath(p, defaultChromiumItems)
if err != nil {
panic(err)
}
fmt.Println(s)
}
func TestPickBrowsers(t *testing.T) {
browsers := PickBrowser("all")
for _, v := range browsers {
+4 -4
View File
@@ -6,7 +6,7 @@ import (
"github.com/tidwall/gjson"
"hack-browser-data/internal/browser/consts"
"hack-browser-data/internal/browser/item"
"hack-browser-data/internal/decrypter"
"hack-browser-data/internal/utils"
)
@@ -14,7 +14,7 @@ import (
var (
chromiumList = map[string]struct {
browserInfo *browserInfo
items []item
items []item.Item
}{
"chrome": {
browserInfo: chromeInfo,
@@ -31,7 +31,7 @@ var (
}
firefoxList = map[string]struct {
browserInfo *browserInfo
items []item
items []item.Item
}{
"firefox": {
browserInfo: firefoxInfo,
@@ -45,7 +45,7 @@ var (
)
func (c *chromium) GetMasterKey() ([]byte, error) {
keyFile, err := utils.ReadFile(consts.ChromiumKeyFilename)
keyFile, err := utils.ReadFile(item.TempChromiumKey)
if err != nil {
return nil, err
}
+108
View File
@@ -0,0 +1,108 @@
package chromium
import (
"fmt"
"io/ioutil"
"os"
"path"
"path/filepath"
"strings"
"hack-browser-data/internal/browser/data"
"hack-browser-data/internal/browser/item"
)
type chromium struct {
name string
storage string
profilePath string
masterKey []byte
items []item.Item
itemPaths map[item.Item]string
}
// newChromium 根据浏览器信息生成 Browser Interface
func newChromium(name, storage, profilePath string, items []item.Item) (*chromium, error) {
c := &chromium{
name: name,
storage: storage,
profilePath: profilePath,
items: items,
}
absProfilePath := path.Join(homeDir, filepath.Clean(c.browserInfo.profilePath))
// TODO: Handle file path is not exist
if !isFileExist(absProfilePath) {
return nil, fmt.Errorf("%s profile path is not exist", absProfilePath)
}
itemsPaths, err := getChromiumItemPath(absProfilePath, c.items)
if err != nil {
return nil, err
}
c.itemPaths = itemsPaths
return c, err
}
func (c *chromium) GetName() string {
return c.name
}
func (c *chromium) GetBrowsingData() []data.BrowsingData {
var browsingData []data.BrowsingData
for item := range c.itemPaths {
d := item.NewBrowsingData()
if d != nil {
browsingData = append(browsingData, d)
}
}
return browsingData
}
func (c *chromium) CopyItemFileToLocal() error {
for item, sourcePath := range c.itemPaths {
var dstFilename = item.FileName()
locals, _ := filepath.Glob("*")
for _, v := range locals {
if v == dstFilename {
err := os.Remove(dstFilename)
// TODO: Should Continue all iteration error
if err != nil {
return err
}
}
}
// TODO: Handle read file error
sourceFile, err := ioutil.ReadFile(sourcePath)
if err != nil {
fmt.Println(err.Error())
}
err = ioutil.WriteFile(dstFilename, sourceFile, 0777)
if err != nil {
return err
}
}
return nil
}
func getChromiumItemPath(profilePath string, items []item.Item) (map[item.Item]string, error) {
var itemPaths = make(map[item.Item]string)
err := filepath.Walk(profilePath, chromiumWalkFunc(items, itemPaths))
return itemPaths, err
}
func chromiumWalkFunc(items []item.Item, itemPaths map[item.Item]string) filepath.WalkFunc {
return func(path string, info os.FileInfo, err error) error {
for _, it := range items {
switch {
case it.DefaultName() == info.Name():
if it == it.chromiumKey {
itemPaths[it] = path
}
if strings.Contains(path, "Default") {
itemPaths[it] = path
}
}
}
return err
}
}
-47
View File
@@ -1,47 +0,0 @@
package consts
// item's default filename
const (
ChromiumKey = "Local State"
ChromiumCredit = "Web Data"
ChromiumPassword = "Login Data"
ChromiumHistory = "History"
ChromiumDownload = "History"
ChromiumCookie = "Cookies"
ChromiumBookmark = "Bookmarks"
ChromiumLocalStorage = "chromiumLocalStorage"
YandexPassword = "Ya PassMan Data"
YandexCredit = "Ya Credit Cards"
FirefoxKey4 = "key4.db"
FirefoxCookie = "cookies.sqlite"
FirefoxPassword = "logins.json"
FirefoxData = "places.sqlite"
UnknownItem = "unknown item"
UnsupportedItem = "unsupported item"
)
// item's renamed filename
const (
ChromiumKeyFilename = "ChromiumKeyFilename"
ChromiumCreditFilename = "ChromiumCreditFilename"
ChromiumPasswordFilename = "ChromiumPasswordFilename"
ChromiumHistoryFilename = "ChromiumHistoryFilename"
ChromiumDownloadFilename = "ChromiumDownloadFilename"
ChromiumCookieFilename = "ChromiumCookieFilename"
ChromiumBookmarkFilename = "ChromiumBookmarkFilename"
ChromiumLocalStorageFilename = "ChromiumLocalStorageFilename"
YandexPasswordFilename = "YandexPasswordFilename"
YandexCreditFilename = "YandexCreditFilename"
FirefoxKey4Filename = "FirefoxKey4DBFilename"
FirefoxCookieFilename = "FirefoxCookieFilename"
FirefoxPasswordFilename = "FirefoxPasswordFilename"
FirefoxDownloadFilename = "FirefoxDownloadFilename"
FirefoxHistoryFilename = "FirefoxHistoryFilename"
FirefoxBookmarkFilename = "FirefoxBookmarkFilename"
FirefoxDataFilename = "FirefoxDataFilename"
)
-1
View File
@@ -1 +0,0 @@
package consts
+4 -3
View File
@@ -7,14 +7,14 @@ import (
"github.com/tidwall/gjson"
"hack-browser-data/internal/browser/consts"
"hack-browser-data/internal/browser/item"
"hack-browser-data/internal/utils"
)
type ChromiumBookmark []bookmark
func (c *ChromiumBookmark) Parse(masterKey []byte) error {
bookmarks, err := utils.ReadFile(consts.ChromiumBookmarkFilename)
bookmarks, err := utils.ReadFile(item.ChromiumBookmarkFilename)
if err != nil {
return err
}
@@ -26,6 +26,7 @@ func (c *ChromiumBookmark) Parse(masterKey []byte) error {
return true
})
}
// TODO: 使用泛型重构
sort.Slice(*c, func(i, j int) bool {
return (*c)[i].DateAdded.After((*c)[j].DateAdded)
})
@@ -73,7 +74,7 @@ func (f *FirefoxBookmark) Parse(masterKey []byte) error {
keyDB *sql.DB
bookmarkRows *sql.Rows
)
keyDB, err = sql.Open("sqlite3", consts.FirefoxBookmarkFilename)
keyDB, err = sql.Open("sqlite3", item.FirefoxBookmarkFilename)
if err != nil {
return err
}
+3 -3
View File
@@ -5,7 +5,7 @@ import (
"fmt"
"sort"
"hack-browser-data/internal/browser/consts"
"hack-browser-data/internal/browser/item"
"hack-browser-data/internal/decrypter"
"hack-browser-data/internal/utils"
@@ -15,7 +15,7 @@ import (
type ChromiumCookie []cookie
func (c *ChromiumCookie) Parse(masterKey []byte) error {
cookieDB, err := sql.Open("sqlite3", consts.ChromiumCookieFilename)
cookieDB, err := sql.Open("sqlite3", item.ChromiumCookieFilename)
if err != nil {
return err
}
@@ -78,7 +78,7 @@ func (c *ChromiumCookie) Name() string {
type FirefoxCookie []cookie
func (f *FirefoxCookie) Parse(masterKey []byte) error {
cookieDB, err := sql.Open("sqlite3", consts.FirefoxCookieFilename)
cookieDB, err := sql.Open("sqlite3", item.FirefoxCookieFilename)
if err != nil {
return err
}
+2 -2
View File
@@ -6,14 +6,14 @@ import (
_ "github.com/mattn/go-sqlite3"
"hack-browser-data/internal/browser/consts"
"hack-browser-data/internal/browser/item"
"hack-browser-data/internal/decrypter"
)
type ChromiumCreditCard []card
func (c *ChromiumCreditCard) Parse(masterKey []byte) error {
creditDB, err := sql.Open("sqlite3", consts.ChromiumCreditFilename)
creditDB, err := sql.Open("sqlite3", item.TempChromiumCredit)
if err != nil {
return err
}
+3 -3
View File
@@ -8,7 +8,7 @@ import (
"github.com/tidwall/gjson"
"hack-browser-data/internal/browser/consts"
"hack-browser-data/internal/browser/item"
"hack-browser-data/internal/utils"
_ "github.com/mattn/go-sqlite3"
@@ -17,7 +17,7 @@ import (
type ChromiumDownload []download
func (c *ChromiumDownload) Parse(masterKey []byte) error {
historyDB, err := sql.Open("sqlite3", consts.ChromiumDownloadFilename)
historyDB, err := sql.Open("sqlite3", item.ChromiumDownloadFilename)
if err != nil {
return err
}
@@ -63,7 +63,7 @@ func (f *FirefoxDownload) Parse(masterKey []byte) error {
keyDB *sql.DB
downloadRows *sql.Rows
)
keyDB, err = sql.Open("sqlite3", consts.FirefoxDownloadFilename)
keyDB, err = sql.Open("sqlite3", item.FirefoxDownloadFilename)
if err != nil {
return err
}
+3 -3
View File
@@ -5,7 +5,7 @@ import (
"fmt"
"sort"
"hack-browser-data/internal/browser/consts"
"hack-browser-data/internal/browser/item"
"hack-browser-data/internal/utils"
_ "github.com/mattn/go-sqlite3"
@@ -14,7 +14,7 @@ import (
type ChromiumHistory []history
func (c *ChromiumHistory) Parse(masterKey []byte) error {
historyDB, err := sql.Open("sqlite3", consts.ChromiumHistoryFilename)
historyDB, err := sql.Open("sqlite3", item.ChromiumHistoryFilename)
if err != nil {
return err
}
@@ -60,7 +60,7 @@ func (f *FirefoxHistory) Parse(masterKey []byte) error {
keyDB *sql.DB
historyRows *sql.Rows
)
keyDB, err = sql.Open("sqlite3", consts.FirefoxHistoryFilename)
keyDB, err = sql.Open("sqlite3", item.FirefoxHistoryFilename)
if err != nil {
return err
}
+4 -4
View File
@@ -9,7 +9,7 @@ import (
"sort"
"time"
"hack-browser-data/internal/browser/consts"
"hack-browser-data/internal/browser/item"
decrypter2 "hack-browser-data/internal/decrypter"
"hack-browser-data/internal/utils"
@@ -20,7 +20,7 @@ import (
type ChromiumPassword []loginData
func (c *ChromiumPassword) Parse(masterKey []byte) error {
loginDB, err := sql.Open("sqlite3", consts.ChromiumPasswordFilename)
loginDB, err := sql.Open("sqlite3", item.TempChromiumPassword)
if err != nil {
return err
}
@@ -80,7 +80,7 @@ func (c *ChromiumPassword) Name() string {
type FirefoxPassword []loginData
func (f *FirefoxPassword) Parse(masterKey []byte) error {
globalSalt, metaBytes, nssA11, nssA102, err := getFirefoxDecryptKey(consts.FirefoxKey4Filename)
globalSalt, metaBytes, nssA11, nssA102, err := getFirefoxDecryptKey(item.FirefoxKey4Filename)
if err != nil {
return err
}
@@ -106,7 +106,7 @@ func (f *FirefoxPassword) Parse(masterKey []byte) error {
if err != nil {
return err
}
allLogin, err := getFirefoxLoginData(consts.FirefoxPasswordFilename)
allLogin, err := getFirefoxLoginData(item.FirefoxPasswordFilename)
if err != nil {
return err
}
+1
View File
@@ -0,0 +1 @@
package firefox
-166
View File
@@ -1,166 +0,0 @@
package browser
import (
"hack-browser-data/internal/browser/consts"
data2 "hack-browser-data/internal/browser/data"
)
type item int
const (
chromiumKey item = iota
chromiumPassword
chromiumCookie
chromiumBookmark
chromiumHistory
chromiumDownload
chromiumCreditCard
chromiumLocalStorage
chromiumExtension
yandexPassword
yandexCreditCard
firefoxKey4
firefoxPassword
firefoxCookie
firefoxBookmark
firefoxHistory
firefoxDownload
firefoxCreditCard
firefoxLocalStorage
firefoxExtension
)
func (i item) DefaultName() string {
switch i {
case chromiumKey:
return consts.ChromiumKey
case chromiumPassword:
return consts.ChromiumPassword
case chromiumCookie:
return consts.ChromiumCookie
case chromiumBookmark:
return consts.ChromiumBookmark
case chromiumDownload:
return consts.ChromiumDownload
case chromiumLocalStorage:
return consts.ChromiumLocalStorage
case chromiumCreditCard:
return consts.ChromiumCredit
case chromiumExtension:
return consts.UnknownItem
case chromiumHistory:
return consts.ChromiumHistory
case yandexPassword:
return consts.YandexPassword
case yandexCreditCard:
return consts.YandexCredit
case firefoxKey4:
return consts.FirefoxKey4
case firefoxPassword:
return consts.FirefoxPassword
case firefoxCookie:
return consts.FirefoxCookie
case firefoxBookmark:
return consts.FirefoxData
case firefoxDownload:
return consts.FirefoxData
case firefoxLocalStorage:
return consts.UnsupportedItem
case firefoxCreditCard:
return consts.UnsupportedItem
case firefoxHistory:
return consts.FirefoxData
case firefoxExtension:
return consts.UnsupportedItem
default:
return consts.UnknownItem
}
}
func (i item) FileName() string {
switch i {
case chromiumKey:
return consts.ChromiumKeyFilename
case chromiumPassword:
return consts.ChromiumPasswordFilename
case chromiumCookie:
return consts.ChromiumCookieFilename
case chromiumBookmark:
return consts.ChromiumBookmarkFilename
case chromiumDownload:
return consts.ChromiumDownloadFilename
case chromiumLocalStorage:
return consts.ChromiumLocalStorageFilename
case chromiumCreditCard:
return consts.ChromiumCreditFilename
case chromiumHistory:
return consts.ChromiumHistoryFilename
case chromiumExtension:
return consts.UnsupportedItem
case yandexPassword:
return consts.ChromiumPasswordFilename
case yandexCreditCard:
return consts.ChromiumCreditFilename
case firefoxKey4:
return consts.FirefoxKey4Filename
case firefoxPassword:
return consts.FirefoxPasswordFilename
case firefoxCookie:
return consts.FirefoxCookieFilename
case firefoxBookmark:
return consts.FirefoxBookmarkFilename
case firefoxDownload:
return consts.FirefoxDownloadFilename
case firefoxLocalStorage:
return consts.UnsupportedItem
case firefoxCreditCard:
return consts.UnsupportedItem
case firefoxHistory:
return consts.FirefoxHistoryFilename
case firefoxExtension:
return consts.UnsupportedItem
default:
return consts.UnknownItem
}
}
func (i item) NewBrowsingData() data2.BrowsingData {
switch i {
case chromiumKey:
return nil
case chromiumPassword:
return &data2.ChromiumPassword{}
case chromiumCookie:
return &data2.ChromiumCookie{}
case chromiumBookmark:
return &data2.ChromiumBookmark{}
case chromiumDownload:
return &data2.ChromiumDownload{}
case chromiumLocalStorage:
return nil
case chromiumCreditCard:
return &data2.ChromiumCreditCard{}
case chromiumExtension:
return nil
case chromiumHistory:
return &data2.ChromiumHistory{}
case yandexPassword:
return &data2.ChromiumPassword{}
case yandexCreditCard:
return &data2.ChromiumCreditCard{}
case firefoxPassword:
return &data2.FirefoxPassword{}
case firefoxCookie:
return &data2.FirefoxCookie{}
case firefoxBookmark:
return &data2.FirefoxBookmark{}
case firefoxDownload:
return &data2.FirefoxDownload{}
case firefoxHistory:
return &data2.FirefoxHistory{}
default:
return nil
}
}
+47
View File
@@ -0,0 +1,47 @@
package item
// item's default filename
const (
FileChromiumKey = "Local State"
FileChromiumCredit = "Web Data"
FileChromiumPassword = "Login Data"
FileChromiumHistory = "History"
FileChromiumDownload = "History"
FileChromiumCookie = "Cookies"
FileChromiumBookmark = "Bookmarks"
FileChromiumLocalStorage = "chromiumLocalStorage"
FileYandexPassword = "Ya PassMan Data"
FileYandexCredit = "Ya Credit Cards"
FileFirefoxKey4 = "key4.db"
FileFirefoxCookie = "cookies.sqlite"
FileFirefoxPassword = "logins.json"
FileFirefoxData = "places.sqlite"
FileUnknownItem = "unknown item"
FileUnsupportedItem = "unsupported item"
)
// item's renamed filename
const (
TempChromiumKey = "TempChromiumKey"
TempChromiumCredit = "TempChromiumCredit"
TempChromiumPassword = "TempChromiumPassword"
TempChromiumHistory = "TempChromiumHistory"
TempChromiumDownload = "TempChromiumDownload"
TempChromiumCookie = "TempChromiumCookie"
TempChromiumBookmark = "TempChromiumBookmark"
TempChromiumLocalStorage = "TempChromiumLocalStorage"
TempYandexPassword = "TempYandexPassword"
TempYandexCredit = "TempYandexCredit"
TempFirefoxKey4 = "TempFirefoxKey4"
TempFirefoxCookie = "TempFirefoxCookie"
TempFirefoxPassword = "TempFirefoxPassword"
TempFirefoxDownload = "TempFirefoxDownload"
TempFirefoxHistory = "TempFirefoxHistory"
TempFirefoxBookmark = "TempFirefoxBookmark"
TempFirefoxData = "TempFirefoxData"
)
+165
View File
@@ -0,0 +1,165 @@
package item
import (
data2 "hack-browser-data/internal/browser/data"
)
type Item int
const (
ItemChromiumKey Item = iota
ItemChromiumPassword
ItemChromiumCookie
ItemChromiumBookmark
ItemChromiumHistory
ItemChromiumDownload
ItemChromiumCreditCard
ItemChromiumLocalStorage
ItemChromiumExtension
ItemYandexPassword
ItemYandexCreditCard
ItemFirefoxKey4
ItemFirefoxPassword
ItemFirefoxCookie
ItemFirefoxBookmark
ItemFirefoxHistory
ItemFirefoxDownload
ItemFirefoxCreditCard
ItemFirefoxLocalStorage
ItemFirefoxExtension
)
func (i Item) DefaultName() string {
switch i {
case ItemChromiumKey:
return ChromiumKey
case ItemChromiumPassword:
return ChromiumPassword
case ItemChromiumCookie:
return ChromiumCookie
case ItemChromiumBookmark:
return ChromiumBookmark
case ItemChromiumDownload:
return ChromiumDownload
case ItemChromiumLocalStorage:
return ChromiumLocalStorage
case ItemChromiumCreditCard:
return ChromiumCredit
case ItemChromiumExtension:
return UnknownItem
case ItemChromiumHistory:
return ChromiumHistory
case ItemYandexPassword:
return YandexPassword
case ItemYandexCreditCard:
return YandexCredit
case ItemFirefoxKey4:
return FirefoxKey4
case ItemFirefoxPassword:
return FirefoxPassword
case ItemFirefoxCookie:
return FirefoxCookie
case ItemFirefoxBookmark:
return FirefoxData
case ItemFirefoxDownload:
return FirefoxData
case ItemFirefoxLocalStorage:
return UnsupportedItem
case ItemFirefoxCreditCard:
return UnsupportedItem
case ItemFirefoxHistory:
return FirefoxData
case ItemFirefoxExtension:
return UnsupportedItem
default:
return UnknownItem
}
}
func (i Item) FileName() string {
switch i {
case chromiumKey:
return TempChromiumKey
case chromiumPassword:
return TempChromiumPassword
case chromiumCookie:
return ChromiumCookieFilename
case chromiumBookmark:
return ChromiumBookmarkFilename
case chromiumDownload:
return ChromiumDownloadFilename
case chromiumLocalStorage:
return ChromiumLocalStorageFilename
case chromiumCreditCard:
return TempChromiumCredit
case chromiumHistory:
return TempChromiumHistory
case chromiumExtension:
return UnsupportedItem
case yandexPassword:
return TempChromiumPassword
case yandexCreditCard:
return TempChromiumCredit
case firefoxKey4:
return FirefoxKey4Filename
case firefoxPassword:
return FirefoxPasswordFilename
case firefoxCookie:
return FirefoxCookieFilename
case firefoxBookmark:
return FirefoxBookmarkFilename
case firefoxDownload:
return FirefoxDownloadFilename
case firefoxLocalStorage:
return UnsupportedItem
case firefoxCreditCard:
return UnsupportedItem
case firefoxHistory:
return FirefoxHistoryFilename
case firefoxExtension:
return UnsupportedItem
default:
return UnknownItem
}
}
func (i Item) NewBrowsingData() data2.BrowsingData {
switch i {
case chromiumKey:
return nil
case chromiumPassword:
return &data2.ChromiumPassword{}
case chromiumCookie:
return &data2.ChromiumCookie{}
case chromiumBookmark:
return &data2.ChromiumBookmark{}
case chromiumDownload:
return &data2.ChromiumDownload{}
case chromiumLocalStorage:
return nil
case chromiumCreditCard:
return &data2.ChromiumCreditCard{}
case chromiumExtension:
return nil
case chromiumHistory:
return &data2.ChromiumHistory{}
case yandexPassword:
return &data2.ChromiumPassword{}
case yandexCreditCard:
return &data2.ChromiumCreditCard{}
case firefoxPassword:
return &data2.FirefoxPassword{}
case firefoxCookie:
return &data2.FirefoxCookie{}
case firefoxBookmark:
return &data2.FirefoxBookmark{}
case firefoxDownload:
return &data2.FirefoxDownload{}
case firefoxHistory:
return &data2.FirefoxHistory{}
default:
return nil
}
}
+1
View File
@@ -0,0 +1 @@
package item