parent
88fe9c96db
commit
4d444891ab
@ -1 +0,0 @@ |
|||||||
package hackbrowserdata |
|
@ -0,0 +1 @@ |
|||||||
|
package browser |
@ -0,0 +1,98 @@ |
|||||||
|
package browser |
||||||
|
|
||||||
|
import ( |
||||||
|
"encoding/base64" |
||||||
|
"errors" |
||||||
|
|
||||||
|
"github.com/tidwall/gjson" |
||||||
|
|
||||||
|
"hack-browser-data/pkg/browser/consts" |
||||||
|
"hack-browser-data/pkg/decrypter" |
||||||
|
"hack-browser-data/utils" |
||||||
|
) |
||||||
|
|
||||||
|
var ( |
||||||
|
chromiumList = map[string]struct { |
||||||
|
browserInfo *browserInfo |
||||||
|
items []item |
||||||
|
}{ |
||||||
|
"chrome": { |
||||||
|
browserInfo: chromeInfo, |
||||||
|
items: defaultChromiumItems, |
||||||
|
}, |
||||||
|
"edge": { |
||||||
|
browserInfo: edgeInfo, |
||||||
|
items: defaultChromiumItems, |
||||||
|
}, |
||||||
|
"yandex": { |
||||||
|
browserInfo: yandexInfo, |
||||||
|
items: defaultYandexItems, |
||||||
|
}, |
||||||
|
} |
||||||
|
firefoxList = map[string]struct { |
||||||
|
browserInfo *browserInfo |
||||||
|
items []item |
||||||
|
}{ |
||||||
|
"firefox": { |
||||||
|
browserInfo: firefoxInfo, |
||||||
|
items: defaultFirefoxItems, |
||||||
|
}, |
||||||
|
} |
||||||
|
) |
||||||
|
|
||||||
|
var ( |
||||||
|
errDecodeMasterKeyFailed = errors.New("decode master key failed") |
||||||
|
) |
||||||
|
|
||||||
|
func (c *chromium) GetMasterKey() ([]byte, error) { |
||||||
|
keyFile, err := utils.ReadFile(consts.ChromiumKeyFilename) |
||||||
|
if err != nil { |
||||||
|
return nil, err |
||||||
|
} |
||||||
|
encryptedKey := gjson.Get(keyFile, "os_crypt.encrypted_key") |
||||||
|
if encryptedKey.Exists() { |
||||||
|
pureKey, err := base64.StdEncoding.DecodeString(encryptedKey.String()) |
||||||
|
if err != nil { |
||||||
|
return nil, errDecodeMasterKeyFailed |
||||||
|
} |
||||||
|
c.browserInfo.masterKey, err = decrypter.DPApi(pureKey[5:]) |
||||||
|
return c.browserInfo.masterKey, err |
||||||
|
} |
||||||
|
return nil, nil |
||||||
|
} |
||||||
|
|
||||||
|
var ( |
||||||
|
chromeInfo = &browserInfo{ |
||||||
|
name: chromeName, |
||||||
|
profilePath: chromeProfilePath, |
||||||
|
} |
||||||
|
edgeInfo = &browserInfo{ |
||||||
|
name: edgeName, |
||||||
|
profilePath: edgeProfilePath, |
||||||
|
} |
||||||
|
yandexInfo = &browserInfo{ |
||||||
|
name: yandexName, |
||||||
|
profilePath: edgeProfilePath, |
||||||
|
} |
||||||
|
firefoxInfo = &browserInfo{ |
||||||
|
name: firefoxName, |
||||||
|
profilePath: firefoxProfilePath, |
||||||
|
} |
||||||
|
) |
||||||
|
|
||||||
|
const ( |
||||||
|
chromeProfilePath = "/AppData/Local/Google/Chrome/User Data/" |
||||||
|
chromeBetaProfilePath = "/AppData/Local/Google/Chrome Beta/User Data/" |
||||||
|
chromiumProfilePath = "/AppData/Local/Chromium/User Data/" |
||||||
|
edgeProfilePath = "/AppData/Local/Microsoft/Edge/User Data/" |
||||||
|
braveProfilePath = "/AppData/Local/BraveSoftware/Brave-Browser/User Data/" |
||||||
|
speed360ProfilePath = "/AppData/Local/360chrome/Chrome/User Data/" |
||||||
|
qqBrowserProfilePath = "/AppData/Local/Tencent/QQBrowser/User Data/" |
||||||
|
operaProfilePath = "/AppData/Roaming/Opera Software/Opera Stable/" |
||||||
|
operaGXProfilePath = "/AppData/Roaming/Opera Software/Opera GX Stable/" |
||||||
|
vivaldiProfilePath = "/AppData/Local/Vivaldi/User Data/Default/" |
||||||
|
coccocProfilePath = "/AppData/Local/CocCoc/Browser/User Data/Default/" |
||||||
|
yandexProfilePath = "/AppData/Local/Yandex/YandexBrowser/User Data/Default" |
||||||
|
|
||||||
|
firefoxProfilePath = "/AppData/Roaming/Mozilla/Firefox/Profiles" |
||||||
|
) |
Loading…
Reference in new issue