summaryrefslogtreecommitdiff
path: root/karton
diff options
context:
space:
mode:
Diffstat (limited to 'karton')
-rw-r--r--karton/android/__init__.py3
-rw-r--r--karton/android/__main__.py3
-rw-r--r--karton/android/__version__.py1
-rw-r--r--karton/android/android.py45
4 files changed, 52 insertions, 0 deletions
diff --git a/karton/android/__init__.py b/karton/android/__init__.py
new file mode 100644
index 0000000..7bb1402
--- /dev/null
+++ b/karton/android/__init__.py
@@ -0,0 +1,3 @@
1from .android import Android
2
3__all__ = ["Android"]
diff --git a/karton/android/__main__.py b/karton/android/__main__.py
new file mode 100644
index 0000000..f873ab7
--- /dev/null
+++ b/karton/android/__main__.py
@@ -0,0 +1,3 @@
1from .android import Android
2
3Android.main()
diff --git a/karton/android/__version__.py b/karton/android/__version__.py
new file mode 100644
index 0000000..f102a9c
--- /dev/null
+++ b/karton/android/__version__.py
@@ -0,0 +1 @@
__version__ = "0.0.1"
diff --git a/karton/android/android.py b/karton/android/android.py
new file mode 100644
index 0000000..be4a11a
--- /dev/null
+++ b/karton/android/android.py
@@ -0,0 +1,45 @@
1import sys
2
3import androguard
4from karton.core import Karton, Task
5
6from .__version__ import __version__
7
8class Android(Karton):
9 """
10 Augment apk files with various information.
11 """
12
13 identity = "karton.android"
14 version = __version__
15 filters = [
16 {"type": "sample", "extension": "apk"},
17 ]
18
19 def process(self, task: Task) -> None:
20 sample = task.get_resource("sample")
21
22 a = androguard.core.bytecodes.apk.APK(sample)
23 if not a.is_valid_APK():
24 self.log.info("Not a valid APK file.")
25 return
26
27 metadata = {
28 'package': a.package,
29 'sample': sample,
30 'activities': a.get_activites(),
31 'main_activity': a.get_main_activity(),
32 'permissions': a.get_permissions(),
33 }
34
35 if a.is_signed() or a.is_signed_v3():
36 metadata['certificate'] = a.get_certificates()[0].sha1_fingerprint.replace(" ", "")
37
38 self.send_task(
39 Task(
40 headers={"type": "sample", "stage": "analyzed"},
41 payload=metadata)
42 )
43
44if __name__ == "__main__":
45 Android().loop()