mirror of
https://github.com/moonD4rk/HackBrowserData.git
synced 2026-05-19 18:58:03 +02:00
feat: rename item temp filename
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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{}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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,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
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user