LEFT | RIGHT |
1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
2 """Parser for Android WebviewCache databases.""" | 2 """Parser for Android WebviewCache databases.""" |
3 | 3 |
4 from dfdatetime import java_time as dfdatetime_java_time | 4 from dfdatetime import java_time as dfdatetime_java_time |
5 | 5 |
6 from plaso.containers import events | 6 from plaso.containers import events |
7 from plaso.containers import time_events | 7 from plaso.containers import time_events |
8 from plaso.lib import eventdata | 8 from plaso.lib import eventdata |
9 from plaso.parsers import sqlite | 9 from plaso.parsers import sqlite |
10 from plaso.parsers.sqlite_plugins import interface | 10 from plaso.parsers.sqlite_plugins import interface |
(...skipping 21 matching lines...) Expand all Loading... |
32 | 32 |
33 NAME = u'android_webviewcache' | 33 NAME = u'android_webviewcache' |
34 DESCRIPTION = u'Parser for Android WebViewCache databases' | 34 DESCRIPTION = u'Parser for Android WebViewCache databases' |
35 | 35 |
36 REQUIRED_TABLES = frozenset([u'android_metadata', u'cache']) | 36 REQUIRED_TABLES = frozenset([u'android_metadata', u'cache']) |
37 | 37 |
38 QUERIES = frozenset([ | 38 QUERIES = frozenset([ |
39 (u'SELECT url, contentlength, expires, lastmodify FROM cache', | 39 (u'SELECT url, contentlength, expires, lastmodify FROM cache', |
40 u'ParseRow')]) | 40 u'ParseRow')]) |
41 | 41 |
42 SCHEMAS = [ | 42 SCHEMAS = [{ |
43 {u'android_metadata': | 43 u'android_metadata': ( |
44 u'CREATE TABLE android_metadata (locale TEXT)', | 44 u'CREATE TABLE android_metadata (locale TEXT)'), |
45 u'cache': | 45 u'cache': ( |
46 u'CREATE TABLE cache (_id INTEGER PRIMARY KEY, url TEXT, filepath ' | 46 u'CREATE TABLE cache (_id INTEGER PRIMARY KEY, url TEXT, filepath ' |
47 u'TEXT, lastmodify TEXT, etag TEXT, expires INTEGER, expiresstring ' | 47 u'TEXT, lastmodify TEXT, etag TEXT, expires INTEGER, expiresstring ' |
48 u'TEXT, mimetype TEXT, encoding TEXT,httpstatus INTEGER, location ' | 48 u'TEXT, mimetype TEXT, encoding TEXT, httpstatus INTEGER, location ' |
49 u'TEXT, contentlength INTEGER, contentdisposition TEXT, UNIQUE (url) ' | 49 u'TEXT, contentlength INTEGER, contentdisposition TEXT, UNIQUE (url) ' |
50 u'ON CONFLICT REPLACE)'}] | 50 u'ON CONFLICT REPLACE)')}] |
51 | 51 |
52 def ParseRow(self, parser_mediator, row, query=None, **unused_kwargs): | 52 def ParseRow(self, parser_mediator, row, query=None, **unused_kwargs): |
53 """Parses a row from the database. | 53 """Parses a row from the database. |
54 | 54 |
55 Args: | 55 Args: |
56 parser_mediator (ParserMediator): mediates interactions between parsers | 56 parser_mediator (ParserMediator): mediates interactions between parsers |
57 and other components, such as storage and dfvfs. | 57 and other components, such as storage and dfvfs. |
58 row (sqlite3.Row): row. | 58 row (sqlite3.Row): row. |
59 query (Optional[str]): query. | 59 query (Optional[str]): query. |
60 """ | 60 """ |
(...skipping 12 matching lines...) Expand all Loading... |
73 parser_mediator.ProduceEventWithEventData(event, event_data) | 73 parser_mediator.ProduceEventWithEventData(event, event_data) |
74 | 74 |
75 if row['lastmodify'] is not None: | 75 if row['lastmodify'] is not None: |
76 date_time = dfdatetime_java_time.JavaTime(timestamp=row['lastmodify']) | 76 date_time = dfdatetime_java_time.JavaTime(timestamp=row['lastmodify']) |
77 event = time_events.DateTimeValuesEvent( | 77 event = time_events.DateTimeValuesEvent( |
78 date_time, eventdata.EventTimestamp.MODIFICATION_TIME) | 78 date_time, eventdata.EventTimestamp.MODIFICATION_TIME) |
79 parser_mediator.ProduceEventWithEventData(event, event_data) | 79 parser_mediator.ProduceEventWithEventData(event, event_data) |
80 | 80 |
81 | 81 |
82 sqlite.SQLiteParser.RegisterPlugin(AndroidWebViewCachePlugin) | 82 sqlite.SQLiteParser.RegisterPlugin(AndroidWebViewCachePlugin) |
LEFT | RIGHT |