-
Notifications
You must be signed in to change notification settings - Fork 1
/
feature_extraction_static.py
127 lines (93 loc) · 4.61 KB
/
feature_extraction_static.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import static_feature as st
import dynamic.dynamic_feature as dy
import os
import numpy as np
from androguard.core.bytecodes.apk import APK
#paths and filenames
Appln_Path = "/home/venkatesh/fyp/sample_apk/"
mal_Appln_Path = "/home/venkatesh/fyp/mal_sample_apk/"
permissions_path = "/home/venkatesh/fyp/github/final_year_project/"
permissions_file = "list_of_permissions.txt"
total_syscall_path = "/home/venkatesh/fyp/github/final_year_project/"
total_syscall_file = "list_of_syscalls.txt"
#number of application in benignware
files_count = len(os.listdir(Appln_Path))
print ("Total no. of benignware files : " + str(files_count))
#converting text permission to list
with open(permissions_path + permissions_file) as f:
permissions_list = f.read().splitlines()
#number of permissions in permission list
permissions_list_length = len(permissions_list)
static_vector = np.zeros((0,permissions_list_length),dtype = int)
#dynamic
#converting text extracted_syscall to list
with open(total_syscall_path + total_syscall_file) as f:
total_syscall_list = f.read().splitlines()
#number of extracted_syscall in extracted_syscall list
total_syscall_list_length = len(total_syscall_list)
print("Total List : " + str(total_syscall_list))
print("Length of total_syscall list : " + str(total_syscall_list_length))
#sorting list to optimise the matching
total_syscall_list.sort()
#total_vector = np.zeros((0,(permissions_list_length + total_syscall_list_length)),dtype = int)
total_vector = np.zeros((0,(permissions_list_length)),dtype = int)
# read the entries
with os.scandir(Appln_Path) as listOfEntries:
for appln_num,entry in enumerate(listOfEntries):
# Application Number
print (appln_num)
if entry.is_file():
#application file name
print(entry.name)
current_APK = Appln_Path + entry.name
current_static_vector = st.static_feature_vector(permissions_list,permissions_list_length,current_APK)
#current_dynamic_vector = dy.dynamic_feature_vector(total_syscall_list,total_syscall_list_length,current_APK)
#current_dynamic_vector = current_static_vector
print("Current Static vector : ")
print(current_static_vector[0])
#print("Current Dynamic vector : ")
#print(current_dynamic_vector[0])
#current_total_vector = np.append(current_static_vector,current_dynamic_vector)
#print("Current total vector : ")
#print(current_total_vector)
#current_total_vector.shape
#total_vector = np.vstack((current_total_vector,total_vector))
total_vector = np.vstack((current_static_vector,total_vector))
print("Final Vector : ")
print(total_vector)
binary_class = np.zeros((1,files_count),dtype = int)
print("Binary Class : ")
print(binary_class)
#mal_total_vector = np.zeros((0,(permissions_list_length + total_syscall_list_length)),dtype = int)
mal_total_vector = np.zeros((0,(permissions_list_length)),dtype = int)
mal_files_count = len(os.listdir(mal_Appln_Path))
with os.scandir(mal_Appln_Path) as listOfEntries:
for appln_num,entry in enumerate(listOfEntries):
# Application Number
print (appln_num)
if entry.is_file():
#application file name
print(entry.name)
current_APK = mal_Appln_Path + entry.name
current_static_vector = st.static_feature_vector(permissions_list,permissions_list_length,current_APK)
#current_dynamic_vector = dy.dynamic_feature_vector(total_syscall_list,total_syscall_list_length,current_APK)
#current_dynamic_vector = current_static_vector
print("Current Static vector : ")
print(current_static_vector[0])
#print("Current Dynamic vector : ")
#print(current_dynamic_vector[0])
#current_total_vector = np.append(current_static_vector,current_dynamic_vector)
#print("Current total vector : ")
#print(current_total_vector)
#current_total_vector.shape
#mal_total_vector = np.vstack((current_total_vector,mal_total_vector))
mal_total_vector = np.vstack((current_static_vector,mal_total_vector))
print("mal_Final Vector : ")
print(mal_total_vector)
mal_binary_class = np.ones((1,mal_files_count),dtype = int)
print("mal_Binary Class : ")
print(mal_binary_class)
final_perm_vector = np.vstack((total_vector,mal_total_vector))
print(final_perm_vector)
final_binary_class_vector = np.append(binary_class,mal_binary_class)
print(final_binary_class_vector)