@ -2,11 +2,15 @@ package browingdata
import (
"path"
"time"
"hack-browser-data/internal/browingdata/bookmark"
"hack-browser-data/internal/browingdata/cookie"
"hack-browser-data/internal/browingdata/creditcard"
"hack-browser-data/internal/browingdata/download"
"hack-browser-data/internal/browingdata/history"
"hack-browser-data/internal/browingdata/password"
"hack-browser-data/internal/item"
"hack-browser-data/internal/log"
"hack-browser-data/internal/outputter"
"hack-browser-data/internal/utils/fileutil"
)
@ -38,18 +42,18 @@ func (d *Data) Recovery(masterKey []byte) error {
return nil
}
func ( d * Data ) Output ( dir , browserName , output string ) {
outputter := outputter . New ( output )
func ( d * Data ) Output ( dir , browserName , flag string ) {
output := NewOutPutter ( flag )
for _ , source := range d . Sources {
filename := fileutil . Filename ( browserName , source . Name ( ) , outputter . Ext ( ) )
filename := fileutil . Filename ( browserName , source . Name ( ) , output . Ext ( ) )
f , err := outputter . CreateFile ( dir , filename )
f , err := output . CreateFile ( dir , filename )
if err != nil {
log . Error ( err )
}
if err := outputter . Write ( source , f ) ; err != nil {
if err := output . Write ( source , f ) ; err != nil {
log . Error ( err )
}
log . Noticef ( "output to file %s success" , path . Join ( dir , filename ) )
@ -60,94 +64,31 @@ func (d *Data) addSource(Sources []item.Item) {
for _ , source := range Sources {
switch source {
case item . ChromiumPassword :
d . Sources [ source ] = & ChromiumPassword { }
d . Sources [ source ] = & password . ChromiumPassword { }
case item . ChromiumCookie :
d . Sources [ source ] = & ChromiumCookie { }
d . Sources [ source ] = & cookie . ChromiumCookie { }
case item . ChromiumBookmark :
d . Sources [ source ] = & ChromiumBookmark { }
d . Sources [ source ] = & bookmark . ChromiumBookmark { }
case item . ChromiumHistory :
d . Sources [ source ] = & ChromiumHistory { }
d . Sources [ source ] = & history . ChromiumHistory { }
case item . ChromiumDownload :
d . Sources [ source ] = & ChromiumDownload { }
d . Sources [ source ] = & download . ChromiumDownload { }
case item . ChromiumCreditCard :
d . Sources [ source ] = & ChromiumCreditCard { }
d . Sources [ source ] = & creditcard . ChromiumCreditCard { }
case item . YandexPassword :
d . Sources [ source ] = & YandexPassword { }
d . Sources [ source ] = & password . YandexPassword { }
case item . YandexCreditCard :
d . Sources [ source ] = & YandexCreditCard { }
d . Sources [ source ] = & creditcard . YandexCreditCard { }
case item . FirefoxPassword :
d . Sources [ source ] = & FirefoxPassword { }
d . Sources [ source ] = & password . FirefoxPassword { }
case item . FirefoxCookie :
d . Sources [ source ] = & FirefoxCookie { }
d . Sources [ source ] = & cookie . FirefoxCookie { }
case item . FirefoxBookmark :
d . Sources [ source ] = & FirefoxBookmark { }
d . Sources [ source ] = & bookmark . FirefoxBookmark { }
case item . FirefoxHistory :
d . Sources [ source ] = & FirefoxHistory { }
d . Sources [ source ] = & history . FirefoxHistory { }
case item . FirefoxDownload :
d . Sources [ source ] = & FirefoxDownload { }
d . Sources [ source ] = & download . FirefoxDownload { }
}
}
}
const (
queryChromiumCredit = ` SELECT guid, name_on_card, expiration_month, expiration_year, card_number_encrypted, billing_address_id, nickname FROM credit_cards `
queryChromiumLogin = ` SELECT origin_url, username_value, password_value, date_created FROM logins `
queryYandexLogin = ` SELECT action_url, username_value, password_value, date_created FROM logins `
queryChromiumHistory = ` SELECT url, title, visit_count, last_visit_time FROM urls `
queryChromiumDownload = ` SELECT target_path, tab_url, total_bytes, start_time, end_time, mime_type FROM downloads `
queryChromiumCookie = ` SELECT name, encrypted_value, host_key, path, creation_utc, expires_utc, is_secure, is_httponly, has_expires, is_persistent FROM cookies `
queryFirefoxHistory = ` SELECT id, url, last_visit_date, title, visit_count FROM moz_places where title not null `
queryFirefoxDownload = ` SELECT place_id, GROUP_CONCAT(content), url, dateAdded FROM (SELECT * FROM moz_annos INNER JOIN moz_places ON moz_annos.place_id=moz_places.id) t GROUP BY place_id `
queryFirefoxBookMark = ` SELECT id, url, type, dateAdded, title FROM (SELECT * FROM moz_bookmarks INNER JOIN moz_places ON moz_bookmarks.fk=moz_places.id) `
queryFirefoxCookie = ` SELECT name, value, host, path, creationTime, expiry, isSecure, isHttpOnly FROM moz_cookies `
queryMetaData = ` SELECT item1, item2 FROM metaData WHERE id = 'password' `
queryNssPrivate = ` SELECT a11, a102 from nssPrivate `
closeJournalMode = ` PRAGMA journal_mode=off `
)
type (
loginData struct {
UserName string
encryptPass [ ] byte
encryptUser [ ] byte
Password string
LoginUrl string
CreateDate time . Time
}
cookie struct {
Host string
Path string
KeyName string
encryptValue [ ] byte
Value string
IsSecure bool
IsHTTPOnly bool
HasExpire bool
IsPersistent bool
CreateDate time . Time
ExpireDate time . Time
}
history struct {
Title string
Url string
VisitCount int
LastVisitTime time . Time
}
download struct {
TargetPath string
Url string
TotalBytes int64
StartTime time . Time
EndTime time . Time
MimeType string
}
card struct {
GUID string
Name string
ExpirationYear string
ExpirationMonth string
CardNumber string
Address string
NickName string
}
)