2022-02-23 14:07:13 +00:00
|
|
|
# Mobile Verification Toolkit (MVT)
|
2022-05-08 12:53:50 +00:00
|
|
|
# Copyright (c) 2021-2022 Claudio Guarnieri.
|
2022-02-23 14:07:13 +00:00
|
|
|
# Use of this software is governed by the MVT License 1.1 that can be found at
|
|
|
|
# https://license.mvt.re/1.1/
|
|
|
|
|
2022-03-10 10:33:54 +00:00
|
|
|
import io
|
2022-02-23 14:07:13 +00:00
|
|
|
import os
|
2022-03-04 09:10:56 +00:00
|
|
|
import tarfile
|
2022-02-23 14:07:13 +00:00
|
|
|
|
|
|
|
from mvt.android.modules.backup.sms import SMS
|
2022-03-04 09:10:56 +00:00
|
|
|
from mvt.android.parsers.backup import parse_backup_file
|
2022-03-10 10:33:54 +00:00
|
|
|
from mvt.common.module import run_module
|
2022-02-23 14:07:13 +00:00
|
|
|
|
|
|
|
from ..utils import get_android_backup_folder
|
|
|
|
|
|
|
|
|
|
|
|
class TestBackupModule:
|
2022-06-17 15:07:36 +00:00
|
|
|
|
2022-02-23 14:07:13 +00:00
|
|
|
def test_module_folder(self):
|
2022-03-04 09:10:56 +00:00
|
|
|
backup_path = get_android_backup_folder()
|
2022-08-13 00:14:24 +00:00
|
|
|
mod = SMS(target_path=backup_path)
|
2022-03-04 09:10:56 +00:00
|
|
|
files = []
|
|
|
|
for root, subdirs, subfiles in os.walk(os.path.abspath(backup_path)):
|
|
|
|
for fname in subfiles:
|
|
|
|
files.append(os.path.relpath(os.path.join(root, fname), backup_path))
|
|
|
|
mod.from_folder(backup_path, files)
|
2022-02-23 14:07:13 +00:00
|
|
|
run_module(mod)
|
2022-06-23 09:05:04 +00:00
|
|
|
assert len(mod.results) == 2
|
2022-02-23 14:07:13 +00:00
|
|
|
assert len(mod.results[0]["links"]) == 1
|
|
|
|
assert mod.results[0]["links"][0] == "https://google.com/"
|
|
|
|
|
|
|
|
def test_module_file(self):
|
|
|
|
fpath = os.path.join(get_android_backup_folder(), "backup.ab")
|
2022-08-13 00:14:24 +00:00
|
|
|
mod = SMS(target_path=fpath)
|
2022-03-04 09:10:56 +00:00
|
|
|
with open(fpath, "rb") as f:
|
|
|
|
data = f.read()
|
|
|
|
tardata = parse_backup_file(data)
|
|
|
|
dbytes = io.BytesIO(tardata)
|
|
|
|
tar = tarfile.open(fileobj=dbytes)
|
|
|
|
files = []
|
|
|
|
for member in tar:
|
|
|
|
files.append(member.name)
|
|
|
|
mod.from_ab(fpath, tar, files)
|
|
|
|
run_module(mod)
|
2022-06-23 09:05:04 +00:00
|
|
|
assert len(mod.results) == 2
|
2022-03-04 09:10:56 +00:00
|
|
|
assert len(mod.results[0]["links"]) == 1
|
|
|
|
|
|
|
|
def test_module_file2(self):
|
|
|
|
fpath = os.path.join(get_android_backup_folder(), "backup2.ab")
|
2022-08-13 00:14:24 +00:00
|
|
|
mod = SMS(target_path=fpath)
|
2022-03-04 09:10:56 +00:00
|
|
|
with open(fpath, "rb") as f:
|
|
|
|
data = f.read()
|
|
|
|
tardata = parse_backup_file(data, password="123456")
|
|
|
|
dbytes = io.BytesIO(tardata)
|
|
|
|
tar = tarfile.open(fileobj=dbytes)
|
|
|
|
files = []
|
|
|
|
for member in tar:
|
|
|
|
files.append(member.name)
|
|
|
|
mod.from_ab(fpath, tar, files)
|
|
|
|
run_module(mod)
|
|
|
|
assert len(mod.results) == 1
|
|
|
|
assert len(mod.results[0]["links"]) == 1
|
|
|
|
|
|
|
|
def test_module_file3(self):
|
|
|
|
fpath = os.path.join(get_android_backup_folder(), "backup3.ab")
|
2022-08-13 00:14:24 +00:00
|
|
|
mod = SMS(target_path=fpath)
|
2022-03-04 09:10:56 +00:00
|
|
|
with open(fpath, "rb") as f:
|
|
|
|
data = f.read()
|
|
|
|
tardata = parse_backup_file(data)
|
|
|
|
dbytes = io.BytesIO(tardata)
|
|
|
|
tar = tarfile.open(fileobj=dbytes)
|
|
|
|
files = []
|
|
|
|
for member in tar:
|
|
|
|
files.append(member.name)
|
|
|
|
mod.from_ab(fpath, tar, files)
|
2022-02-23 14:07:13 +00:00
|
|
|
run_module(mod)
|
|
|
|
assert len(mod.results) == 1
|
|
|
|
assert len(mod.results[0]["links"]) == 1
|