Merged lasted helper code and updated viber.py to conform

This commit is contained in:
U-BASIS\dsmyda 2019-09-11 16:39:48 -04:00
parent d8397ea595
commit 0580ffdd2f
3 changed files with 45 additions and 27 deletions

View File

@ -17,6 +17,8 @@ See the License for the specific language governing permissions and
limitations under the License.
"""
from ResultSetIterator import ResultSetIterator
from org.sleuthkit.autopsy.coreutils import AppDBParserHelper
from org.sleuthkit.datamodel import Account
class TskCallLogsParser(ResultSetIterator):
"""
@ -32,27 +34,30 @@ class TskCallLogsParser(ResultSetIterator):
def __init__(self, result_set):
super(TskCallLogsParser, self).__init__(result_set)
self.INCOMING_CALL = "Incoming"
self.OUTGOING_CALL = "Outgoing"
self._DEFAULT_STRING = ""
self._DEFAULT_DIRECTION = AppDBParserHelper.CommunicationDirection.UNKNOWN
self._DEFAULT_ADDRESS = Account.Address("","")
self._DEFAULT_CALL_TYPE = AppDBParserHelper.CallMediaType.UNKNOWN
def get_account_name(self):
return self._DEFAULT_STRING
self.INCOMING_CALL = AppDBParserHelper.CommunicationDirection.INCOMING
self.OUTGOING_CALL = AppDBParserHelper.CommunicationDirection.OUTGOING
self.AUDIO_CALL = AppDBParserHelper.CallMediaType.AUDIO
self.VIDEO_CALL = AppDBParserHelper.CallMediaType.VIDEO
def get_call_direction(self):
return self._DEFAULT_STRING
return self._DEFAULT_DIRECTION
def get_phone_number_from(self):
return self._DEFAULT_STRING
return self._DEFAULT_ADDRESS
def get_phone_number_to(self):
return self._DEFAULT_STRING
return self._DEFAULT_ADDRESS
def get_call_start_date_time(self):
return self._DEFAULT_LONG
def get_call_end_date_time(self):
return self._DEFAULT_LONG
def get_contact_name(self):
return self._DEFAULT_STRING
def get_call_type(self):
return self._DEFAULT_CALL_TYPE

View File

@ -33,18 +33,22 @@ class TskMessagesParser(ResultSetIterator):
def __init__(self, result_set):
super(TskMessagesParser, self).__init__(result_set)
self.INCOMING_MSG = "Incoming"
self.OUTGOING_MSG = "Outgoing"
self._DEFAULT_TEXT = ""
self._DEFAULT_LONG = -1L
self._DEFAULT_MSG_READ_STATUS = AppDBParserHelper.MessageReadStatusEnum.UNKNOWN
self._DEFAULT_ACCOUNT_ADDRESS = Account.Address("","")
self._DEFAULT_COMMUNICATION_DIRECTION = AppDBParserHelper.CommunicationDirection.UNKNOWN
self.INCOMING = AppDBParserHelper.CommunicationDirection.INCOMING
self.OUTGOING = AppDBParserHelper.CommunicationDirection.OUTGOING
self.READ = AppDBParserHelper.MessageReadStatusEnum.READ
self.UNREAD = AppDBParserHelper.MessageReadStatusEnum.UNREAD
def get_message_type(self):
return self._DEFAULT_TEXT
def get_message_direction(self):
return self._DEFAULT_TEXT
return self._DEFAULT_COMMUNICATION_DIRECTION
def get_phone_number_from(self):
return self._DEFAULT_ACCOUNT_ADDRESS

View File

@ -88,13 +88,12 @@ class ViberAnalyzer(general.AndroidComponentAnalyzer):
calllog_parser = ViberCallLogsParser(contact_and_calllog_db)
while calllog_parser.next():
helper.addCalllog(
calllog_parser.get_account_name(),
calllog_parser.get_call_direction(),
calllog_parser.get_phone_number_from(),
calllog_parser.get_phone_number_to(),
calllog_parser.get_call_start_date_time(),
calllog_parser.get_call_end_date_time(),
calllog_parser.get_contact_name()
calllog_parser.get_call_type()
)
calllog_parser.close()
@ -139,7 +138,8 @@ class ViberCallLogsParser(TskCallLogsParser):
SELECT C.canonized_number AS number,
C.type AS direction,
C.duration AS seconds,
C.date AS start_time
C.date AS start_time,
C.viber_call_type AS call_type
FROM calls AS C
"""
)
@ -148,20 +148,21 @@ class ViberCallLogsParser(TskCallLogsParser):
self._OUTGOING_CALL_TYPE = 2
self._INCOMING_CALL_TYPE = 1
self._MISSED_CALL_TYPE = 3
def get_account_name(self):
return self.result_set.getString("number")
self._AUDIO_CALL_TYPE = 1
self._VIDEO_CALL_TYPE = 4
def get_phone_number_from(self):
if self.get_call_direction() == self.INCOMING_CALL:
return self.result_set.getString("number")
return Account.Address(self.result_set.getString("number"),
self.result_set.getString("number"))
#Give default value if the call is outgoing,
#the device's # is not stored in the database.
return super(ViberCallLogsParser, self).get_phone_number_from()
def get_phone_number_to(self):
if self.get_call_direction() == self.OUTGOING_CALL:
return self.result_set.getString("number")
return Account.Address(self.result_set.getString("number"),
self.result_set.getString("number"))
#Give default value if the call is incoming,
#the device's # is not stored in the database.
return super(ViberCallLogsParser, self).get_phone_number_to()
@ -169,7 +170,7 @@ class ViberCallLogsParser(TskCallLogsParser):
def get_call_direction(self):
direction = self.result_set.getInt("direction")
if direction == self._INCOMING_CALL_TYPE or direction == self._MISSED_CALL_TYPE:
return self.INCOMING_CALL
return self.INCOMING_CALL
return self.OUTGOING_CALL
def get_call_start_date_time(self):
@ -180,6 +181,14 @@ class ViberCallLogsParser(TskCallLogsParser):
duration = self.result_set.getLong("seconds")
return start_time + duration
def get_call_type(self):
call_type = self.result_set.getInt("call_type")
if call_type == self._AUDIO_CALL_TYPE:
return self.AUDIO_CALL
if call_type == self._VIDEO_CALL_TYPE:
return self.VIDEO_CALL
return super(ViberCallLogsParser, self).get_call_type()
class ViberContactsParser(TskContactsParser):
"""
Extracts TSK_CONTACT information from the Viber database.
@ -282,8 +291,8 @@ class ViberMessagesParser(TskMessagesParser):
def get_message_direction(self):
direction = self.result_set.getInt("direction")
if direction == self._INCOMING_MESSAGE_TYPE:
return self.INCOMING_MSG
return self.OUTGOING_MSG
return self.INCOMING
return self.OUTGOING
def get_phone_number_to(self):
recipients = []
@ -296,11 +305,11 @@ class ViberMessagesParser(TskMessagesParser):
return self.result_set.getLong("msg_date") / 1000
def get_message_read_status(self):
if self.get_message_direction() == self.INCOMING_MSG:
if self.get_message_direction() == self.INCOMING:
if self.result_set.getInt("read_status") == 0:
return AppDBParserHelper.MessageReadStatusEnum.READ
return self.READ
else:
return AppDBParserHelper.MessageReadStatusEnum.UNREAD
return self.UNREAD
return super(ViberMessagesParser, self).get_message_read_status()
def get_message_text(self):