LEFT | RIGHT |
1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
2 """Parser for Android WebView databases.""" | 2 """Parser for Android WebView databases.""" |
3 | 3 |
4 from dfdatetime import java_time as dfdatetime_java_time | 4 from dfdatetime import java_time as dfdatetime_java_time |
5 from dfdatetime import semantic_time as dfdatetime_semantic_time | 5 from dfdatetime import semantic_time as dfdatetime_semantic_time |
6 | 6 |
7 from plaso.containers import events | 7 from plaso.containers import events |
8 from plaso.containers import time_events | 8 from plaso.containers import time_events |
9 from plaso.lib import errors | 9 from plaso.lib import errors |
10 from plaso.lib import eventdata | 10 from plaso.lib import eventdata |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 | 46 |
47 NAME = u'android_webview' | 47 NAME = u'android_webview' |
48 DESCRIPTION = u'Parser for Android WebView databases' | 48 DESCRIPTION = u'Parser for Android WebView databases' |
49 | 49 |
50 REQUIRED_TABLES = frozenset([u'android_metadata', u'cookies']) | 50 REQUIRED_TABLES = frozenset([u'android_metadata', u'cookies']) |
51 | 51 |
52 QUERIES = frozenset([ | 52 QUERIES = frozenset([ |
53 (u'SELECT _id, name, value, domain, expires, path, secure FROM cookies', | 53 (u'SELECT _id, name, value, domain, expires, path, secure FROM cookies', |
54 u'ParseCookieRow')]) | 54 u'ParseCookieRow')]) |
55 | 55 |
56 SCHEMAS = [ | 56 SCHEMAS = [{ |
57 {u'android_metadata': | 57 u'android_metadata': ( |
58 u'CREATE TABLE android_metadata (locale TEXT)', | 58 u'CREATE TABLE android_metadata (locale TEXT)'), |
59 u'cookies': | 59 u'cookies': ( |
60 u'CREATE TABLE cookies (_id INTEGER PRIMARY KEY, name TEXT, value ' | 60 u'CREATE TABLE cookies (_id INTEGER PRIMARY KEY, name TEXT, value ' |
61 u'TEXT, domain TEXT, path TEXT, expires INTEGER, secure INTEGER)', | 61 u'TEXT, domain TEXT, path TEXT, expires INTEGER, secure INTEGER)'), |
62 u'formdata': | 62 u'formdata': ( |
63 u'CREATE TABLE formdata (_id INTEGER PRIMARY KEY, urlid INTEGER, name ' | 63 u'CREATE TABLE formdata (_id INTEGER PRIMARY KEY, urlid INTEGER, ' |
64 u'TEXT, value TEXT, UNIQUE (urlid, name, value) ON CONFLICT IGNORE)', | 64 u'name TEXT, value TEXT, UNIQUE (urlid, name, value) ON CONFLICT ' |
65 u'formurl': | 65 u'IGNORE)'), |
66 u'CREATE TABLE formurl (_id INTEGER PRIMARY KEY, url TEXT)', | 66 u'formurl': ( |
67 u'httpauth': | 67 u'CREATE TABLE formurl (_id INTEGER PRIMARY KEY, url TEXT)'), |
68 u'CREATE TABLE httpauth (_id INTEGER PRIMARY KEY, host TEXT, realm ' | 68 u'httpauth': ( |
69 u'TEXT, username TEXT, password TEXT, UNIQUE (host, realm) ON ' | 69 u'CREATE TABLE httpauth (_id INTEGER PRIMARY KEY, host TEXT, realm ' |
70 u'CONFLICT REPLACE)', | 70 u'TEXT, username TEXT, password TEXT, UNIQUE (host, realm) ON ' |
71 u'password': | 71 u'CONFLICT REPLACE)'), |
72 u'CREATE TABLE password (_id INTEGER PRIMARY KEY, host TEXT, username ' | 72 u'password': ( |
73 u'TEXT, password TEXT, UNIQUE (host, username) ON CONFLICT REPLACE)'}] | 73 u'CREATE TABLE password (_id INTEGER PRIMARY KEY, host TEXT, ' |
| 74 u'username TEXT, password TEXT, UNIQUE (host, username) ON CONFLICT ' |
| 75 u'REPLACE)')}] |
74 | 76 |
75 def __init__(self): | 77 def __init__(self): |
76 """Initializes a plugin object.""" | 78 """Initializes a plugin object.""" |
77 super(WebViewPlugin, self).__init__() | 79 super(WebViewPlugin, self).__init__() |
78 self._cookie_plugins = ( | 80 self._cookie_plugins = ( |
79 cookie_plugins_manager.CookiePluginsManager.GetPlugins()) | 81 cookie_plugins_manager.CookiePluginsManager.GetPlugins()) |
80 | 82 |
81 def ParseCookieRow(self, parser_mediator, row, query=None, **unused_kwargs): | 83 def ParseCookieRow(self, parser_mediator, row, query=None, **unused_kwargs): |
82 """Parses a row from the database. | 84 """Parses a row from the database. |
83 | 85 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 for cookie_plugin in self._cookie_plugins: | 137 for cookie_plugin in self._cookie_plugins: |
136 try: | 138 try: |
137 cookie_plugin.UpdateChainAndProcess( | 139 cookie_plugin.UpdateChainAndProcess( |
138 parser_mediator, cookie_name=cookie_name, | 140 parser_mediator, cookie_name=cookie_name, |
139 cookie_data=cookie_value, url=url) | 141 cookie_data=cookie_value, url=url) |
140 except errors.WrongPlugin: | 142 except errors.WrongPlugin: |
141 pass | 143 pass |
142 | 144 |
143 | 145 |
144 sqlite.SQLiteParser.RegisterPlugin(WebViewPlugin) | 146 sqlite.SQLiteParser.RegisterPlugin(WebViewPlugin) |
LEFT | RIGHT |