Как конвертировать Chrome истории браузера Sqlite Timestamps с Osquery - PullRequest
0 голосов
/ 14 апреля 2020

Как я понимаю, браузер Chrome использует формат времени WebKit для отметок времени в базе данных истории браузера. Время WebKit выражается в миллисекундах с января 1601 г. Обычный ответ - использовать приведенную ниже формулу для преобразования из WebKit в удобочитаемое местное время:

SELECT datetime((time/1000000)-11644473600, 'unixepoch', 'localtime') AS time FROM table;

Источники: https://linuxsleuthing.blogspot.com/2011/06/decoding-google-chrome-timestamps-in.html В каком формате находится Chrome? метки времени?

Я пытаюсь преобразовать метки времени при сборе данных с помощью Osquery, используя приведенную ниже конфигурацию.

"chrome_browser_history" : {
        "query" : "SELECT urls.id id, urls.url url, urls.title title, urls.visit_count visit_count, urls.typed_count typed_count, urls.last_visit_time last_visit_time, urls.hidden hidden, visits.visit_time visit_time, visits.from_visit from_visit, visits.visit_duration visit_duration, visits.transition transition, visit_source.source source FROM urls JOIN visits ON urls.id = visits.url LEFT JOIN visit_source ON visits.id = visit_source.id",
        "path" : "/Users/%/Library/Application Support/Google/Chrome/%/History",
        "columns" : ["path", "id", "url", "title", "visit_count", "typed_count", "last_visit_time", "hidden", "visit_time", "visit_duration", "source"],
        "platform" : "darwin"
    }

"schedule": {
    "chrome_history": {
    "query": "select distinct url,datetime((last_visit_time/1000000)-11644473600, 'unixepoch', 'localtime') AS time from chrome_browser_history where url like '%nhl.com%';",
    "interval": 10
    }
}

Полученные события имеют метки времени из года 1600:

"time":"1600-12-31 18:46:16"

Если я изменю конфигурацию для извлечения необработанной временной метки без преобразования, я получу такие штампы, как следующие:

"last_visit_time":"1793021894"

Из того, что я прочитал о времени WebKit, это выражается в 17-ди git числах, что явно не то, что я вижу. Так что я не уверен, является ли это вопросом Osquery, Chrome, или вопросом запроса на данный момент. Вся помощь и понимание приветствуются!

Ответы [ 3 ]

1 голос
/ 14 апреля 2020

Попробуйте:

SELECT datetime(last_visit_time/1000000-11644473600, \"unixepoch\") as last_visited, url, title, visit_count FROM urls;

Это из того, что я написал некоторое время, go - Однострочник, который запускает osqueryi с ​​конфигурацией AT C для чтения в chrome файл истории, экспортируйте как json и сверните json до конечной точки API

https://gist.github.com/defensivedepth/6b79581a9739fa316b6f6d9f97baab1f

0 голосов
/ 14 апреля 2020

решаемая. Преобразование даты и времени должно происходить в запросе определения таблицы. Т.е. запрос, определенный под «chrome_browser_history».

"chrome_browser_history" : {
        "query" : "SELECT urls.id id, urls.url url, urls.title title, urls.visit_count visit_count, urls.typed_count typed_count, datetime(urls.last_visit_time/1000000-11644473600, 'unixepoch') last_visit_time, urls.hidden hidden, visits.visit_time visit_time, visits.from_visit from_visit, visits.visit_duration visit_duration, visits.transition transition, visit_source.source source FROM urls JOIN visits ON urls.id = visits.url LEFT JOIN visit_source ON visits.id = visit_source.id",
        "path" : "/Users/%/Library/Application Support/Google/Chrome/%/History",
        "columns" : ["path", "id", "url", "title", "visit_count", "typed_count", "last_visit_time", "hidden", "visit_time", "visit_duration", "source"],
        "platform" : "darwin"
    }

"schedule": {
    "chrome_history": {
    "query": "select distinct url,last_visit_time from chrome_browser_history where url like '%nhl.com%';",
    "interval": 10
    }
}

Попытка выполнить преобразование в запланированном запросе osquery (как я пытался раньше) не будет работать. т.е.:

"schedule": {
"chrome_history": {
"query": "select distinct url,datetime((last_visit_time/1000000)-11644473600, 'unixepoch', 'localtime') AS time from chrome_browser_history where url like '%nhl.com%';",
"interval": 10
}

}

0 голосов
/ 14 апреля 2020

То, с чем вы работаете, довольно прямолинейно. Поэтому я бы начал с отладки внутри sqlit.

Сначала вы должны убедиться, что данные соответствуют вашим ожиданиям. На моей машине я вижу:

$ cp   Library/Application\ Support/Google/Chrome/Profile\ 1/History /tmp/
$ sqlite3 /tmp/History "select last_visit_time from urls limit 2"
13231352154237916
13231352154237916

Во-вторых, я бы проверил основную математику:

sqlite> select datetime(last_visit_time/1000000-11644473600, "unixepoch") from urls limit 2;
2020-04-14 15:35:54
2020-04-14 15:35:54

Было бы проще протестировать ваш фрагмент конфигурации, если бы вы включили его как текст, который мы можно копировать / вставлять.

...