feat: rename item temp filename

This commit is contained in:
ᴍᴏᴏɴD4ʀᴋ
2022-04-11 15:53:19 +08:00
parent 899793d293
commit 8b8cab4393
16 changed files with 413 additions and 421 deletions
+8 -3
View File
@@ -3,6 +3,7 @@ package browingdata
import (
"database/sql"
"fmt"
"os"
"sort"
"time"
@@ -11,6 +12,8 @@ import (
"hack-browser-data/internal/item"
"hack-browser-data/internal/utils"
"hack-browser-data/internal/utils/fileutil"
_ "github.com/mattn/go-sqlite3"
)
type ChromiumBookmark []bookmark
@@ -24,10 +27,11 @@ type bookmark struct {
}
func (c *ChromiumBookmark) Parse(masterKey []byte) error {
bookmarks, err := fileutil.ReadFile("bookmark")
bookmarks, err := fileutil.ReadFile(item.TempChromiumBookmark)
if err != nil {
return err
}
defer os.Remove(item.TempChromiumBookmark)
r := gjson.Parse(bookmarks)
if r.Exists() {
roots := r.Get("roots")
@@ -84,12 +88,13 @@ func (f *FirefoxBookmark) Parse(masterKey []byte) error {
keyDB *sql.DB
bookmarkRows *sql.Rows
)
keyDB, err = sql.Open("sqlite3", item.FirefoxBookmarkFilename)
keyDB, err = sql.Open("sqlite3", item.TempFirefoxBookmark)
if err != nil {
return err
}
_, err = keyDB.Exec(closeJournalMode)
defer os.RemoveAll(item.TempFirefoxBookmark)
defer keyDB.Close()
_, err = keyDB.Exec(closeJournalMode)
bookmarkRows, err = keyDB.Query(queryFirefoxBookMark)
if err != nil {
+28 -18
View File
@@ -6,8 +6,8 @@ import (
"hack-browser-data/internal/item"
)
type BrowsingData struct {
sources map[item.Item]Source
type Data struct {
Sources map[item.Item]Source
}
type Source interface {
@@ -16,39 +16,49 @@ type Source interface {
Name() string
}
func New(sources []item.Item) *BrowsingData {
bd := &BrowsingData{
sources: make(map[item.Item]Source),
func New(sources []item.Item) *Data {
bd := &Data{
Sources: make(map[item.Item]Source),
}
bd.addSource(sources)
return bd
}
func (b *BrowsingData) addSource(sources []item.Item) {
for _, source := range sources {
func (d *Data) Recovery(masterKey []byte) error {
for _, source := range d.Sources {
if err := source.Parse(masterKey); err != nil {
panic(err)
}
}
return nil
}
func (d *Data) addSource(Sources []item.Item) {
for _, source := range Sources {
switch source {
case item.ChromiumPassword:
b.sources[source] = &ChromiumPassword{}
d.Sources[source] = &ChromiumPassword{}
case item.ChromiumCookie:
b.sources[source] = &ChromiumCookie{}
d.Sources[source] = &ChromiumCookie{}
case item.ChromiumBookmark:
b.sources[source] = &ChromiumBookmark{}
d.Sources[source] = &ChromiumBookmark{}
case item.ChromiumHistory:
b.sources[source] = &ChromiumHistory{}
d.Sources[source] = &ChromiumHistory{}
case item.ChromiumDownload:
b.sources[source] = &ChromiumDownload{}
d.Sources[source] = &ChromiumDownload{}
case item.ChromiumCreditCard:
b.sources[source] = &ChromiumCreditCard{}
d.Sources[source] = &ChromiumCreditCard{}
case item.FirefoxPassword:
b.sources[source] = &FirefoxPassword{}
d.Sources[source] = &FirefoxPassword{}
case item.FirefoxCookie:
b.sources[source] = &FirefoxCookie{}
d.Sources[source] = &FirefoxCookie{}
case item.FirefoxBookmark:
b.sources[source] = &FirefoxBookmark{}
d.Sources[source] = &FirefoxBookmark{}
case item.FirefoxHistory:
b.sources[source] = &FirefoxHistory{}
d.Sources[source] = &FirefoxHistory{}
case item.FirefoxDownload:
b.sources[source] = &FirefoxDownload{}
d.Sources[source] = &FirefoxDownload{}
}
}
}
+6 -5
View File
@@ -3,23 +3,24 @@ package browingdata
import (
"database/sql"
"fmt"
"os"
"sort"
"hack-browser-data/internal/browser/item"
_ "github.com/mattn/go-sqlite3"
"hack-browser-data/internal/decrypter"
"hack-browser-data/internal/item"
"hack-browser-data/internal/utils"
_ "github.com/mattn/go-sqlite3"
)
type ChromiumCookie []cookie
func (c *ChromiumCookie) Parse(masterKey []byte) error {
cookieDB, err := sql.Open("sqlite3", item.ChromiumCookieFilename)
cookieDB, err := sql.Open("sqlite3", item.TempChromiumCookie)
if err != nil {
return err
}
defer os.Remove(item.TempChromiumCookie)
defer cookieDB.Close()
rows, err := cookieDB.Query(queryChromiumCookie)
if err != nil {
@@ -79,7 +80,7 @@ func (c *ChromiumCookie) Name() string {
type FirefoxCookie []cookie
func (f *FirefoxCookie) Parse(masterKey []byte) error {
cookieDB, err := sql.Open("sqlite3", item.FirefoxCookieFilename)
cookieDB, err := sql.Open("sqlite3", item.TempFirefoxCookie)
if err != nil {
return err
}
+2 -3
View File
@@ -6,15 +6,14 @@ import (
_ "github.com/mattn/go-sqlite3"
"hack-browser-data/internal/browser/item"
"hack-browser-data/internal/decrypter"
"hack-browser-data/internal/item"
)
type ChromiumCreditCard []card
func (c *ChromiumCreditCard) Parse(masterKey []byte) error {
creditDB, err := sql.Open("sqlite3", item.TempChromiumCredit)
creditDB, err := sql.Open("sqlite3", item.TempChromiumCreditCard)
if err != nil {
return err
}
+4 -6
View File
@@ -6,19 +6,17 @@ import (
"sort"
"strings"
"github.com/tidwall/gjson"
"hack-browser-data/internal/browser/item"
"hack-browser-data/internal/item"
"hack-browser-data/internal/utils"
_ "github.com/mattn/go-sqlite3"
"github.com/tidwall/gjson"
)
type ChromiumDownload []download
func (c *ChromiumDownload) Parse(masterKey []byte) error {
historyDB, err := sql.Open("sqlite3", item.ChromiumDownloadFilename)
historyDB, err := sql.Open("sqlite3", item.TempChromiumDownload)
if err != nil {
return err
}
@@ -64,7 +62,7 @@ func (f *FirefoxDownload) Parse(masterKey []byte) error {
keyDB *sql.DB
downloadRows *sql.Rows
)
keyDB, err = sql.Open("sqlite3", item.FirefoxDownloadFilename)
keyDB, err = sql.Open("sqlite3", item.TempFirefoxDownload)
if err != nil {
return err
}
+5 -6
View File
@@ -5,17 +5,16 @@ import (
"fmt"
"sort"
"hack-browser-data/internal/browser/item"
"hack-browser-data/internal/utils"
_ "github.com/mattn/go-sqlite3"
"hack-browser-data/internal/item"
"hack-browser-data/internal/utils"
)
type ChromiumHistory []history
func (c *ChromiumHistory) Parse(masterKey []byte) error {
historyDB, err := sql.Open("sqlite3", item.ChromiumHistoryFilename)
historyDB, err := sql.Open("sqlite3", item.TempChromiumHistory)
if err != nil {
return err
}
@@ -61,7 +60,7 @@ func (f *FirefoxHistory) Parse(masterKey []byte) error {
keyDB *sql.DB
historyRows *sql.Rows
)
keyDB, err = sql.Open("sqlite3", item.FirefoxHistoryFilename)
keyDB, err = sql.Open("sqlite3", item.TempFirefoxHistory)
if err != nil {
return err
}
+14 -15
View File
@@ -9,13 +9,12 @@ import (
"sort"
"time"
"hack-browser-data/internal/browser/item"
decrypter2 "hack-browser-data/internal/decrypter"
"hack-browser-data/internal/utils"
_ "github.com/mattn/go-sqlite3"
"github.com/tidwall/gjson"
"hack-browser-data/internal/decrypter"
"hack-browser-data/internal/item"
"hack-browser-data/internal/utils"
)
type ChromiumPassword []loginData
@@ -48,12 +47,12 @@ func (c *ChromiumPassword) Parse(masterKey []byte) error {
}
if len(pwd) > 0 {
if masterKey == nil {
password, err = decrypter2.DPApi(pwd)
password, err = decrypter.DPApi(pwd)
if err != nil {
fmt.Println(err)
}
} else {
password, err = decrypter2.ChromePass(masterKey, pwd)
password, err = decrypter.ChromePass(masterKey, pwd)
if err != nil {
fmt.Println(err)
}
@@ -81,11 +80,11 @@ func (c *ChromiumPassword) Name() string {
type FirefoxPassword []loginData
func (f *FirefoxPassword) Parse(masterKey []byte) error {
globalSalt, metaBytes, nssA11, nssA102, err := getFirefoxDecryptKey(item.FirefoxKey4Filename)
globalSalt, metaBytes, nssA11, nssA102, err := getFirefoxDecryptKey(item.TempFirefoxKey4)
if err != nil {
return err
}
metaPBE, err := decrypter2.NewASN1PBE(metaBytes)
metaPBE, err := decrypter.NewASN1PBE(metaBytes)
if err != nil {
return err
}
@@ -98,7 +97,7 @@ func (f *FirefoxPassword) Parse(masterKey []byte) error {
if bytes.Contains(k, []byte("password-check")) {
m := bytes.Compare(nssA102, keyLin)
if m == 0 {
nssPBE, err := decrypter2.NewASN1PBE(nssA11)
nssPBE, err := decrypter.NewASN1PBE(nssA11)
if err != nil {
return err
}
@@ -107,16 +106,16 @@ func (f *FirefoxPassword) Parse(masterKey []byte) error {
if err != nil {
return err
}
allLogin, err := getFirefoxLoginData(item.FirefoxPasswordFilename)
allLogin, err := getFirefoxLoginData(item.TempFirefoxPassword)
if err != nil {
return err
}
for _, v := range allLogin {
userPBE, err := decrypter2.NewASN1PBE(v.encryptUser)
userPBE, err := decrypter.NewASN1PBE(v.encryptUser)
if err != nil {
return err
}
pwdPBE, err := decrypter2.NewASN1PBE(v.encryptPass)
pwdPBE, err := decrypter.NewASN1PBE(v.encryptPass)
if err != nil {
return err
}
@@ -130,8 +129,8 @@ func (f *FirefoxPassword) Parse(masterKey []byte) error {
}
*f = append(*f, loginData{
LoginUrl: v.LoginUrl,
UserName: string(decrypter2.PKCS5UnPadding(user)),
Password: string(decrypter2.PKCS5UnPadding(pwd)),
UserName: string(decrypter.PKCS5UnPadding(user)),
Password: string(decrypter.PKCS5UnPadding(pwd)),
CreateDate: v.CreateDate,
})
}