├── .gitattributes ├── Data_Set_Generator .ipynb ├── Decision_Tree.ipynb ├── K_Nearest_Neighbors.ipynb ├── LICENSE ├── README.md ├── Random_Forest.ipynb └── data-set ├── MalwareDataSet.csv └── dataset.csv /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /Data_Set_Generator .ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "f51341ce", 6 | "metadata": {}, 7 | "source": [ 8 | "# Data Set Generator " 9 | ] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": null, 14 | "id": "38f87734", 15 | "metadata": {}, 16 | "outputs": [], 17 | "source": [ 18 | "import pefile\n", 19 | "import csv\n", 20 | "import glob" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": null, 26 | "id": "93abc748", 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "# pefile : It is used to extract pe information of exe files.\n", 31 | "# csv : Used to create csv file.\n", 32 | "# glob : It is used to access folders." 33 | ] 34 | }, 35 | { 36 | "cell_type": "markdown", 37 | "id": "3de03b84", 38 | "metadata": {}, 39 | "source": [ 40 | "First create 2 folders, add your malwares in one folder and your safe softwares in the other folder. Then access the folders with glob as follows." 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": null, 46 | "id": "26392386", 47 | "metadata": {}, 48 | "outputs": [], 49 | "source": [ 50 | "malware = glob.glob('../malwares_folder//*.exe') # change path" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": null, 56 | "id": "e0833f40", 57 | "metadata": {}, 58 | "outputs": [], 59 | "source": [ 60 | "secure = glob.glob('../secures_folder//*.exe') # change path" 61 | ] 62 | }, 63 | { 64 | "cell_type": "markdown", 65 | "id": "70f615e1", 66 | "metadata": {}, 67 | "source": [ 68 | "Define header information in dataset" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": null, 74 | "id": "f2111f89", 75 | "metadata": {}, 76 | "outputs": [], 77 | "source": [ 78 | "header =[\"AddressOfEntryPoint\",\"MajorLinkerVersion\",\"MajorImageVersion\",\"MajorOperatingSystemVersion\",\"DllCharacteristics\",\"SizeOfStackReserve\",\"NumberOfSections\",\"ResourceSize\",\"IfMalware\"]" 79 | ] 80 | }, 81 | { 82 | "cell_type": "markdown", 83 | "id": "9726a7e4", 84 | "metadata": {}, 85 | "source": [ 86 | "Use the following code structure to generate dataset in csv file format:" 87 | ] 88 | }, 89 | { 90 | "cell_type": "code", 91 | "execution_count": null, 92 | "id": "a098d0b9", 93 | "metadata": {}, 94 | "outputs": [], 95 | "source": [ 96 | "with open('dataset.csv', 'w', encoding='UTF8', newline='') as f:\n", 97 | " writer = csv.writer(f)\n", 98 | "\n", 99 | " writer.writerow(header) # header info added\n", 100 | "\n", 101 | " # We added the pe information for Malware folder:\n", 102 | " \n", 103 | " pe = pefile.PE(file)\n", 104 | " a = str(pe.OPTIONAL_HEADER.AddressOfEntryPoint)\n", 105 | " b = str(pe.OPTIONAL_HEADER.MajorLinkerVersion)\n", 106 | " c = str(pe.OPTIONAL_HEADER.MajorImageVersion)\n", 107 | " d = str(pe.OPTIONAL_HEADER.MajorOperatingSystemVersion)\n", 108 | " e = str(pe.OPTIONAL_HEADER.DllCharacteristics)\n", 109 | " f = str(pe.OPTIONAL_HEADER.SizeOfStackReserve)\n", 110 | " g = str(pe.FILE_HEADER.NumberOfSections)\n", 111 | " h = str(pe.OPTIONAL_HEADER.DATA_DIRECTORY[2].Size)\n", 112 | " i = \"1\" # dengerous exe file value\n", 113 | " \n", 114 | " data = [a,b,c,d,e,f,g,h,i]\n", 115 | " writer.writerow(data)\n", 116 | " \n", 117 | " # We added the pe information for safe software folder:\n", 118 | " \n", 119 | " for file in secure:\n", 120 | " pe = pefile.PE(file)\n", 121 | " a = str(pe.OPTIONAL_HEADER.AddressOfEntryPoint)\n", 122 | " b = str(pe.OPTIONAL_HEADER.MajorLinkerVersion)\n", 123 | " c = str(pe.OPTIONAL_HEADER.MajorImageVersion)\n", 124 | " d = str(pe.OPTIONAL_HEADER.MajorOperatingSystemVersion)\n", 125 | " e = str(pe.OPTIONAL_HEADER.DllCharacteristics)\n", 126 | " f = str(pe.OPTIONAL_HEADER.SizeOfStackReserve)\n", 127 | " g = str(pe.FILE_HEADER.NumberOfSections)\n", 128 | " h = str(pe.OPTIONAL_HEADER.DATA_DIRECTORY[2].Size)\n", 129 | " i = \"0\" # safe exe file value\n", 130 | " \n", 131 | " data = [a,b,c,d,e,f,g,h,i]\n", 132 | " writer.writerow(data)" 133 | ] 134 | }, 135 | { 136 | "cell_type": "markdown", 137 | "id": "15004a13", 138 | "metadata": {}, 139 | "source": [ 140 | "We created our own dataset by extracting the PE information of the exe files and writing them to the csv file." 141 | ] 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": null, 146 | "id": "30181e79", 147 | "metadata": {}, 148 | "outputs": [], 149 | "source": [] 150 | } 151 | ], 152 | "metadata": { 153 | "kernelspec": { 154 | "display_name": "Python 3 (ipykernel)", 155 | "language": "python", 156 | "name": "python3" 157 | }, 158 | "language_info": { 159 | "codemirror_mode": { 160 | "name": "ipython", 161 | "version": 3 162 | }, 163 | "file_extension": ".py", 164 | "mimetype": "text/x-python", 165 | "name": "python", 166 | "nbconvert_exporter": "python", 167 | "pygments_lexer": "ipython3", 168 | "version": "3.9.10" 169 | } 170 | }, 171 | "nbformat": 4, 172 | "nbformat_minor": 5 173 | } 174 | -------------------------------------------------------------------------------- /Decision_Tree.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "3cec636e", 6 | "metadata": {}, 7 | "source": [ 8 | "# Malware Analysis With Machine Learning - Decision Tree" 9 | ] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": 1, 14 | "id": "c2240e7d", 15 | "metadata": {}, 16 | "outputs": [], 17 | "source": [ 18 | "import numpy as np\n", 19 | "import pandas as pd\n", 20 | "from sklearn.model_selection import train_test_split\n", 21 | "from sklearn import tree\n", 22 | "from sklearn.metrics import f1_score\n", 23 | "from sklearn.metrics import plot_confusion_matrix,plot_precision_recall_curve,plot_roc_curve" 24 | ] 25 | }, 26 | { 27 | "cell_type": "markdown", 28 | "id": "f2253395", 29 | "metadata": {}, 30 | "source": [ 31 | "Data set reading :" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 2, 37 | "id": "7569420f", 38 | "metadata": {}, 39 | "outputs": [], 40 | "source": [ 41 | "data = pd.read_csv('../Malware-Detection-Using-Machine-Learning/data-set/MalwareDataSet.csv') " 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 3, 47 | "id": "206b4c35", 48 | "metadata": {}, 49 | "outputs": [ 50 | { 51 | "data": { 52 | "text/html": [ 53 | "
\n", 54 | "\n", 67 | "\n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | "
AddressOfEntryPointMajorLinkerVersionMajorImageVersionMajorOperatingSystemVersionDllCharacteristicsSizeOfStackReserveNumberOfSectionsResourceSizelegitimate
0104079663308826214449521
153549663308826214449521
2588079663308826214441364901
32516696633088262144419401
470387966330882621444830981
..............................
13743912329111053308810485765816540
137440400002613276810485768676240
1374415961010053308810485765226480
1374425121620101048576822160
13744322731110533088104857653184640
\n", 217 | "

137444 rows × 9 columns

\n", 218 | "
" 219 | ], 220 | "text/plain": [ 221 | " AddressOfEntryPoint MajorLinkerVersion MajorImageVersion \\\n", 222 | "0 10407 9 6 \n", 223 | "1 5354 9 6 \n", 224 | "2 58807 9 6 \n", 225 | "3 25166 9 6 \n", 226 | "4 70387 9 6 \n", 227 | "... ... ... ... \n", 228 | "137439 123291 11 0 \n", 229 | "137440 40000 2 6 \n", 230 | "137441 59610 10 0 \n", 231 | "137442 51216 2 0 \n", 232 | "137443 22731 11 0 \n", 233 | "\n", 234 | " MajorOperatingSystemVersion DllCharacteristics SizeOfStackReserve \\\n", 235 | "0 6 33088 262144 \n", 236 | "1 6 33088 262144 \n", 237 | "2 6 33088 262144 \n", 238 | "3 6 33088 262144 \n", 239 | "4 6 33088 262144 \n", 240 | "... ... ... ... \n", 241 | "137439 5 33088 1048576 \n", 242 | "137440 1 32768 1048576 \n", 243 | "137441 5 33088 1048576 \n", 244 | "137442 1 0 1048576 \n", 245 | "137443 5 33088 1048576 \n", 246 | "\n", 247 | " NumberOfSections ResourceSize legitimate \n", 248 | "0 4 952 1 \n", 249 | "1 4 952 1 \n", 250 | "2 4 136490 1 \n", 251 | "3 4 1940 1 \n", 252 | "4 4 83098 1 \n", 253 | "... ... ... ... \n", 254 | "137439 5 81654 0 \n", 255 | "137440 8 67624 0 \n", 256 | "137441 5 22648 0 \n", 257 | "137442 8 2216 0 \n", 258 | "137443 5 318464 0 \n", 259 | "\n", 260 | "[137444 rows x 9 columns]" 261 | ] 262 | }, 263 | "execution_count": 3, 264 | "metadata": {}, 265 | "output_type": "execute_result" 266 | } 267 | ], 268 | "source": [ 269 | "data" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 4, 275 | "id": "4b8b8b6c", 276 | "metadata": {}, 277 | "outputs": [ 278 | { 279 | "data": { 280 | "text/plain": [ 281 | "(137444, 9)" 282 | ] 283 | }, 284 | "execution_count": 4, 285 | "metadata": {}, 286 | "output_type": "execute_result" 287 | } 288 | ], 289 | "source": [ 290 | "data.shape" 291 | ] 292 | }, 293 | { 294 | "cell_type": "code", 295 | "execution_count": 5, 296 | "id": "65dbf455", 297 | "metadata": { 298 | "scrolled": true 299 | }, 300 | "outputs": [ 301 | { 302 | "data": { 303 | "text/html": [ 304 | "
\n", 305 | "\n", 318 | "\n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | "
AddressOfEntryPointMajorLinkerVersionMajorImageVersionMajorOperatingSystemVersionDllCharacteristicsSizeOfStackReserveNumberOfSectionsResourceSizelegitimate
count1.374440e+05137444.000000137444.000000137444.000000137444.0000001.374440e+05137444.0000001.374440e+05137444.000000
mean1.722186e+058.62078468.7318765.09873822301.0434369.306841e+054.9971192.474766e+050.297707
std3.438014e+064.0956351185.70987399.43758415444.7532195.553175e+051.9172372.129516e+070.457252
min0.000000e+000.0000000.0000000.0000000.0000000.000000e+001.0000000.000000e+000.000000
25%1.272100e+048.0000000.0000004.000000320.0000001.048576e+064.0000002.216000e+030.000000
50%5.300800e+049.0000000.0000005.00000033088.0000001.048576e+065.0000009.640000e+030.000000
75%6.157800e+0410.0000006.0000005.00000033088.0000001.048576e+065.0000002.376250e+041.000000
max1.074484e+09255.00000028619.00000036868.00000049504.0000003.355443e+0740.0000004.294903e+091.000000
\n", 432 | "
" 433 | ], 434 | "text/plain": [ 435 | " AddressOfEntryPoint MajorLinkerVersion MajorImageVersion \\\n", 436 | "count 1.374440e+05 137444.000000 137444.000000 \n", 437 | "mean 1.722186e+05 8.620784 68.731876 \n", 438 | "std 3.438014e+06 4.095635 1185.709873 \n", 439 | "min 0.000000e+00 0.000000 0.000000 \n", 440 | "25% 1.272100e+04 8.000000 0.000000 \n", 441 | "50% 5.300800e+04 9.000000 0.000000 \n", 442 | "75% 6.157800e+04 10.000000 6.000000 \n", 443 | "max 1.074484e+09 255.000000 28619.000000 \n", 444 | "\n", 445 | " MajorOperatingSystemVersion DllCharacteristics SizeOfStackReserve \\\n", 446 | "count 137444.000000 137444.000000 1.374440e+05 \n", 447 | "mean 5.098738 22301.043436 9.306841e+05 \n", 448 | "std 99.437584 15444.753219 5.553175e+05 \n", 449 | "min 0.000000 0.000000 0.000000e+00 \n", 450 | "25% 4.000000 320.000000 1.048576e+06 \n", 451 | "50% 5.000000 33088.000000 1.048576e+06 \n", 452 | "75% 5.000000 33088.000000 1.048576e+06 \n", 453 | "max 36868.000000 49504.000000 3.355443e+07 \n", 454 | "\n", 455 | " NumberOfSections ResourceSize legitimate \n", 456 | "count 137444.000000 1.374440e+05 137444.000000 \n", 457 | "mean 4.997119 2.474766e+05 0.297707 \n", 458 | "std 1.917237 2.129516e+07 0.457252 \n", 459 | "min 1.000000 0.000000e+00 0.000000 \n", 460 | "25% 4.000000 2.216000e+03 0.000000 \n", 461 | "50% 5.000000 9.640000e+03 0.000000 \n", 462 | "75% 5.000000 2.376250e+04 1.000000 \n", 463 | "max 40.000000 4.294903e+09 1.000000 " 464 | ] 465 | }, 466 | "execution_count": 5, 467 | "metadata": {}, 468 | "output_type": "execute_result" 469 | } 470 | ], 471 | "source": [ 472 | "data.describe()" 473 | ] 474 | }, 475 | { 476 | "cell_type": "code", 477 | "execution_count": 6, 478 | "id": "7378e7cf", 479 | "metadata": {}, 480 | "outputs": [ 481 | { 482 | "data": { 483 | "text/plain": [ 484 | "legitimate\n", 485 | "0 96526\n", 486 | "1 40918\n", 487 | "dtype: int64" 488 | ] 489 | }, 490 | "execution_count": 6, 491 | "metadata": {}, 492 | "output_type": "execute_result" 493 | } 494 | ], 495 | "source": [ 496 | "data.groupby(data['legitimate']).size()" 497 | ] 498 | }, 499 | { 500 | "cell_type": "markdown", 501 | "id": "2eab99e9", 502 | "metadata": {}, 503 | "source": [ 504 | "We have a total of 137.444 data. There are 96.526 safe and 40.918 malware." 505 | ] 506 | }, 507 | { 508 | "cell_type": "code", 509 | "execution_count": 7, 510 | "id": "cea0ed83", 511 | "metadata": {}, 512 | "outputs": [], 513 | "source": [ 514 | "features = data.iloc[:,[0,1,2,3,4,5,6,7]].values # extracting the first 8 columns from the dataset - features" 515 | ] 516 | }, 517 | { 518 | "cell_type": "code", 519 | "execution_count": 8, 520 | "id": "0d9d18ee", 521 | "metadata": {}, 522 | "outputs": [ 523 | { 524 | "data": { 525 | "text/plain": [ 526 | "array([[ 10407, 9, 6, ..., 262144, 4, 952],\n", 527 | " [ 5354, 9, 6, ..., 262144, 4, 952],\n", 528 | " [ 58807, 9, 6, ..., 262144, 4, 136490],\n", 529 | " ...,\n", 530 | " [ 59610, 10, 0, ..., 1048576, 5, 22648],\n", 531 | " [ 51216, 2, 0, ..., 1048576, 8, 2216],\n", 532 | " [ 22731, 11, 0, ..., 1048576, 5, 318464]])" 533 | ] 534 | }, 535 | "execution_count": 8, 536 | "metadata": {}, 537 | "output_type": "execute_result" 538 | } 539 | ], 540 | "source": [ 541 | "features" 542 | ] 543 | }, 544 | { 545 | "cell_type": "code", 546 | "execution_count": 9, 547 | "id": "dfb50f62", 548 | "metadata": {}, 549 | "outputs": [], 550 | "source": [ 551 | "ifMalware = data.iloc[:,8].values # extracting the legitimate column of the dataset - safe & malware results" 552 | ] 553 | }, 554 | { 555 | "cell_type": "code", 556 | "execution_count": 10, 557 | "id": "f323a0b1", 558 | "metadata": {}, 559 | "outputs": [ 560 | { 561 | "data": { 562 | "text/plain": [ 563 | "array([1, 1, 1, ..., 0, 0, 0])" 564 | ] 565 | }, 566 | "execution_count": 10, 567 | "metadata": {}, 568 | "output_type": "execute_result" 569 | } 570 | ], 571 | "source": [ 572 | "ifMalware" 573 | ] 574 | }, 575 | { 576 | "cell_type": "markdown", 577 | "id": "9006bce3", 578 | "metadata": {}, 579 | "source": [ 580 | "We will use 75% of our dataset for training and 25% for testing : " 581 | ] 582 | }, 583 | { 584 | "cell_type": "code", 585 | "execution_count": 11, 586 | "id": "0657650f", 587 | "metadata": {}, 588 | "outputs": [], 589 | "source": [ 590 | "features_train, features_test, ifMalware_train, ifMalware_test = train_test_split(features, ifMalware, test_size=0.25)" 591 | ] 592 | }, 593 | { 594 | "cell_type": "markdown", 595 | "id": "4edcf3e5", 596 | "metadata": {}, 597 | "source": [ 598 | "Learning and Predict :" 599 | ] 600 | }, 601 | { 602 | "cell_type": "code", 603 | "execution_count": 12, 604 | "id": "ab2b2a4a", 605 | "metadata": {}, 606 | "outputs": [], 607 | "source": [ 608 | "dtModel = tree.DecisionTreeClassifier() # Defined the model." 609 | ] 610 | }, 611 | { 612 | "cell_type": "code", 613 | "execution_count": 13, 614 | "id": "d458930d", 615 | "metadata": {}, 616 | "outputs": [ 617 | { 618 | "data": { 619 | "text/plain": [ 620 | "DecisionTreeClassifier()" 621 | ] 622 | }, 623 | "execution_count": 13, 624 | "metadata": {}, 625 | "output_type": "execute_result" 626 | } 627 | ], 628 | "source": [ 629 | "dtModel.fit(features_train, ifMalware_train) # Provided training data." 630 | ] 631 | }, 632 | { 633 | "cell_type": "code", 634 | "execution_count": 14, 635 | "id": "5ede2da4", 636 | "metadata": {}, 637 | "outputs": [], 638 | "source": [ 639 | "dtPredict = dtModel.predict(features_test) # Give the test data then call predict." 640 | ] 641 | }, 642 | { 643 | "cell_type": "markdown", 644 | "id": "9d67adc3", 645 | "metadata": {}, 646 | "source": [ 647 | "Result :" 648 | ] 649 | }, 650 | { 651 | "cell_type": "code", 652 | "execution_count": 15, 653 | "id": "1faa7928", 654 | "metadata": {}, 655 | "outputs": [ 656 | { 657 | "name": "stdout", 658 | "output_type": "stream", 659 | "text": [ 660 | "Number of mislabeled out of a total of 34361 test entries: 483\n" 661 | ] 662 | } 663 | ], 664 | "source": [ 665 | "print(\"Number of mislabeled out of a total of %d test entries: %d\" % (features_test.shape[0], \n", 666 | " (ifMalware_test != dtPredict).sum()))" 667 | ] 668 | }, 669 | { 670 | "cell_type": "code", 671 | "execution_count": 16, 672 | "id": "14c7dc90", 673 | "metadata": {}, 674 | "outputs": [], 675 | "source": [ 676 | "successRate = 100 * f1_score(ifMalware_test, dtPredict, average='micro') # Success rate calculation" 677 | ] 678 | }, 679 | { 680 | "cell_type": "code", 681 | "execution_count": 17, 682 | "id": "85d3f74a", 683 | "metadata": {}, 684 | "outputs": [ 685 | { 686 | "name": "stdout", 687 | "output_type": "stream", 688 | "text": [ 689 | "The Success Rate was calculated as % : 98.59433660254359 with the Decision Tree.\n" 690 | ] 691 | } 692 | ], 693 | "source": [ 694 | "print(\"The Success Rate was calculated as % : \" + str(successRate) + \" with the Decision Tree.\")" 695 | ] 696 | }, 697 | { 698 | "cell_type": "markdown", 699 | "id": "ffda807e", 700 | "metadata": {}, 701 | "source": [ 702 | "Visualization :" 703 | ] 704 | }, 705 | { 706 | "cell_type": "code", 707 | "execution_count": 18, 708 | "id": "d6799629", 709 | "metadata": {}, 710 | "outputs": [ 711 | { 712 | "data": { 713 | "text/plain": [ 714 | "" 715 | ] 716 | }, 717 | "execution_count": 18, 718 | "metadata": {}, 719 | "output_type": "execute_result" 720 | }, 721 | { 722 | "data": { 723 | "image/png": "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\n", 724 | "text/plain": [ 725 | "
" 726 | ] 727 | }, 728 | "metadata": { 729 | "needs_background": "light" 730 | }, 731 | "output_type": "display_data" 732 | } 733 | ], 734 | "source": [ 735 | "plot_confusion_matrix(dtModel,features_test,ifMalware_test)" 736 | ] 737 | }, 738 | { 739 | "cell_type": "code", 740 | "execution_count": 19, 741 | "id": "caaf81cf", 742 | "metadata": {}, 743 | "outputs": [ 744 | { 745 | "data": { 746 | "text/plain": [ 747 | "" 748 | ] 749 | }, 750 | "execution_count": 19, 751 | "metadata": {}, 752 | "output_type": "execute_result" 753 | }, 754 | { 755 | "data": { 756 | "image/png": "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uOIKrrvuOgDmz5/P/vvvT//+/Tn66KOrv/0NHz6c7373u+y7777ssccePP3003XG26NHD7773e8ycOBAHnjgAWbPns2QIUMYOHAgxx13HB9++CEA8+bNY9iwYQwaNIjDDjuMFStWAPCjH/2I2267jZ133hmAnXfemdNPP32r65x77rlUVFTQt29fLr/88urttdXxgQceYJ999mHAgAEceOCBADz55JMceeSRvPvuu5xyyinMmTOH8vJy3nrrrS3uPOqKv2Y9cz3xxBMMHDiQ7bb714N0U6dO5aKLLqJ79+48++yztX52Bx54IIsXL67zs81i1qxZjBw5kl133ZVddtmFkSNH8uijj25V7o033qj+LEaOHMmvfvWr6vr279+fAQMGANCpUyfatGkDwOjRo5k6dWqj4rPWr1U8Pvpp1KtXLzZv3sy7777L9OnT6dixI3PmzGHDhg0MHTqUQw89lNdee43p06fz/PPPs8MOO/D+++9vcY6VK1fym9/8htdeew1JrF69eqvrnHbaadx8880MGzaM8ePHc+WVV3LjjTcCSdPGCy+8wMyZM7nyyivrbW7q1KkTL774Iu+99x7HHHMMjz32GB06dOCaa67hhhtu4LLLLuOCCy5g+vTplJWVcd999/G9732PG2+8kQ8++IBevXrl/Ux++MMfsuuuu7J582ZGjBjBggUL6NKlS611nDBhArNmzaJLly5b1Xu33Xbj9ttv57rrruPhhx/eYt97773H1VdfvVX848eP36KeNT3zzDMMGjSoen39+vU89thjTJo0idWrVzN16lQOOOCArY576KGH6Nev31bbr732Wu65556tth944IHcdNNNW2xbvnw53bp1q17v2rUry5cv3+rYvn37Mn36dL7yla/wwAMP8M477wBJgpDEYYcdRmVlJSeeeCKXXHIJALvssgsbNmxg5cqVdOrUaatzmkGBE4Gkw4H/AdoAt0fEj2vsHwucB2wGPgTOiYhGNfReflTfxhxeELNnz2bBggXV3/LXrFnDm2++yWOPPcaZZ57JDjvsAMCuu+66xXEdO3akXbt2fOMb3+DII4/kyCOP3GL/mjVrWL16NcOGDQPg9NNP57jjjqvef8wxxwAwaNAgli5dWm+MJ5xwAgDPPfccixYtYujQoQB8/PHHDBkyhNdff51XXnmFkSNHArB582Y+//nPN+hzuP/++5k8eTKbNm1ixYoVLFq0iD59+tRax6FDh3LGGWdw/PHHV9cji7rir1nPmlasWMHee+9dvf7www9z0EEH0b59e4499liuuuoqbrzxxupv2l/72tdo3749PXr04Oabb97qfOPGjWPcuHGZ487izjvv5MILL+Sqq65i9OjRbL/99kCS8P/4xz8yZ84cdthhB0aMGMGgQYMYMWIEkCTOv/3tb04EVqeCJQJJbYBbgZHAMmCOpBk1/kf/y4iYmJYfDdwAHF6omIppyZIltGnTht12242I4Oabb+awww7bosysWbPqPcd2223HCy+8wOOPP860adO45ZZbeOKJJzLH8NnPfhZIOrI3bdpUb9kOHToASZ/RyJEjt2pOePnll+nbt2+tTSQ77rgjS5Ysqfeu4C9/+QvXXXcdc+bMYZddduGMM85g/fr1ddZx4sSJPP/88zzyyCMMGjSIefPmZapzXfHXrGdN7du33+K5+qlTp/LHP/6RHj16AMnd2RNPPFGdCO+55x4qKirqjKMhdwRdunThySefrF5ftmwZw4cP3+rYvfbai9mzZwPJXcAjjzwCJHcQBx54IJ07dwZg1KhRvPjii9WJYP369bRv377OWM0K2UewL7A4IpZExMfAvcCY3AIRsTZntQMQBYynaCorKxk7diznn39+9S37bbfdxsaNG4Hkj/if//wnI0eO5K677mLdunUAWzUNffjhh6xZs4ZRo0bx05/+lJdeemmL/R07dmSXXXapbv//xS9+UX13sK32339/nnnmmep273/+85+88cYb7LnnnlRWVlYngo0bN7JwYdJ3ctlll3HeeedVP8Xy4YcfbvVU09q1a+nQoQMdO3bkH//4B7/97W/rreNbb73Ffvvtx4QJEygrK6tuBtnW+PPZe++9q49Zu3YtTz/9NG+//TZLly5l6dKl3HrrrQ1qax83bhzz58/f6qdmEgA47LDDmD17NqtWrWLVqlXMnj17qy8NAO+++y4An3zyCVdffTVjx46tPv7ll19m3bp1bNq0iaeeeoo+ffoASWL8+9//Xp3QzGpTyKahLkDuX+8yYL+ahSSdB1wMbA8cXMB4Cuqjjz6ivLycjRs3st1223Hqqady8cUXA3DWWWexdOlSBg4cSERQVlbGgw8+yOGHH878+fOpqKhg++23Z9SoUfzoRz+qPucHH3zAmDFjWL9+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\n", 757 | "text/plain": [ 758 | "
" 759 | ] 760 | }, 761 | "metadata": { 762 | "needs_background": "light" 763 | }, 764 | "output_type": "display_data" 765 | } 766 | ], 767 | "source": [ 768 | "plot_precision_recall_curve(dtModel,features_test,ifMalware_test)" 769 | ] 770 | }, 771 | { 772 | "cell_type": "code", 773 | "execution_count": 20, 774 | "id": "a7d9cfc4", 775 | "metadata": {}, 776 | "outputs": [ 777 | { 778 | "data": { 779 | "text/plain": [ 780 | "" 781 | ] 782 | }, 783 | "execution_count": 20, 784 | "metadata": {}, 785 | "output_type": "execute_result" 786 | }, 787 | { 788 | "data": { 789 | "image/png": "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Bgzg97//PalU4ybgGzt2LE899VSd22+//Xbuu+++Bh93+vTplJeXU15eTufOndl1110pLy/n1FNPbVScmcaPH0+/fv0oLy9nn332qYnvsMMOY+7cuU0+PsDcuXM5//zzAVi/fj3f+973KC8v56GHHuLMM89k8eLFTTr+hAkTsr7XRCJB9+7dGTNmTFa63r1789lnn9Usz5w5k2OOOaZm+cknn6SiooLdd9+dgQMHctFFFzUpLoB58+ax5557stNOO3H++efjnt+9+uWXX3Lcccex1157se+++7Jw4cKabTfeeCP9+/dnjz32YOTIkTUPVpx88sm8/fbbTY4PCDoX2tLPoEGDvDEefaXSd/ivJ3xZ1epG7S/xWLx4cWuH4J06dar5/Mknn/jgwYN97NixrRhR/Q499FCfM2dO3vpEItHgY912220+ZMgQX7Vqlbu7r1q1yidPnlzveZpq1qxZPnjw4Ebvn3ud1dXVvueee3p1dXXNumnTpvmBBx7offv29VQqVbN+hx128KqqqprlGTNm+Pe//313d3/99de9b9++vmTJkprz3HrrrY2OM22fffbxWbNmeSqV8qFDh/q0adPy0lx88cV+5ZVXurv7kiVL/IgjjnB398rKSu/du7evWbPG3d1POOEEv+eee9zdfebMmX7mmWfWes7a/q6AuV5Hvhr1PYI2TzWCjd9Vf1vE4o++atZj7v7dLlzxg+jTZmy77bZMnDiRffbZhyuvvJJUKsWYMWOYOXMm69ev59xzz+VnP/sZANdddx0PPPAAJSUlDBs2jGuvvZbRo0dzzDHHMGLECMaMGcPUqVNp164dQ4YMYfz48Vx55ZV07tyZiy++mPnz53P22WezZs0adtxxRyZNmsRWW23FYYcdxn777ceMGTNYuXIld999NwcffHCt8fbu3ZuTTjqJf/3rX1x66aVsvfXWXHHFFaxfv54dd9yRe+65h86dOzNv3jwuvPBCVq9eTbdu3Zg8eTLbbbcd11xzDTNnzqRLly4AdOnShdNOOy3vPOeccw5z5sxh7dq1jBgxgquuugqg1mt8+OGHueqqqygtLaVr164899xzzJw5k/HjxzNp0iRGjRpFVVUV5eXl/OUvf+GMM85g/PjxVFRU8M9//rPW+HOv8+STT66J7ZlnnmHvvfemXbsN2dmUKVO44IILuO2225g1axYHHnhgwd/99ddfz+WXX06/fv2AoKZ4zjnnRPyfU7sVK1bw1Vdfsf/++wNw6qmn8thjjzFs2LCsdIsXL66pvfTr14/ly5fzySefAEHtZu3atZSVlbFmzRq++93vAnDwwQczevRoEolE1rU3RtEUBBp9VKLq27cvyWSSTz/9lMcff5yuXbsyZ84c1q9fz0EHHcSQIUN44403ePzxx3nppZfo2LEjX3yR3Yr6+eef8+ijj/LGG29gZqxcuTLvPKeeeio333wzhx56KGPHjuWqq65iwoQJQPDH//LLLzNt2jSuuuqqepubttlmG1555RU+++wzfvSjH/HUU0/RqVMnrrvuOm644QYuu+wyfvGLX/D444/TvXt3HnroIS6//HImTJjA119/Td++fQt+J7/97W/ZeuutSSaTDB48mAULFtCjR49ar3HcuHFMnz6dHj165F33tttuy1133cX48eN54oknsrZ99tlnXH311Xnxjx07Nus6c73wwgsMGjSoZnndunU89dRT3HHHHaxcuZIpU6ZEKggWLlwYqSloxowZ/OpXv8pb37FjR1588cWsdR9++CE9e/asWe7Zsycffvhh3r4DBgzgr3/9KwcffDAvv/wy7733HpWVlQwaNIiLL76YXr160aFDB4YMGcKQIUMAKCkpYaedduK1117Luv7GKJqCQDWCjV9D7txbyj//+U8WLFjAI488AsCqVat4++23eeqppzj99NPp2LEjAFtvvXXWfl27dqV9+/acccYZHHPMMVnt0OnjrFy5kkMPPRSA0047jRNOOKFm+49+9CMABg0axPLly+uN8aSTTgJg9uzZLF68mIMOCoYG+/bbbznggAN48803WbhwIUceeSQAyWSS7bbbrkHfw5///GcmTpxIIpFgxYoVLF68mN13373WazzooIMYPXo0J554Ys11RFFX/LnXmWvFihXstttuNctPPPEEhx9+OB06dOD444/nN7/5DRMmTKC0tLTWJ2oa+pTN4Ycfzvz58xu0TyFjxozhggsuoLy8nD333JOBAwdSWlrKl19+yeOPP867777LlltuyQknnMADDzzAqFGjgKBg/eijjzbugsDMhgL/R/Bi2l3ufm3O9s2B+4BBBENYnOTuy+OIRW8WS1TLli2jtLSUbbfdFnfn5ptv5qijjspKM3369HqP0a5dO15++WWefvppHnnkEf7whz/wzDPPRI5h8803B4LmiUQiUW/aTp06AUF/35FHHsmUKVOytr/++uv079+fWbNm5e3buXNnli1bVm+t4N1332X8+PHMmTOHrbbaitGjR7Nu3bo6r/H222/npZde4u9//zuDBg1i3rx5ka65rvhzrzNXhw4dst5MnzJlCv/+97/p3bs3ENTOnnnmGY488ki22WYbvvzyS7p16wbAF198UfO5f//+zJs3jwEDBtQbZ0NqBD169KCysrJmubKykh49euTt26VLF+655x4g+B769OlD3759mT59On369KF79+5AcIPw4osv1hQE69ato0OHDvXGG0Vsb1eFw1ffAgwDdgdGmtnuOcnOAL50952AG4Hr4oqnumbOYr1QJnWrqqri7LPP5rzzzsPMOOqoo7jtttuorq4G4K233uKbb77hyCOP5J577mHNmjUAeU1Dq1evZtWqVRx99NHceOONvPbaa1nbu3btylZbbcXzzz8PwP33319TO2is/fffnxdeeIGlS5cC8M033/DWW2+x6667UlVVVVMQVFdXs2jRIgAuu+wyzj33XL766quauHOfavrqq6/o1KkTXbt25ZNPPuHJJ5+s9xrfeecd9ttvP8aNG0f37t354IMPmhR/IbvttlvNPl999RXPP/8877//PsuXL2f58uXccsstNYXLYYcdxv333w8ENaMHHniAww8/HIBLLrmEa665puacqVSK22+/Pe986RpB7k9uIQCw3Xbb0aVLF2bPno27c9999zF8+PC8dCtXruTbb78F4K677uKQQw6hS5cu9OrVi9mzZ7NmzRrcnaeffjqr9vPWW2+xxx57FPyOComzRrAvsNTdlwGY2YPAcCDzObHhwJXh50eAP5iZhT3czSrdR6AhJiTX2rVrKS8vp7q6mnbt2nHKKadw4YXBpHxnnnkmy5cvZ++998bd6d69O4899hhDhw5l/vz5VFRUsNlmm3H00UdzzTXX1Bzz66+/Zvjw4axbtw5354Ybbsg777333lvTWdy3b9+aO8LG6t69O5MnT2bkyJGsX78egKuvvppddtmFRx55hPPPP59Vq1aRSCT45S9/Sf/+/TnnnHNYvXo1++yzD2VlZZSVleW1kw8YMICBAwfSr18/tt9++5qmm7qu8ZJLLuHtt9/G3Rk8eDADBgzg2WefbVL89Rk2bBinnHIKAI8++ihHHHFETY0K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\n", 790 | "text/plain": [ 791 | "
" 792 | ] 793 | }, 794 | "metadata": { 795 | "needs_background": "light" 796 | }, 797 | "output_type": "display_data" 798 | } 799 | ], 800 | "source": [ 801 | "plot_roc_curve(dtModel,features_test,ifMalware_test)" 802 | ] 803 | }, 804 | { 805 | "cell_type": "code", 806 | "execution_count": null, 807 | "id": "7cc50825", 808 | "metadata": {}, 809 | "outputs": [], 810 | "source": [] 811 | } 812 | ], 813 | "metadata": { 814 | "kernelspec": { 815 | "display_name": "Python 3 (ipykernel)", 816 | "language": "python", 817 | "name": "python3" 818 | }, 819 | "language_info": { 820 | "codemirror_mode": { 821 | "name": "ipython", 822 | "version": 3 823 | }, 824 | "file_extension": ".py", 825 | "mimetype": "text/x-python", 826 | "name": "python", 827 | "nbconvert_exporter": "python", 828 | "pygments_lexer": "ipython3", 829 | "version": "3.9.10" 830 | } 831 | }, 832 | "nbformat": 4, 833 | "nbformat_minor": 5 834 | } 835 | -------------------------------------------------------------------------------- /K_Nearest_Neighbors.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "75878b0c", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import numpy as np\n", 11 | "import pandas as pd\n", 12 | "from sklearn.model_selection import train_test_split\n", 13 | "from sklearn.neighbors import KNeighborsClassifier\n", 14 | "from sklearn.metrics import f1_score\n", 15 | "from sklearn.metrics import plot_confusion_matrix,plot_precision_recall_curve,plot_roc_curve" 16 | ] 17 | }, 18 | { 19 | "cell_type": "markdown", 20 | "id": "69b25522", 21 | "metadata": {}, 22 | "source": [ 23 | "Data set reading :" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 2, 29 | "id": "b54e1b40", 30 | "metadata": {}, 31 | "outputs": [], 32 | "source": [ 33 | "data = pd.read_csv('../Malware-Detection-Using-Machine-Learning/data-set/MalwareDataSet.csv') " 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 3, 39 | "id": "47c9ba1b", 40 | "metadata": {}, 41 | "outputs": [ 42 | { 43 | "data": { 44 | "text/html": [ 45 | "
\n", 46 | "\n", 59 | "\n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | "
AddressOfEntryPointMajorLinkerVersionMajorImageVersionMajorOperatingSystemVersionDllCharacteristicsSizeOfStackReserveNumberOfSectionsResourceSizelegitimate
0104079663308826214449521
153549663308826214449521
2588079663308826214441364901
32516696633088262144419401
470387966330882621444830981
..............................
13743912329111053308810485765816540
137440400002613276810485768676240
1374415961010053308810485765226480
1374425121620101048576822160
13744322731110533088104857653184640
\n", 209 | "

137444 rows × 9 columns

\n", 210 | "
" 211 | ], 212 | "text/plain": [ 213 | " AddressOfEntryPoint MajorLinkerVersion MajorImageVersion \\\n", 214 | "0 10407 9 6 \n", 215 | "1 5354 9 6 \n", 216 | "2 58807 9 6 \n", 217 | "3 25166 9 6 \n", 218 | "4 70387 9 6 \n", 219 | "... ... ... ... \n", 220 | "137439 123291 11 0 \n", 221 | "137440 40000 2 6 \n", 222 | "137441 59610 10 0 \n", 223 | "137442 51216 2 0 \n", 224 | "137443 22731 11 0 \n", 225 | "\n", 226 | " MajorOperatingSystemVersion DllCharacteristics SizeOfStackReserve \\\n", 227 | "0 6 33088 262144 \n", 228 | "1 6 33088 262144 \n", 229 | "2 6 33088 262144 \n", 230 | "3 6 33088 262144 \n", 231 | "4 6 33088 262144 \n", 232 | "... ... ... ... \n", 233 | "137439 5 33088 1048576 \n", 234 | "137440 1 32768 1048576 \n", 235 | "137441 5 33088 1048576 \n", 236 | "137442 1 0 1048576 \n", 237 | "137443 5 33088 1048576 \n", 238 | "\n", 239 | " NumberOfSections ResourceSize legitimate \n", 240 | "0 4 952 1 \n", 241 | "1 4 952 1 \n", 242 | "2 4 136490 1 \n", 243 | "3 4 1940 1 \n", 244 | "4 4 83098 1 \n", 245 | "... ... ... ... \n", 246 | "137439 5 81654 0 \n", 247 | "137440 8 67624 0 \n", 248 | "137441 5 22648 0 \n", 249 | "137442 8 2216 0 \n", 250 | "137443 5 318464 0 \n", 251 | "\n", 252 | "[137444 rows x 9 columns]" 253 | ] 254 | }, 255 | "execution_count": 3, 256 | "metadata": {}, 257 | "output_type": "execute_result" 258 | } 259 | ], 260 | "source": [ 261 | "data" 262 | ] 263 | }, 264 | { 265 | "cell_type": "code", 266 | "execution_count": 4, 267 | "id": "b13348ab", 268 | "metadata": {}, 269 | "outputs": [ 270 | { 271 | "data": { 272 | "text/plain": [ 273 | "(137444, 9)" 274 | ] 275 | }, 276 | "execution_count": 4, 277 | "metadata": {}, 278 | "output_type": "execute_result" 279 | } 280 | ], 281 | "source": [ 282 | "data.shape" 283 | ] 284 | }, 285 | { 286 | "cell_type": "code", 287 | "execution_count": 5, 288 | "id": "33292bb5", 289 | "metadata": {}, 290 | "outputs": [ 291 | { 292 | "data": { 293 | "text/html": [ 294 | "
\n", 295 | "\n", 308 | "\n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | "
AddressOfEntryPointMajorLinkerVersionMajorImageVersionMajorOperatingSystemVersionDllCharacteristicsSizeOfStackReserveNumberOfSectionsResourceSizelegitimate
count1.374440e+05137444.000000137444.000000137444.000000137444.0000001.374440e+05137444.0000001.374440e+05137444.000000
mean1.722186e+058.62078468.7318765.09873822301.0434369.306841e+054.9971192.474766e+050.297707
std3.438014e+064.0956351185.70987399.43758415444.7532195.553175e+051.9172372.129516e+070.457252
min0.000000e+000.0000000.0000000.0000000.0000000.000000e+001.0000000.000000e+000.000000
25%1.272100e+048.0000000.0000004.000000320.0000001.048576e+064.0000002.216000e+030.000000
50%5.300800e+049.0000000.0000005.00000033088.0000001.048576e+065.0000009.640000e+030.000000
75%6.157800e+0410.0000006.0000005.00000033088.0000001.048576e+065.0000002.376250e+041.000000
max1.074484e+09255.00000028619.00000036868.00000049504.0000003.355443e+0740.0000004.294903e+091.000000
\n", 422 | "
" 423 | ], 424 | "text/plain": [ 425 | " AddressOfEntryPoint MajorLinkerVersion MajorImageVersion \\\n", 426 | "count 1.374440e+05 137444.000000 137444.000000 \n", 427 | "mean 1.722186e+05 8.620784 68.731876 \n", 428 | "std 3.438014e+06 4.095635 1185.709873 \n", 429 | "min 0.000000e+00 0.000000 0.000000 \n", 430 | "25% 1.272100e+04 8.000000 0.000000 \n", 431 | "50% 5.300800e+04 9.000000 0.000000 \n", 432 | "75% 6.157800e+04 10.000000 6.000000 \n", 433 | "max 1.074484e+09 255.000000 28619.000000 \n", 434 | "\n", 435 | " MajorOperatingSystemVersion DllCharacteristics SizeOfStackReserve \\\n", 436 | "count 137444.000000 137444.000000 1.374440e+05 \n", 437 | "mean 5.098738 22301.043436 9.306841e+05 \n", 438 | "std 99.437584 15444.753219 5.553175e+05 \n", 439 | "min 0.000000 0.000000 0.000000e+00 \n", 440 | "25% 4.000000 320.000000 1.048576e+06 \n", 441 | "50% 5.000000 33088.000000 1.048576e+06 \n", 442 | "75% 5.000000 33088.000000 1.048576e+06 \n", 443 | "max 36868.000000 49504.000000 3.355443e+07 \n", 444 | "\n", 445 | " NumberOfSections ResourceSize legitimate \n", 446 | "count 137444.000000 1.374440e+05 137444.000000 \n", 447 | "mean 4.997119 2.474766e+05 0.297707 \n", 448 | "std 1.917237 2.129516e+07 0.457252 \n", 449 | "min 1.000000 0.000000e+00 0.000000 \n", 450 | "25% 4.000000 2.216000e+03 0.000000 \n", 451 | "50% 5.000000 9.640000e+03 0.000000 \n", 452 | "75% 5.000000 2.376250e+04 1.000000 \n", 453 | "max 40.000000 4.294903e+09 1.000000 " 454 | ] 455 | }, 456 | "execution_count": 5, 457 | "metadata": {}, 458 | "output_type": "execute_result" 459 | } 460 | ], 461 | "source": [ 462 | "data.describe()" 463 | ] 464 | }, 465 | { 466 | "cell_type": "code", 467 | "execution_count": 6, 468 | "id": "65dbf455", 469 | "metadata": { 470 | "scrolled": true 471 | }, 472 | "outputs": [ 473 | { 474 | "data": { 475 | "text/plain": [ 476 | "legitimate\n", 477 | "0 96526\n", 478 | "1 40918\n", 479 | "dtype: int64" 480 | ] 481 | }, 482 | "execution_count": 6, 483 | "metadata": {}, 484 | "output_type": "execute_result" 485 | } 486 | ], 487 | "source": [ 488 | "data.groupby(data['legitimate']).size()" 489 | ] 490 | }, 491 | { 492 | "cell_type": "markdown", 493 | "id": "2eab99e9", 494 | "metadata": {}, 495 | "source": [ 496 | "We have a total of 137.444 data. There are 96.526 safe and 40.918 malware." 497 | ] 498 | }, 499 | { 500 | "cell_type": "code", 501 | "execution_count": 7, 502 | "id": "8592b076", 503 | "metadata": {}, 504 | "outputs": [], 505 | "source": [ 506 | "features = data.iloc[:,[0,1,2,3,4,5,6,7]].values # extracting the first 8 columns from the dataset - features" 507 | ] 508 | }, 509 | { 510 | "cell_type": "code", 511 | "execution_count": 8, 512 | "id": "3da1b6cd", 513 | "metadata": {}, 514 | "outputs": [ 515 | { 516 | "data": { 517 | "text/plain": [ 518 | "array([[ 10407, 9, 6, ..., 262144, 4, 952],\n", 519 | " [ 5354, 9, 6, ..., 262144, 4, 952],\n", 520 | " [ 58807, 9, 6, ..., 262144, 4, 136490],\n", 521 | " ...,\n", 522 | " [ 59610, 10, 0, ..., 1048576, 5, 22648],\n", 523 | " [ 51216, 2, 0, ..., 1048576, 8, 2216],\n", 524 | " [ 22731, 11, 0, ..., 1048576, 5, 318464]])" 525 | ] 526 | }, 527 | "execution_count": 8, 528 | "metadata": {}, 529 | "output_type": "execute_result" 530 | } 531 | ], 532 | "source": [ 533 | "features" 534 | ] 535 | }, 536 | { 537 | "cell_type": "code", 538 | "execution_count": 9, 539 | "id": "46db9f27", 540 | "metadata": {}, 541 | "outputs": [], 542 | "source": [ 543 | "ifMalware = data.iloc[:,8].values # extracting the legitimate column of the dataset - safe & malware results" 544 | ] 545 | }, 546 | { 547 | "cell_type": "code", 548 | "execution_count": 10, 549 | "id": "c0e0d3db", 550 | "metadata": {}, 551 | "outputs": [ 552 | { 553 | "data": { 554 | "text/plain": [ 555 | "array([1, 1, 1, ..., 0, 0, 0])" 556 | ] 557 | }, 558 | "execution_count": 10, 559 | "metadata": {}, 560 | "output_type": "execute_result" 561 | } 562 | ], 563 | "source": [ 564 | "ifMalware" 565 | ] 566 | }, 567 | { 568 | "cell_type": "markdown", 569 | "id": "773b9a86", 570 | "metadata": {}, 571 | "source": [ 572 | "We will use 75% of our dataset for training and 25% for testing :" 573 | ] 574 | }, 575 | { 576 | "cell_type": "code", 577 | "execution_count": 11, 578 | "id": "0657650f", 579 | "metadata": {}, 580 | "outputs": [], 581 | "source": [ 582 | "features_train, features_test, ifMalware_train, ifMalware_test = train_test_split(features, ifMalware, test_size=0.25)" 583 | ] 584 | }, 585 | { 586 | "cell_type": "markdown", 587 | "id": "4edcf3e5", 588 | "metadata": {}, 589 | "source": [ 590 | "Learning and Predict :" 591 | ] 592 | }, 593 | { 594 | "cell_type": "code", 595 | "execution_count": 12, 596 | "id": "30274115", 597 | "metadata": {}, 598 | "outputs": [], 599 | "source": [ 600 | "knModel = KNeighborsClassifier(n_neighbors=1) # Defined the model." 601 | ] 602 | }, 603 | { 604 | "cell_type": "code", 605 | "execution_count": 13, 606 | "id": "b6993294", 607 | "metadata": {}, 608 | "outputs": [ 609 | { 610 | "data": { 611 | "text/plain": [ 612 | "KNeighborsClassifier(n_neighbors=1)" 613 | ] 614 | }, 615 | "execution_count": 13, 616 | "metadata": {}, 617 | "output_type": "execute_result" 618 | } 619 | ], 620 | "source": [ 621 | "knModel.fit(features_train, ifMalware_train) # Provided training data." 622 | ] 623 | }, 624 | { 625 | "cell_type": "code", 626 | "execution_count": 14, 627 | "id": "0a413829", 628 | "metadata": {}, 629 | "outputs": [], 630 | "source": [ 631 | "knPredict = knModel.predict(features_test) # Give the test data then call predict." 632 | ] 633 | }, 634 | { 635 | "cell_type": "markdown", 636 | "id": "9d67adc3", 637 | "metadata": {}, 638 | "source": [ 639 | "Results :" 640 | ] 641 | }, 642 | { 643 | "cell_type": "code", 644 | "execution_count": 15, 645 | "id": "42f2a30d", 646 | "metadata": {}, 647 | "outputs": [ 648 | { 649 | "name": "stdout", 650 | "output_type": "stream", 651 | "text": [ 652 | "Number of mislabeled out of a total of 34361 test entries: 838\n" 653 | ] 654 | } 655 | ], 656 | "source": [ 657 | "print(\"Number of mislabeled out of a total of %d test entries: %d\" % (features_test.shape[0], \n", 658 | " (ifMalware_test != knPredict).sum()))" 659 | ] 660 | }, 661 | { 662 | "cell_type": "code", 663 | "execution_count": 16, 664 | "id": "cbbfc4fb", 665 | "metadata": {}, 666 | "outputs": [], 667 | "source": [ 668 | "successRate = 100 * f1_score(ifMalware_test, knPredict, average='micro') # Success rate calculation" 669 | ] 670 | }, 671 | { 672 | "cell_type": "code", 673 | "execution_count": 17, 674 | "id": "894b2b35", 675 | "metadata": {}, 676 | "outputs": [ 677 | { 678 | "name": "stdout", 679 | "output_type": "stream", 680 | "text": [ 681 | "The Success Rate was calculated as % : 97.56118855679404 with the K-Nearest-Neighbors\n" 682 | ] 683 | } 684 | ], 685 | "source": [ 686 | "print(\"The Success Rate was calculated as % : \" + str(successRate) + \" with the K-Nearest-Neighbors\")" 687 | ] 688 | }, 689 | { 690 | "cell_type": "markdown", 691 | "id": "ffda807e", 692 | "metadata": {}, 693 | "source": [ 694 | "Visualization :" 695 | ] 696 | }, 697 | { 698 | "cell_type": "code", 699 | "execution_count": 18, 700 | "id": "a1af503a", 701 | "metadata": {}, 702 | "outputs": [ 703 | { 704 | "data": { 705 | "text/plain": [ 706 | "" 707 | ] 708 | }, 709 | "execution_count": 18, 710 | "metadata": {}, 711 | "output_type": "execute_result" 712 | }, 713 | { 714 | "data": { 715 | "image/png": "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\n", 716 | "text/plain": [ 717 | "
" 718 | ] 719 | }, 720 | "metadata": { 721 | "needs_background": "light" 722 | }, 723 | "output_type": "display_data" 724 | } 725 | ], 726 | "source": [ 727 | "plot_confusion_matrix(knModel,features_test,ifMalware_test)" 728 | ] 729 | }, 730 | { 731 | "cell_type": "code", 732 | "execution_count": 19, 733 | "id": "396f5630", 734 | "metadata": {}, 735 | "outputs": [ 736 | { 737 | "data": { 738 | "text/plain": [ 739 | "" 740 | ] 741 | }, 742 | "execution_count": 19, 743 | "metadata": {}, 744 | "output_type": "execute_result" 745 | }, 746 | { 747 | "data": { 748 | "image/png": "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AEDnzp157733ALj66qvp1q0bX/jCFxg5ciTXXXdd1fZ33XUXAwYMYO+99+app56qKl+8eDFDhgyha9euXHXVVVXl119/PT179qRnz57ccMMNACxatIhu3bpx+umn07NnTxYvXsyoUaPo2bMnvXr14pe//CUAP/nJT/jtb3/LjjvuCMCOO+7IGWecsdk5nXfeeZSXl7PvvvtyxRVXVJVfdtll9OjRg/3224/vfe97VfH37NmT3r17M3jwYABmzpzJMcccw7vvvstpp53GrFmz6NOnD2+++eYmVx4PP/wwBx54IH379uUrX/kKq1evrvrZff/736dv377cddddm8T22GOP0bdvX7bd9j8PzE2ePJlvf/vbdOrUiWeffbaG3ywMHjyYBQsW1FiX1YwZMxg2bBi77roru+yyC8OGDeOhhx7arN3rr79e9bMYNmwY99xzDwCtW7euinvNmjWb9P8fd9xx3H777fWKz0pXs3h89NNg7dq1HHfcccycOZPu3btvUte2bVvOOussbrzxxk3+U37llVe48847eeaZZ2jZsiXf+ta3uP322zn99NOr2syaNYt77rmHuXPnsm7dOvr27Uu/fv2q6tevX88LL7zA9OnTueqqq3jkkUeApBvh5ZdfpnXr1vTv35+jjz4aSdx66608//zzRAQDBw7kkEMOYZddduGNN97gtttu44ADDmDOnDksWbKEl19+GYAVK1awatUqPvjgA/bcc8+8P4sf//jH7LrrrmzYsIGhQ4fy0ksv0b59e+69915effVVJFV1e40ePZoZM2bQvn37zbrCdt99d26++Wauu+46HnjggU3q3nvvPcaMGcMjjzxCmzZt+NnPfsb111/P5ZcnM6Hutttu/P3vf98stmeeeWaTn9+aNWt45JFHGD9+PCtWrGDy5MkcdNBBm203bdo0evXqtVn5tddeW+N/wIMHD+amm27apGzJkiV07Nixar1Dhw4sWbJks2333Xdf7r//fo477jjuuusuFi9eXFX3/PPPc9ZZZ/HWW2/xhz/8oSox9OzZk1mzZm22L7MsCpoIJB0B3Ai0AG6OiGuq1Z8LnA9sAFYD50REvTqArzh23/psvtVatmzJQQcdxC233MKNN964Wf1FF11Enz59qj4JAzz66KPMmTOH/v37A/Dxxx+z++67b7LdM888w4gRI2jVqhWtWrXi2GOP3aT+hBNOAKBfv34sWrSoqnzYsGHstttuVW2efvppJHH88cfTpk2bqvKnnnqK4cOHs8cee3DAAQcAsOeee7Jw4UIuvPBCjj76aA477LCqT9tZTJkyhQkTJrB+/Xreeecd5s+fT48ePWjVqhVf//rXOeaYYzjmmGMAGDRoEKNGjeKkk06qOpcsnnvuOebPn8+gQYOApJ/8wAMPrKo/+eSTa9zunXfeYZ999qlaf+CBBzj00EPZfvvtOfHEE7n66qu54YYbaNGiBQBf/epX2X777encuTO/+tWvNtvfJZdcwiWXXJI57iwmTpzIRRddxNVXX83w4cPZbrvtquoGDhzIvHnzeOWVVzjjjDM48sgjadWqFS1atGC77bbjgw8+YIcddmjQeKz5K1gikNQCGAsMAyqAWZKmVvuP/k8RMS5tPxy4HjiiUDEV0jbbbMOUKVMYOnQoP/nJT/if//mfTep33nlnTj31VMaOHVtVFhGcccYZ/PSnP93q437mM58BoEWLFpvcLKz+2GC+xwgrkwPALrvswty5c5kxYwbjxo1jypQpTJw4kbZt27Jw4cJarwr+9a9/cd111zFr1ix22WUXRo0axZo1a9h222154YUXePTRR7n77rv59a9/zWOPPca4ceN4/vnnefDBB+nXrx9z5szJdN4RwbBhw5g8eXLe88m1/fbbb/Jc/eTJk3n66afp3LkzAMuWLeOxxx5j2LBhANx+++2Ul5dvMY66XBG0b9+emTNnVq1XVFQwZMiQzbbt3r07Dz/8MJB0Ez344IObtdlnn31o27YtL7/8clV8a9eupVWrVluM1WxLCnmPYACwICIWRsQnwB3AiNwGEbEqZ7UNEAWMp+Bat27Ngw8+yO23384tt9yyWf3FF1/M+PHjq/7DHjp0KHfffXfVE0XLly/nrbfe2mSbQYMGMW3aNNasWcPq1as36yLZkr/+9a8sX76cjz/+mPvuu49BgwZx8MEHc9999/HRRx/x4Ycfcu+993LwwQdvtu17773Hxo0bOfHEExkzZkxVF8sPfvADzj///KqnWFavXr3J0zcAq1atok2bNuy000783//9H3/5y1+q2q5cuZKjjjqKX/7yl8ydOxeAN998k4EDBzJ69GjKyso26QapzQEHHMAzzzxT1W//4Ycf8vrrr+fdbp999qnaZtWqVTz11FO8/fbbLFq0iEWLFjF27NgtJpeaXHLJJbz44oubfVVPAgCHH344Dz/8MO+//z7vv/8+Dz/8MIcffvhm7Sr/PWzcuJExY8Zw7rnnAkmSrfy389Zbb/Hqq69uksDatWvnoSRsqxSya6g9kPtXXQEMrN5I0vnAxcB2wBcLGE9R7Lrrrjz00EMMHjyYsrKyTeratWvH8ccfX3XztUePHowZM4bDDjuMjRs30rJlS8aOHcsee+xRtU3//v0ZPnw4++23H5/97Gfp1asXO+20U944BgwYwIknnkhFRQWnnXZa1afGUaNGMWDAAAC+8Y1vsP/++2/SpQRJX/aZZ57Jxo0bAaquWM477zxWr15N//79admyJS1btuS73/3uJtv27t2b/fffn+7du9OxY8eqrpsPPviAESNGsGbNGiKC66+/Hkj+I33jjTeICIYOHUrv3r154okn8p5fWVkZkyZNYuTIkaxduxaAMWPGsPfee9e63ZFHHsnXvvY1AO69916++MUvVl1VAYwYMYJLL720ap8Nadddd+VHP/pRVVfg5Zdfzq677gokv4tzzz2X8vJyJk+eXHXleMIJJ3DmmWcC8PTTT3PNNdfQsmVLttlmG37zm9/Qrl07AB5//HGOPvroBo/ZCm/+O6s4eXzNDylU1+PzOxak+1vJU0UNT9KXgSMi4hvp+teAgRFR4wPukk4FDo+IzR5DkXQOcA5Ap06d+lX/1PzKK69s0u/b3KxevZq2bdvy0UcfMXjwYCZMmEDfvn0bO6wm6/jjj+fnP/85Xbt2bexQGswJJ5zANddcU2MibO5/H03Zn55/m/tf3PyBgS2pTyKQNCciauznLOQVwRKgY856h7RsS+4AfltTRURMACYAlJeXN+nuo61xzjnnMH/+fNasWcMZZ5zhJFBP11xzDe+8806zSQSffPIJxx13XN6rIfv0OXVgJ04d2KmxwyhoIpgFdJXUhSQBnAKcmttAUteIeCNdPRp4A9vMn/70p8YOoVnp1q0b3bp1a+wwGsx22223ySPHZnVVsEQQEeslXQDMIHl8dGJEzJM0muQNt6nABZK+BKwD3gc2fzsp+/E8wJZZNYXq+rXmpaDvEUTEdGB6tbLLc5a/3RDHadWqFcuWLfNQ1GY5Ip2PwI+UWj7N4s3iDh06UFFRwdKlSxs7FLNPlcoZysxq0ywSQcuWLT0Dk5nZVmp2g86ZmVndOBGYmZU4JwIzsxJXsDeLC0XSUuCtvA1r1g54rwHDaQp8zqXB51wa6nPOe0REWU0VTS4R1Iek2Vt6xbq58jmXBp9zaSjUObtryMysxDkRmJmVuFJLBBMaO4BG4HMuDT7n0lCQcy6pewRmZra5UrsiMDOzapwIzMxKXLNMBJKOkPSapAWSLquh/jOS7kzrn5fUuRHCbFAZzvliSfMlvSTpUUl71LSfpiTfOee0O1FSSGryjxpmOWdJJ6W/63mSmvxkFhn+bXeS9Likf6T/vo9qjDgbiqSJkt6V9PIW6iXppvTn8ZKk+s9UFRHN6otk7oM3gT1J5kGeC/So1uZbwLh0+RTgzsaOuwjnfCjQOl0+rxTOOW23A/Ak8BxQ3thxF+H33BX4B7BLur57Y8ddhHOeAJyXLvcAFjV23PU858FAX+DlLdQfBfwFEHAA8Hx9j9kcrwgGAAsiYmFEfEIyBeaIam1GALely3cDQ9W0JzLIe84R8XhEfJSuPkcydWhTluX3DHA18DNgTTGDK5As53w2MDYi3geIiHeLHGNDy3LOAeyYLu8E/LuI8TW4iHgSWF5LkxHA7yPxHLCzpM/V55jNMRG0BxbnrFekZTW2iYj1wEpgt6JEVxhZzjnX10k+UTRlec85vWTuGBEPFjOwAsrye94b2FvSM5Kek3RE0aIrjCznfCVwmqQKkomwLixOaI2mrn/veTWL+QgsO0mnAeXAIY0dSyFJ2ga4HhjVyKEU27Yk3UNDSK76npTUKyJWNGZQBTYSmBQRv5B0IPAHST0jYmNjB9ZUNMcrgiVAx5z1DmlZjW0kbUtyObmsKNEVRpZzJp0f+n+B4RGxtkixFUq+c94B6AnMlLSIpC91ahO/YZzl91wBTI2IdRHxL+B1ksTQVGU5568DUwAi4lmgFcngbM1Vpr/3umiOiWAW0FVSF0nbkdwMnlqtzVTgjHT5y8Bjkd6FaaLynrOk/YHxJEmgqfcbQ55zjoiVEdEuIjpHRGeS+yLDI2J244TbILL8276P5GoASe1IuooWFjHGhpblnN8GhgJI2ockETTneWunAqenTw8dAKyMiHfqs8Nm1zUUEeslXQDMIHniYGJEzJM0GpgdEVOBW0guHxeQ3JQ5pfEirr+M53wt0Ba4K70v/nZEDG+0oOsp4zk3KxnPeQZwmKT5wAbgkohosle7Gc/5u8DvJH2H5MbxqKb8wU7SZJJk3i6973EF0BIgIsaR3Ac5ClgAfAScWe9jNuGfl5mZNYDm2DVkZmZ14ERgZlbinAjMzEqcE4GZWYlzIjAzK3FOBFZwkjZIelHSy5KmSdq5gfe/KH1mHkmrt9Bme0lPSGohqbOkj9OY5ksal76JXJdjlku6KV0eIumgnLpzJZ1en3NK93OlpO/laTNJ0pfrsM/OWxrVslq7H0taXP3nKekCSWdlPZ41DU4EVgwfR0SfiOhJ8t7G+Y0Qw1nAnyNiQ7r+ZkT0AfYjGbHyuLrsLCJmR8RF6eoQ4KCcunER8fv6BtzIppEM+FbdRJr/WD4lx4nAiu1Z0gGyJO0l6SFJcyQ9Jal7Wv5ZSfdKmpt+HZSW35e2nSfpnDoe96vA/dUL00EH/wb8V/pp+TH9Z86GTulxv5JezcyV9GRaNkTSA0rmsjgX+E56hXFw5Sd5Sd0lvVB5rHT//0yX+6VXKHMkzVCe0SMlnS1pVhrDPZJa51R/SdJsSa9LOiZt30LStek2L0n6Zl1+WBHxXE1vq6Yj2C6SVFOSsCbKicCKRlILkqEAKt/6nQBcGBH9gO8Bv0nLbwKeiIjeJOOyz0vLz0rblgMXSco0Ymw6NMGeEbGohrrWaUz/BH4F3BYR+wG3p3EAXA4cnsazydvY6T7HAb9Mr3qeyql7FdhOUpe06GTgTkkt02N9OT2ficCP85zGnyOifxrDKyTj61TqTPLp/WhgnKRWaf3KiOgP9AfOzomj8tw/L2l6nuPWZDZw8FZsZ59SzW6ICftU2l7SiyRXAq8Af5XUlqQ7pXLIC4DPpN+/CJwOkHblrEzLL5J0fLrckWQwtSzDJ7QDVlQr2yuNKYD7I+Ivkv4AnJDW/wH4ebr8DDBJ0hTgzxmOl2sKSQK4Jv1+MtCNZEC8v6bn3gLIN1ZMT0ljgJ1JhgqZkXuMdKTNNyQtBLoDhwH75dw/2Ink5/V65UYR8W+SoQrq6t30GNZMOBFYMXwcEX3ST98zSO4RTAJWpP30eUkaAnwJODAiPpI0k2RwsUzHr6Htm1mPHRHnShpI8ol7jqR+GY8LcCdJsvtzsqt4Q1IvYF5EHFiH/UwCjouIuZJGkQ4sVxli9ZBJZq+6MCJyEwZqmGlZW5H8TK2ZcNeQFU3av3wRySBhHwH/kvQVqJqHtXfa9FGS6TQr+7p3IvlE+36aBLqTDCud9bjvAy3SLpPa/I3/DED4VeCpNIa9IuL5iLicZFTLjtW2+4Bk2Ouajv0myeBvPyJJCgCvAWVKxs5HUktJ++aJbQfgnbRb6avV6r4iaRtJe5FM6fgaScI9L22PpL0ltclzjKz2BvI+eWRNhxOBFVVE/AN4iWQyka8CX5c0l+Q+QOUUhN8GDk1vrM4hearnIWBbSa+QdLM8V8dDPwx8IU+bC4EzJb0EfC2NA+BaSf9MH7v8G8m8ubmmAcdX3iyuYb93AqfxnzHzPyEZ/vxn6bm/SM5TR1vwI+B5km6qV6vVvQ28QDLr3LkRsQa4GZgP/D2NezzVegBqu0cg6edKRr5sLalC0pU51YOAv+aJ15oQjz5qJUHJtJXfiYivNXYsTZmSeS0u9s+xefEVgZWEiPg78Hj65JJtvXYkVyfWjPiKwMysxPmKwMysxDkRmJmVOCcCM7MS50RgZlbinAjMzErc/wfVrtQAIPNpNQAAAABJRU5ErkJggg==\n", 749 | "text/plain": [ 750 | "
" 751 | ] 752 | }, 753 | "metadata": { 754 | "needs_background": "light" 755 | }, 756 | "output_type": "display_data" 757 | } 758 | ], 759 | "source": [ 760 | "plot_precision_recall_curve(knModel,features_test,ifMalware_test)" 761 | ] 762 | }, 763 | { 764 | "cell_type": "code", 765 | "execution_count": 20, 766 | "id": "6aced8b7", 767 | "metadata": {}, 768 | "outputs": [ 769 | { 770 | "data": { 771 | "text/plain": [ 772 | "" 773 | ] 774 | }, 775 | "execution_count": 20, 776 | "metadata": {}, 777 | "output_type": "execute_result" 778 | }, 779 | { 780 | "data": { 781 | "image/png": "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4olVkBGoakhEJFOuEsF8gvaAxWY2C5gJfJ3a6O5/jzG2ZpWsrKKyylUiEBHJErWNoARYSzBHcep5AgdaTUagaSpFROqWKyPoEfYYWkp1BpDisUUVg1RGoBJB61BRUUFZWRkbN25s6VBEWpWSkhJ69epFcXH0h2dzZQRFQGdqZgAprSwjqATQxDStRFlZGVtttRV9+vTBrK4/PxHJ5u6sXbuWsrIydt5558jH5coIVrv75KaFtnlITVyvEkHrsHHjRmUCIo1kZmy33XasWbOmUcflShW3mP/C8spURqASQWuhTECk8Tbl/yZXRjBq00LZ/KhEICJStwZTRXf/LF+BxK26jUAZgUTTuXPn9OvZs2fTr18/PvzwQ6644go6duzIJ598Uue+9TnyyCP54osvGtznoIMOYuHChbXW33nnnZx77rnRg2+E6667jgEDBjB06FBGjBjB3Xff3WAsm2LhwoVMnDgRgEQiwfe+9z2GDh3KAw88wJlnnsmyZcua9P433HBDOm6AZDJJ9+7dmTRpUo39+vTpw6effppefu655zj66KPTy0888QSlpaUMHDiQYcOGceGFFzYpLoBFixYxePBgdtttNyZOnIh77ebVzz//nOOPP54999yTkSNHsnTpUgDeeecdhg4dmv7p0qULN9xwAwAXXXQRzzzzTJPjg00cdK41qu41pKohaZy5c+cyceJEnnjiCXbaaScAunXrxh/+8IdGvc/s2bPZeuutY4iwYe5OVVXdM8tOnTqVp556ivnz57N48WLmzp1bZ0LVVKWlpdx0000AvP766wAsXryYk046idtvv52BAwdGfq/Kysoay8lkkunTp3PyySen1z311FP069ePmTNnRr6epUuXcu6553LvvfeybNkyFi5cyG677RY5rvpMmDCB2267jffee4/33nuPJ598stY+11xzDUOHDmXJkiXcfffdnH/++QD079+fxYsXs3jxYhYtWkTHjh05/vjjATjvvPO49tprmxwfFFRGEJYIVDXU6lz56JucdOvLzfpz5aNvRjr3Cy+8wI9//GMee+wxdt111/T6008/nQceeIDPPqtdaL733nsZOXIkQ4cO5Sc/+Uk64cq8G73qqqvo378/3/nOdxg7dizXXXdd+viZM2cycuRI+vXrx4svvphev3LlSg466CD69u3LlVdemV5//fXXM2jQIAYNGpS+W1yxYgX9+/fn1FNPZdCgQaxcuZLx48czaNAgBg8ezB//+EcgSID+/Oc/06VLFwC6dOnCaaedVuuaJkyYQGlpKXvssQeXX355ev2kSZMYOHAge+65JxdddFE6/kGDBjFkyBAOPPBAoPrO+5NPPmHcuHEsWLCAoUOH8v7779coefzf//0f++67L8OHD+cHP/gB69evT392v/jFLxg+fDgzZ86sEdszzzzD8OHDadu2uu/LjBkzOP/88+nduzcvv/xyHd9sbb/73e+45JJLGDBgAABFRUVMmDAh0rH1Wb16NevWrWOfffbBzDj11FN55JFHau23bNkyDjnkEAAGDBjAihUr+M9//lNjn7lz57Lrrrumb0Z22mkn1q5dy8cff9ykGCH6A2WtXqqNQA+USVSJRILjjjuO5557Lp04pHTu3JnTTz+dG2+8sUai/NZbb/HAAw8wb948iouLOfvss7nvvvs49dRT0/ssWLCAv/3tb7zxxhtUVFQwfPhw9tprr/T2ZDLJ/PnzmT17NldeeSVPP/00APPnz2fp0qV07NiRESNGcNRRR2Fm/OUvf+HVV1/F3dl777357ne/yzbbbMN7773HXXfdxT777MOiRYtYtWpVusrhiy++YN26dXz11VfssssuOT+LX//612y77bZUVlYyatQolixZQs+ePXn44Yd5++23MbN0tdfkyZOZM2cOPXv2rFUV1qNHD26//Xauu+46HnvssRrbPv30U66++mqefvppOnXqxG9/+1uuv/56LrvsMgC22247XnvttVqxzZs3r8bnt3HjRp5++mluvfVWvvjiC2bMmMF+++2X8xqXLl0aqSro2Wef5Wc/+1mt9R07duQf//hHjXWrVq2iV69e6eVevXqxatWqWscOGTKEv//97xxwwAHMnz+fDz/8kLKyMrbffvv0Pvfffz9jx46tcdzw4cOZN28eY8aMyRl3QwonI9ADZa3W5ce0zER4xcXF7Lffftxxxx3ceOONtbZPnDiRoUOHpu+EIbhrW7RoESNGjADgm2++oUePHjWOmzdvHqNHj6akpISSkhKOOeaYGtv/67/+C4C99tqLFStWpNcfeuihbLfddul9XnrpJcyM448/nk6dOqXXv/jiixx77LHstNNO7LPPPgDssssufPDBB5x33nkcddRRHHbYYem77SgefPBBpk2bRjKZZPXq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\n", 782 | "text/plain": [ 783 | "
" 784 | ] 785 | }, 786 | "metadata": { 787 | "needs_background": "light" 788 | }, 789 | "output_type": "display_data" 790 | } 791 | ], 792 | "source": [ 793 | "plot_roc_curve(knModel,features_test,ifMalware_test)" 794 | ] 795 | }, 796 | { 797 | "cell_type": "code", 798 | "execution_count": null, 799 | "id": "038c4e87", 800 | "metadata": {}, 801 | "outputs": [], 802 | "source": [] 803 | } 804 | ], 805 | "metadata": { 806 | "kernelspec": { 807 | "display_name": "Python 3 (ipykernel)", 808 | "language": "python", 809 | "name": "python3" 810 | }, 811 | "language_info": { 812 | "codemirror_mode": { 813 | "name": "ipython", 814 | "version": 3 815 | }, 816 | "file_extension": ".py", 817 | "mimetype": "text/x-python", 818 | "name": "python", 819 | "nbconvert_exporter": "python", 820 | "pygments_lexer": "ipython3", 821 | "version": "3.9.10" 822 | } 823 | }, 824 | "nbformat": 4, 825 | "nbformat_minor": 5 826 | } 827 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Emrah Yıldırım 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Malware-Detection-Using-Machine-Learning 2 | 3 | 4 | ## About The Project 5 | 6 | * This project analyzes PE information of exe files to detect malware. 7 | * In this repository you will learn how to create your own dataset and will be able to see the use of machine learning models using the dataset. 8 | * We will use machine learning for detect malware. 9 | 10 | 11 | ## Getting Started 12 | This pe information was extracted using pefile. 13 | 14 | If you want to create your own dataset, check out ```Data_Set_Generator.ipynb``` 15 | 16 | or you can use ```data-set/MalwareDataSet.csv``` 17 | 18 | ## Dataset 19 | 20 | This dataset (MalwareDataSet.csv) contains a total of ```137,444 data```. 21 | There are ```96,526 safe and 40,918 malware```. 22 | 23 | It has a total of 9 columns. The information of these columns is as follows: 24 | ``` 25 | * AddressOfEntryPoint 26 | * MajorLinkerVersion 27 | * MajorImageVersion 28 | * MajorOperatingSystemVersion 29 | * DllCharacteristics 30 | * SizeOfStackReserve 31 | * NumberOfSections 32 | * ResourceSize 33 | * legitimate 34 | ``` 35 | 36 | 37 | ## Classification 38 | 39 | We used 3 different classification algorithms. These : 40 | ``` 41 | * K Nearest Neighbors (KNN) 42 | * Decision Tree 43 | * Random Forest 44 | ``` 45 | 46 | 47 | ## Results 48 | ``` 49 | The Success Rate was calculated as % 97.56118855679404 with the K-Nearest-Neighbors 50 | 51 | The Success Rate was calculated as % 98.59433660254359 with the Decision Tree 52 | 53 | The Success Rate was calculated as % 99.1240068682518 with the Random Forest 54 | ``` 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /Random_Forest.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "918bf7bd", 6 | "metadata": {}, 7 | "source": [ 8 | "# Malware Analysis With Machine Learning - Random Forest" 9 | ] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": 1, 14 | "id": "034fde8d", 15 | "metadata": {}, 16 | "outputs": [], 17 | "source": [ 18 | "import numpy as np\n", 19 | "import pandas as pd\n", 20 | "from sklearn.model_selection import train_test_split\n", 21 | "from sklearn.ensemble import RandomForestClassifier\n", 22 | "from sklearn.metrics import f1_score\n", 23 | "from sklearn.metrics import plot_confusion_matrix,plot_precision_recall_curve,plot_roc_curve" 24 | ] 25 | }, 26 | { 27 | "cell_type": "markdown", 28 | "id": "5c6b661b", 29 | "metadata": {}, 30 | "source": [ 31 | "Data set reading :" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 2, 37 | "id": "c4e18ea4", 38 | "metadata": {}, 39 | "outputs": [], 40 | "source": [ 41 | "data = pd.read_csv('../Malware-Detection-Using-Machine-Learning/data-set/MalwareDataSet.csv') " 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 3, 47 | "id": "386e250f", 48 | "metadata": {}, 49 | "outputs": [ 50 | { 51 | "data": { 52 | "text/html": [ 53 | "
\n", 54 | "\n", 67 | "\n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | "
AddressOfEntryPointMajorLinkerVersionMajorImageVersionMajorOperatingSystemVersionDllCharacteristicsSizeOfStackReserveNumberOfSectionsResourceSizelegitimate
0104079663308826214449521
153549663308826214449521
2588079663308826214441364901
32516696633088262144419401
470387966330882621444830981
..............................
13743912329111053308810485765816540
137440400002613276810485768676240
1374415961010053308810485765226480
1374425121620101048576822160
13744322731110533088104857653184640
\n", 217 | "

137444 rows × 9 columns

\n", 218 | "
" 219 | ], 220 | "text/plain": [ 221 | " AddressOfEntryPoint MajorLinkerVersion MajorImageVersion \\\n", 222 | "0 10407 9 6 \n", 223 | "1 5354 9 6 \n", 224 | "2 58807 9 6 \n", 225 | "3 25166 9 6 \n", 226 | "4 70387 9 6 \n", 227 | "... ... ... ... \n", 228 | "137439 123291 11 0 \n", 229 | "137440 40000 2 6 \n", 230 | "137441 59610 10 0 \n", 231 | "137442 51216 2 0 \n", 232 | "137443 22731 11 0 \n", 233 | "\n", 234 | " MajorOperatingSystemVersion DllCharacteristics SizeOfStackReserve \\\n", 235 | "0 6 33088 262144 \n", 236 | "1 6 33088 262144 \n", 237 | "2 6 33088 262144 \n", 238 | "3 6 33088 262144 \n", 239 | "4 6 33088 262144 \n", 240 | "... ... ... ... \n", 241 | "137439 5 33088 1048576 \n", 242 | "137440 1 32768 1048576 \n", 243 | "137441 5 33088 1048576 \n", 244 | "137442 1 0 1048576 \n", 245 | "137443 5 33088 1048576 \n", 246 | "\n", 247 | " NumberOfSections ResourceSize legitimate \n", 248 | "0 4 952 1 \n", 249 | "1 4 952 1 \n", 250 | "2 4 136490 1 \n", 251 | "3 4 1940 1 \n", 252 | "4 4 83098 1 \n", 253 | "... ... ... ... \n", 254 | "137439 5 81654 0 \n", 255 | "137440 8 67624 0 \n", 256 | "137441 5 22648 0 \n", 257 | "137442 8 2216 0 \n", 258 | "137443 5 318464 0 \n", 259 | "\n", 260 | "[137444 rows x 9 columns]" 261 | ] 262 | }, 263 | "execution_count": 3, 264 | "metadata": {}, 265 | "output_type": "execute_result" 266 | } 267 | ], 268 | "source": [ 269 | "data" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 4, 275 | "id": "dd389773", 276 | "metadata": {}, 277 | "outputs": [ 278 | { 279 | "data": { 280 | "text/plain": [ 281 | "(137444, 9)" 282 | ] 283 | }, 284 | "execution_count": 4, 285 | "metadata": {}, 286 | "output_type": "execute_result" 287 | } 288 | ], 289 | "source": [ 290 | "data.shape" 291 | ] 292 | }, 293 | { 294 | "cell_type": "code", 295 | "execution_count": 5, 296 | "id": "5c146794", 297 | "metadata": {}, 298 | "outputs": [ 299 | { 300 | "data": { 301 | "text/html": [ 302 | "
\n", 303 | "\n", 316 | "\n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | "
AddressOfEntryPointMajorLinkerVersionMajorImageVersionMajorOperatingSystemVersionDllCharacteristicsSizeOfStackReserveNumberOfSectionsResourceSizelegitimate
count1.374440e+05137444.000000137444.000000137444.000000137444.0000001.374440e+05137444.0000001.374440e+05137444.000000
mean1.722186e+058.62078468.7318765.09873822301.0434369.306841e+054.9971192.474766e+050.297707
std3.438014e+064.0956351185.70987399.43758415444.7532195.553175e+051.9172372.129516e+070.457252
min0.000000e+000.0000000.0000000.0000000.0000000.000000e+001.0000000.000000e+000.000000
25%1.272100e+048.0000000.0000004.000000320.0000001.048576e+064.0000002.216000e+030.000000
50%5.300800e+049.0000000.0000005.00000033088.0000001.048576e+065.0000009.640000e+030.000000
75%6.157800e+0410.0000006.0000005.00000033088.0000001.048576e+065.0000002.376250e+041.000000
max1.074484e+09255.00000028619.00000036868.00000049504.0000003.355443e+0740.0000004.294903e+091.000000
\n", 430 | "
" 431 | ], 432 | "text/plain": [ 433 | " AddressOfEntryPoint MajorLinkerVersion MajorImageVersion \\\n", 434 | "count 1.374440e+05 137444.000000 137444.000000 \n", 435 | "mean 1.722186e+05 8.620784 68.731876 \n", 436 | "std 3.438014e+06 4.095635 1185.709873 \n", 437 | "min 0.000000e+00 0.000000 0.000000 \n", 438 | "25% 1.272100e+04 8.000000 0.000000 \n", 439 | "50% 5.300800e+04 9.000000 0.000000 \n", 440 | "75% 6.157800e+04 10.000000 6.000000 \n", 441 | "max 1.074484e+09 255.000000 28619.000000 \n", 442 | "\n", 443 | " MajorOperatingSystemVersion DllCharacteristics SizeOfStackReserve \\\n", 444 | "count 137444.000000 137444.000000 1.374440e+05 \n", 445 | "mean 5.098738 22301.043436 9.306841e+05 \n", 446 | "std 99.437584 15444.753219 5.553175e+05 \n", 447 | "min 0.000000 0.000000 0.000000e+00 \n", 448 | "25% 4.000000 320.000000 1.048576e+06 \n", 449 | "50% 5.000000 33088.000000 1.048576e+06 \n", 450 | "75% 5.000000 33088.000000 1.048576e+06 \n", 451 | "max 36868.000000 49504.000000 3.355443e+07 \n", 452 | "\n", 453 | " NumberOfSections ResourceSize legitimate \n", 454 | "count 137444.000000 1.374440e+05 137444.000000 \n", 455 | "mean 4.997119 2.474766e+05 0.297707 \n", 456 | "std 1.917237 2.129516e+07 0.457252 \n", 457 | "min 1.000000 0.000000e+00 0.000000 \n", 458 | "25% 4.000000 2.216000e+03 0.000000 \n", 459 | "50% 5.000000 9.640000e+03 0.000000 \n", 460 | "75% 5.000000 2.376250e+04 1.000000 \n", 461 | "max 40.000000 4.294903e+09 1.000000 " 462 | ] 463 | }, 464 | "execution_count": 5, 465 | "metadata": {}, 466 | "output_type": "execute_result" 467 | } 468 | ], 469 | "source": [ 470 | "data.describe()" 471 | ] 472 | }, 473 | { 474 | "cell_type": "code", 475 | "execution_count": 6, 476 | "id": "c4294347", 477 | "metadata": {}, 478 | "outputs": [ 479 | { 480 | "data": { 481 | "text/plain": [ 482 | "legitimate\n", 483 | "0 96526\n", 484 | "1 40918\n", 485 | "dtype: int64" 486 | ] 487 | }, 488 | "execution_count": 6, 489 | "metadata": {}, 490 | "output_type": "execute_result" 491 | } 492 | ], 493 | "source": [ 494 | "data.groupby(data['legitimate']).size()" 495 | ] 496 | }, 497 | { 498 | "cell_type": "markdown", 499 | "id": "2eab99e9", 500 | "metadata": {}, 501 | "source": [ 502 | "We have a total of 137.444 data. There are 96.526 safe and 40.918 malware." 503 | ] 504 | }, 505 | { 506 | "cell_type": "code", 507 | "execution_count": 7, 508 | "id": "b87ac400", 509 | "metadata": {}, 510 | "outputs": [], 511 | "source": [ 512 | "features = data.iloc[:,[0,1,2,3,4,5,6,7]].values # extracting the first 8 columns from the dataset - features" 513 | ] 514 | }, 515 | { 516 | "cell_type": "code", 517 | "execution_count": 8, 518 | "id": "7dcb27ec", 519 | "metadata": {}, 520 | "outputs": [ 521 | { 522 | "data": { 523 | "text/plain": [ 524 | "array([[ 10407, 9, 6, ..., 262144, 4, 952],\n", 525 | " [ 5354, 9, 6, ..., 262144, 4, 952],\n", 526 | " [ 58807, 9, 6, ..., 262144, 4, 136490],\n", 527 | " ...,\n", 528 | " [ 59610, 10, 0, ..., 1048576, 5, 22648],\n", 529 | " [ 51216, 2, 0, ..., 1048576, 8, 2216],\n", 530 | " [ 22731, 11, 0, ..., 1048576, 5, 318464]])" 531 | ] 532 | }, 533 | "execution_count": 8, 534 | "metadata": {}, 535 | "output_type": "execute_result" 536 | } 537 | ], 538 | "source": [ 539 | "features" 540 | ] 541 | }, 542 | { 543 | "cell_type": "code", 544 | "execution_count": 9, 545 | "id": "137e5f7f", 546 | "metadata": {}, 547 | "outputs": [], 548 | "source": [ 549 | "ifMalware = data.iloc[:,8].values # extracting the legitimate column of the dataset - safe & malware results" 550 | ] 551 | }, 552 | { 553 | "cell_type": "code", 554 | "execution_count": 10, 555 | "id": "52df4a9c", 556 | "metadata": {}, 557 | "outputs": [ 558 | { 559 | "data": { 560 | "text/plain": [ 561 | "array([1, 1, 1, ..., 0, 0, 0])" 562 | ] 563 | }, 564 | "execution_count": 10, 565 | "metadata": {}, 566 | "output_type": "execute_result" 567 | } 568 | ], 569 | "source": [ 570 | "ifMalware" 571 | ] 572 | }, 573 | { 574 | "cell_type": "markdown", 575 | "id": "bfc0b019", 576 | "metadata": {}, 577 | "source": [ 578 | "We will use 75% of our dataset for training and 25% for testing :" 579 | ] 580 | }, 581 | { 582 | "cell_type": "code", 583 | "execution_count": 11, 584 | "id": "8a988b38", 585 | "metadata": {}, 586 | "outputs": [], 587 | "source": [ 588 | "features_train, features_test, ifMalware_train, ifMalware_test = train_test_split(features, ifMalware, test_size=0.25)" 589 | ] 590 | }, 591 | { 592 | "cell_type": "markdown", 593 | "id": "834ffef4", 594 | "metadata": {}, 595 | "source": [ 596 | "Learning and Predict :" 597 | ] 598 | }, 599 | { 600 | "cell_type": "code", 601 | "execution_count": 12, 602 | "id": "f18cafe1", 603 | "metadata": {}, 604 | "outputs": [], 605 | "source": [ 606 | "rfModel = RandomForestClassifier() # Defined the model." 607 | ] 608 | }, 609 | { 610 | "cell_type": "code", 611 | "execution_count": 13, 612 | "id": "a8b11bd3", 613 | "metadata": {}, 614 | "outputs": [ 615 | { 616 | "data": { 617 | "text/plain": [ 618 | "RandomForestClassifier()" 619 | ] 620 | }, 621 | "execution_count": 13, 622 | "metadata": {}, 623 | "output_type": "execute_result" 624 | } 625 | ], 626 | "source": [ 627 | "rfModel.fit(features_train, ifMalware_train) # Provided training data." 628 | ] 629 | }, 630 | { 631 | "cell_type": "code", 632 | "execution_count": 14, 633 | "id": "4e41403c", 634 | "metadata": {}, 635 | "outputs": [], 636 | "source": [ 637 | "rfPredict = rfModel.predict(features_test) # Give the test data then call predict." 638 | ] 639 | }, 640 | { 641 | "cell_type": "markdown", 642 | "id": "42a29bb3", 643 | "metadata": {}, 644 | "source": [ 645 | "Results :" 646 | ] 647 | }, 648 | { 649 | "cell_type": "code", 650 | "execution_count": 15, 651 | "id": "310395c3", 652 | "metadata": {}, 653 | "outputs": [ 654 | { 655 | "name": "stdout", 656 | "output_type": "stream", 657 | "text": [ 658 | "Number of mislabeled out of a total of 34361 test entries: 301\n" 659 | ] 660 | } 661 | ], 662 | "source": [ 663 | "print(\"Number of mislabeled out of a total of %d test entries: %d\" % (features_test.shape[0], \n", 664 | " (ifMalware_test != rfPredict).sum()))" 665 | ] 666 | }, 667 | { 668 | "cell_type": "code", 669 | "execution_count": 16, 670 | "id": "3da4e570", 671 | "metadata": {}, 672 | "outputs": [], 673 | "source": [ 674 | "successRate = 100 * f1_score(ifMalware_test, rfPredict, average='micro') # Success rate calculation" 675 | ] 676 | }, 677 | { 678 | "cell_type": "code", 679 | "execution_count": 17, 680 | "id": "9a79bdd6", 681 | "metadata": {}, 682 | "outputs": [ 683 | { 684 | "name": "stdout", 685 | "output_type": "stream", 686 | "text": [ 687 | "The Success Rate was calculated as % : 99.1240068682518 with the Random Forest\n" 688 | ] 689 | } 690 | ], 691 | "source": [ 692 | "print(\"The Success Rate was calculated as % : \" + str(successRate) + \" with the Random Forest\")" 693 | ] 694 | }, 695 | { 696 | "cell_type": "markdown", 697 | "id": "fc87041f", 698 | "metadata": {}, 699 | "source": [ 700 | "Visualization :" 701 | ] 702 | }, 703 | { 704 | "cell_type": "code", 705 | "execution_count": 18, 706 | "id": "b5fb046a", 707 | "metadata": {}, 708 | "outputs": [ 709 | { 710 | "data": { 711 | "text/plain": [ 712 | "" 713 | ] 714 | }, 715 | "execution_count": 18, 716 | "metadata": {}, 717 | "output_type": "execute_result" 718 | }, 719 | { 720 | "data": { 721 | "image/png": "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\n", 722 | "text/plain": [ 723 | "
" 724 | ] 725 | }, 726 | "metadata": { 727 | "needs_background": "light" 728 | }, 729 | "output_type": "display_data" 730 | } 731 | ], 732 | "source": [ 733 | "plot_confusion_matrix(rfModel,features_test,ifMalware_test)" 734 | ] 735 | }, 736 | { 737 | "cell_type": "code", 738 | "execution_count": 19, 739 | "id": "326f5f69", 740 | "metadata": {}, 741 | "outputs": [ 742 | { 743 | "data": { 744 | "text/plain": [ 745 | "" 746 | ] 747 | }, 748 | "execution_count": 19, 749 | "metadata": {}, 750 | "output_type": "execute_result" 751 | }, 752 | { 753 | "data": { 754 | "image/png": "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TJj+ZEyY/mST9gGURz2fq23irqFc1zy4gpUvvdms+xzy4S5cfdLQzPWPOuooli5dCsAzzzzDxRdfzLvvvkunTp2YOXMmhxxyCLNmzaKsrIy3336btWvX8sUvfpGf/vSnAMycOZMf/ehHdOvWjcMOO4y99toLgPXr1/P1r3+dV199lR49ejBz5kz69OnD5MmT6dSpE4sXL+aVV17h9ttv54477uCpp55i9OjRzJo1q95YG9pnx44dWbx4MWPGjOH888/n/PPPZ9OmTey9997ceuutDBo0iPvuu49rrrmG9u3b07VrV/7yl79w1VVX8c477/DEE09wxRVX8Mc//pErr7ySQYMGAcnZ03nnnbdTLLfeeiszZsxg27ZtDBgwgDvvvJO99957p2M89thjrFixgjPPPJNt27bxwQcf8Lvf/Y6BAwey77778tZbbzFu3DjeeustRo4cyRVXXMGqVavYd999+fa3v83atWvrbEvtNt9www01sW3dupWlS5dy2GGH1ZQ98MADnHTSSRxwwAHMnj2b73znOzu1afDgwXTo0IFXX32V/fffP/PfUG21zzrqMnfuXCZOnMhee+1Fv379GDBgAM888wwAAwYMoH///kByFjB37lyGDBnCMcccw+TJk6mqqqJDhzb3cWAZFbRrSNIJkp6VtEbS5XWsP1fSMkkVkp6QNKSQ8RTD+++/z1//+lfGjRsHwKBBg3j88cdZvHgxU6dO3eHDoqKigjlz5rBs2TLmzJnDhg0bePnll7n66qv5+9//zhNPPMHKlStr6l944YV87WtfY+nSpXzlK1/hoosuqlm3efNmnnrqKW688UbGjRvHJZdcwooVK1i2bBkVFRU19caOHcuIESMYPXp03n1WVlby5JNPcsMNN3DOOefwy1/+kkWLFnHdddfxzW9+E4CpU6cyf/58lixZQllZGXvuuSdTp07l1FNPpaKiglNPPZXly5czcuTIvL+7k08+mYULF7JkyRIGDx7MbbfdVucxAKZPn87FF19MRUUF5eXl9OrVa4d9lZWV0alTp5oYctXXltptzlVeXs6wYcN2KLvnnnuYNGkSkyZN4p577qmzTQsWLKBdu3b06NFjh/K//e1vNV10ua/crq3G2rhxI717965Z7tWrFxs3bqy3HKBdu3YMGDCAJUuW7PJxrfUr2FcASe2BacBxQCWwUFJZRKzM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\n", 755 | "text/plain": [ 756 | "
" 757 | ] 758 | }, 759 | "metadata": { 760 | "needs_background": "light" 761 | }, 762 | "output_type": "display_data" 763 | } 764 | ], 765 | "source": [ 766 | "plot_precision_recall_curve(rfModel,features_test,ifMalware_test)" 767 | ] 768 | }, 769 | { 770 | "cell_type": "code", 771 | "execution_count": 20, 772 | "id": "61719e65", 773 | "metadata": {}, 774 | "outputs": [ 775 | { 776 | "data": { 777 | "text/plain": [ 778 | "" 779 | ] 780 | }, 781 | "execution_count": 20, 782 | "metadata": {}, 783 | "output_type": "execute_result" 784 | }, 785 | { 786 | "data": { 787 | "image/png": "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oGmsWrWKBQsWsHz58qYOxaxFqKiooGvXrrRt2zbzOaUygtZAB4pXrTfLj1a5I0FZLViwgI4dO9K9e3e/9mY5iwgWL17MggUL6NGjR+bzSmUE70bE6IaFZi3Z8uXLnQmYlYkktt56axYtWlSv80r1LPZ/rzWYMwGz8tmQ/7dSGcF+GxaKmZk1F3VmBBHxz3IFkrdonk0a1ghat27NwIED6d+/P8OGDeOjjz5qlOuOHz+eU089tVGu1b17d3bZZRcGDhzIwIEDeeaZZxrlurVNmzaNBx54oMa2Bx98kMrKSvr27ctuu+3GmWeeCcBFF13EFVdc0Wj33muvvaqXzz77bPr168fZZ5/Nddddxy233NKga0+dOpXjjz++xrZvfetbfOlLX6qxbdSoUfzxj3+ssa1Dhw7Vy6+//joHHnggvXr1Yvfdd+eII47gvffea1Bsd911F/369aNVq1ZMnjx5vcc99NBD7LzzzvTs2ZNf/vKX1dvfeustBg0aRM+ePRkxYgQrV64E4Oqrr+bGG29sUGxVNmjQuebMlRQtT7t27Zg2bRozZsxgq6224pprrmnqkIp67LHHmDZtGtOmTavxoVmX1atX1+setTOCGTNmcOqpp/KHP/yBWbNmMXnyZHr27Fmva2ZVmLmNGzeO6dOnc/nll/ODH/yA733ve5mvUyzNl156Kaeddlr1+kcffcSUKVNYsmQJc+fOzXTd5cuXc9BBB3HSSSfxxhtv8NJLL3HyySfXu769tv79+3P33Xezzz77rPeYNWvWcMopp/Dggw8ya9YsJkyYwKxZswD48Y9/zI9+9CPmzJnDZz7zGW644QYAjjvuOMaOHdug2Kpk7Udg1mA/u3cms975V6Nes+9nt+TCYdmnxRg8eDDTp08H4IUXXuD0009n+fLltGvXjptuuomdd96Z8ePHM2nSJD755BPefPNNvv3tb/OrX/0KgJtuuolf/OIXdO7cmQEDBrD55psDMG/ePI477jg++OADunTpwk033US3bt0YNWoU7dq1Y+rUqbz//vvceOON3HLLLTz77LMMGjSI8ePHrzfWuq5ZUVHB1KlTGTJkCKeccgqnnHIKixYton379lx//fX07t2bu+66i5/97Ge0bt2aTp068de//pULLriATz/9lL/97W+cd9553H///Zx//vn07t0bSEpPJ5100jqxXH/99YwbN46VK1fSs2dPbr31Vtq3b7/OPZ588klmzpzJ97//fVauXMnatWv505/+RK9evejQoQPLli1j+PDhLFu2jD322IPzzjuP2bNn06FDB8466yzefPPNommpneYxY8ZUx7Z06VKmT5/OgAEDqrfdfffdDBs2jO22246JEyfyk5/8pOTfxu23387gwYMZNmxY9bZ999235Hml9OnTp+QxL7zwAj179mSnnXYC4Mgjj+Qvf/kLffr04dFHH+X2228H4Nhjj+Wiiy7ipJNOon379nTv3p0XXniBPffcs0ExtrgSgbVca9as4ZFHHmH48OEA9O7dm6eeeoqpU6cyevToGh8W06ZN44477uCVV17hjjvuYP78+bz77rtceOGFPP300/ztb3+r/sYG8MMf/pBjjz2W6dOn893vfrfGt9MPP/yQZ599ll//+tcMHz6cH/3oR8ycOZNXXnmFadOmVR83dOhQBg4cyKBBg0pec8GCBTzzzDOMGTOGE088kbFjxzJlyhSuuOIKTj45mSpk9OjRPPzww7z88stMmjSJzTbbjNGjRzNixAimTZvGiBEjmDFjBnvssUfJ1+7QQw/lxRdf5OWXX6ZPnz7V30pr3wPguuuu4/TTT2fatGlMnjyZrl271rjWpEmTqktpI0aMqLFvfWmpneZCkydPpn///jW2TZgwgZEjRzJy5EgmTJhQMn1A5tdi6dKl1VV4tX8K/ybqY+HChey4447V6127dmXhwoUsXryYzp0706ZNmxrbq1RWVvLUU09t0D0LtZgSgTuUNb36fHNvTJ9++ikDBw5k4cKF9OnTh69//esALFmyhGOPPZY33ngDSaxatar6nP32249OnToB0LdvX95++20++OAD9t13X7p06QLAiBEjeP311wF49tlnufvupKP9McccwznnnFN9rWHDhiGJXXbZhe22245ddknmeerXrx/z5s1j4MCBQFI1tM0221SfV9c1Dz/8cFq3bs2yZct45plnOPzww6v3rVixAoAhQ4YwatQojjjiCA499NAGvYYzZszgpz/9KR999BHLli1j//33X+89Bg8ezM9//nMWLFjAoYceSq9evTLdo660FKa5tnfffbf6PQF47733eOONN/jyl7+MJNq2bcuMGTPo379/0Sdq6vuUTceOHWtk4E1p22235dVXX23wdXItEUg6QNJrkuZIOrfI/s0l3ZHuf15S9zzjSe6Z9x1sY1P17fPtt98mIqrbCP7nf/6HoUOHMmPGDO69994avZ+rqnwgqS6pb118oaprtWrVqsZ1W7VqtcHX3WKLLQBYu3YtnTt3rm5bmDZtGrNnzwaSb+aXXHIJ8+fPZ4899mDx4sXrXKdfv35MmTKl5P1GjRrF1VdfzSuvvMKFF15Y/VoVu8dRRx1V/a3/wAMP5NFHH82UprrSUpjm2tq1a1fjvbvzzjv58MMP6dGjB927d2fevHnVpYKtt96aDz/8sPrYf/7zn9WZb9bXIo8SwQ477MD8+fOr1xcsWMAOO+zA1ltvzUcffVT9d1K1vUpVtWZD5ZYRpMNXXwN8E+gLjJTUt9ZhxwMfRkRP4NfAZXnFY9a+fXuuuuoqrrzySlavXs2SJUuq/6nqqquvMmjQIJ544gkWL17MqlWruOuuu6r37bXXXkycOBGA2267jb333rvB8Wa55pZbbkmPHj2qY4kIXn75ZQDefPNNBg0axOjRo+nSpQvz58+nY8eOLF26tPr8s88+m0svvbS6ZLN27Vquu+66de6zdOlStt9+e1atWsVtt91Wvb3YPebOnctOO+3EaaedxiGHHFLdJlNKXWmpS58+fZgzZ071+oQJE3jooYeYN28e8+bNY8qUKdWv47777ssdd9xR/eTN+PHjGTp0KABHHXUUzzzzDPfff3/1tZ588klmzJhR435VJYJiP3371v6Iy+aLX/wib7zxBm+99RYrV65k4sSJDB8+HEkMHTq0+kmnm2++mUMOOaT6vNdff32darENkWeJYE9gTkTMjYiVwETgkFrHHALcnC7/EdhP7n1kOdptt93YddddmTBhAueccw7nnXceu+22W6Zv5ttvvz0XXXQRgwcPZsiQITUaAceOHctNN93Errvuyq233spvf/vbBsea9Zq33XYbN9xwAwMGDKBfv3785S9/AZIP+V122YX+/fuz1157MWDAAIYOHcqsWbMYOHAgd9xxB7vuuiu/+c1vGDlyJH369KF///5Fn7K5+OKLGTRoEEOGDKluWF7fPe6880769+/PwIEDmTFjRr2eCFpfWurSu3dvlixZwtKlS5k3bx5vv/12jcdGe/ToQadOnXj++ec5+OCD2Xvvvdljjz0YOHAgTz/9NJddlnz/bNeuHffddx9jx46lV69e9O3bl2uvvbZGtdOGuOeee+jatSvPPvssBx10UHW12jvvvMOBBx4IQJs2bbj66qvZf//96dOnD0cccQT9+iVVqZdddhljxoyhZ8+eLF68uMZjsk8//XR1VWdDKK9J3SUdBhwQESek68cAgyLi1IJjZqTHLEjX30yP+aDWtU4ETgTo1q3bHm+//Xa94/m/We/x56kLufKIAVS0Xbee0fIxe/bsTE9NmDXEr3/9azp27MgJJ5zQ1KGUzdSpUxkzZgy33nrrOvuK/d9JmhIRlcWu1SyeGoqIcRFRGRGVG5o7f73vdlzz3d2dCZhtgk466aQa7S8twQcffMDFF1/cKNfK86mhhcCOBetd023FjlkgqQ3QiWTeAzOzzCoqKjjmmGOaOoyyaowqoSp5lgheBHpJ6iFpM+BIYFKtYyYBx6bLhwGPRl51VdZk/Jaalc+G/L/llhFExGrgVOBhYDZwZ0TMlDRa0vD0sBuArSXNAc4A1nnE1Jq3iooKFi9e7MzArAyq5iOoqKio13m5NRbnpbKyMuoauMk2Lp6hzKy81jdDWV2NxS2mZ7E1jbZt29ZrpiQzK79m8dSQmZnlxxmBmVkL54zAzKyFa3aNxZIWAfXvWpzYBvig5FGbFqe5ZXCaW4aGpPlzEVG0R26zywgaQtLk9bWab6qc5pbBaW4Z8kqzq4bMzFo4ZwRmZi1cS8sIxjV1AE3AaW4ZnOaWIZc0t6g2AjMzW1dLKxGYmVktzgjMzFq4TTIjkHSApNckzZG0zoimkjaXdEe6/3lJ3ZsgzEaVIc1nSJolabqkRyR9rinibEyl0lxw3HckhaRm/6hhljRLOiJ9r2dKur3cMTa2DH/b3SQ9Jmlq+vd9YFPE2Vgk3Sjp/XQGx2L7Jemq9PWYLmn3Bt80IjapH6A18CawE7AZ8DLQt9YxJwPXpctHAnc0ddxlSPNQoH26fFJLSHN6XEfgSeA5oLKp4y7D+9wLmAp8Jl3ftqnjLkOaxwEnpct9gXlNHXcD07wPsDswYz37DwQeBAR8CXi+offcFEsEewJzImJuRKwEJgKH1DrmEODmdPmPwH6SVMYYG1vJNEfEYxHxSbr6HMmMcc1ZlvcZ4GLgMmBTGAc7S5r/E7gmIj4EiIj3yxxjY8uS5gC2TJc7Ae+UMb5GFxFPAv+s45BDgFsi8RzQWdL2DbnnppgR7ADML1hfkG4rekwkE+gsAbYuS3T5yJLmQseTfKNozkqmOS0y7xgR95czsBxleZ+/AHxB0tOSnpN0QNmiy0eWNF8EHC1pAfAA8MPyhNZk6vv/XpLnI2hhJB0NVAJfaepY8iSpFTAGGNXEoZRbG5LqoX1JSn1PStolIj5qyqByNhIYHxFXShoM3Cqpf0SsberAmotNsUSwENixYL1ruq3oMZLakBQnF5clunxkSTOSvgacDwyPiBVlii0vpdLcEegPPC5pHkld6qRm3mCc5X1eAEyKiFUR8RbwOknG0FxlSfPxwJ0AEfEsUEEyONumKtP/e31sihnBi0AvST0kbUbSGDyp1jGTgGPT5cOARyNthWmmSqZZ0m7A70gygeZebwwl0hwRSyJim4joHhHdSdpFhkdEc57nNMvf9p9JSgNI2oakqmhuGWNsbFnS/HdgPwBJfUgygkVljbK8JgHfS58e+hKwJCLebcgFN7mqoYhYLelU4GGSJw5ujIiZkkYDkyNiEnADSfFxDkmjzJFNF3HDZUzz5UAH4K60XfzvETG8yYJuoIxp3qRkTPPDwDckzQLWAGdHRLMt7WZM85nA9ZJ+RNJwPKo5f7GTNIEkM98mbfe4EGgLEBHXkbSDHAjMAT4Bvt/gezbj18vMzBrBplg1ZGZm9eCMwMyshXNGYGbWwjkjMDNr4ZwRmJm1cM4IWgBJayRNK/jpXsexyxrhfuMlvZXe66W0t2d9r/F7SX3T5Z/U2vdMQ2NMr1P1usyQdK+kziWOH7ghI1tK2l7SfenyvpKWpPedLenCDbje8KpROCV9q+p1StdHpx0HGyR9Dw8rcczj9emgl6b9vgzHFR19U9IVkr6a9X6WnTOCluHTiBhY8DOvDPc8OyIGAueSdGSrl4g4ISJmpas/qbVvr4aHB/z7delP0p/klBLHDyR5fru+zgCuL1h/Kn1tKknGyKnXMMIRMSkifpmufotkxM2qfRdExF83IMaNyXig2BhJY0n+nqyROSNogSR1UDInwUuSXpG0zqid6bfYJwu+Me+dbv+GpGfTc++S1KHE7Z4EeqbnnpFea4ak/063bSHpfkkvp9tHpNsfl1Qp6ZdAuzSO29J9y9LfEyUdVBDzeEmHSWot6XJJLyoZr/2/Mrwsz5IO3CVpzzSNUyU9I2nntFfraGBEGsuINPYbJb2QHlts9FOA7wAP1d4YER8DU4CeaWnjuTTeeyR9Jo3lNP17HomJ6bZRkq6WtBcwHLg8jenzBa/BAZLuKnhtqr+N1/c9lHRB+lrOkDROqjFS7zEFfyN7psdnfV2KWt/omxHxNrC1pP+oz/Usg6YYb9s/5f0h6WE6Lf25h6RH+Zbpvm1IeihWdS5clv4+Ezg/XW5NMnbPNiQf7Fuk238MXFDkfuOBw9Llw4HngT2AV4AtSHo4zwR2I/mQvL7g3E7p78dJ5w+oiqngmKoYvw3cnC5vRjIiYzvgROCn6fbNgclAjyJxLitI313AAen6lkCbdPlrwJ/S5VHA1QXnXwocnS53JhnXZ4ta9+gBTClY3xe4L13eGpgH9AOmA19Jt48GfpMuvwNsXnWP2nEUvtaF6+l7/PeC9+p/gaM38D3cqmD7rcCwgvfo+nR5H9Lx89f3utRKeyXw+zr+ZrtTZDx+kpLVd5r6f2pT+9nkhpiwoj6NpCoCAEltgUsl7QOsJfkmvB3wj4JzXgRuTI/9c0RMk/QVkmqIp9MvhZuRfJMu5nJJPyUZ8+V4krFg7onkWzCS7gb2JvmmfKWky0g+JJ6qR7oeBH4raXOSqoQnI+JTSd8Adi2o4+5EMvDaW7XObydpWpr+2cD/FRx/s6ReJEMWtF3P/b8BDJd0VrpeAXRLr1Vle9Yd92ZvSVNJXvtfkgwU1zkinkj330ySMUGSQdwm6c8k4whlEsnQDA8BwyT9ETgIOIdk1Nms72GVoZLOAdoDW5Fk4vem+yak93tS0pZK2lnW97oUxjcZOCFregq8D3x2A86zOjgjaJm+C3QB9oiIVUpG56woPCD9x96H5ANkvKQxwIfA/0XEyAz3ODsi/li1Imm/YgdFxOtpHfmBwCWSHomI0VkSERHLJT0O7A+MIJm0BJKZm34YEQ+XuMSnETFQUnuSsWxOAa4imczmsYj4tpKG9cfXc75Ivp2+Vtc9qPXakrQRHFx9EalTHecfRPJtexhwvqRd6ji2tonAqSTVLJMjYmlarZP1PURSBXAtSelsvqSLqJme2mPUBOt5XSRtV4/Y16eC5DW1RuQ2gpapE/B+mgkMBdaZv1jJnMbvRcT1wO9Jps57DhgiqarOfwtJX8h4z6eAb0lqL2kLkmqdpyR9FvgkIv5AMjBesYbTVWnJpJg7SAbdqipdQPKhflLVOZK+kN6zqEhmbjsNOFP/Hpa8aljfUQWHLiWpIqvyMPDDqjpzJSO81vY6STXHekXEEuBDpe0wwDHAE0rmVNgxIh4jqcLpRFKtVqh2TIWeIHk9/5N/Z5L1fQ+rPvQ/SNsSaj9JVNWm82WSUTCXkO112VBfAIrO5WsbzhlBy3QbUCnpFeB7wKtFjtkXeDmtwhgB/DYiFpF8ME6QNJ2kSqF3lhtGxEsk9c4vkLQZ/D4ipgK7AC+kVTQXApcUOX0cMF1pY3Et/4+kuuOvkUxlCEnGNQt4SckjiL+jROk3jWU6ySQnvwJ+kaa98LzHgL5VjcUkJYe2aWwz0/Xa1/0YeLPqg7cOx5JUp00neTppNEnbxR/S92kqcFWsO8HMRODstFH287XuvQa4D/hm+pv6vofp/a4n+fB9mKTKsNDy9HW6jqQKEDK8LkoeBPh9sXsqGX3zWWBnSQskHZ9ub0vy4EFzHkp8o+TRR81yJunbJNVwP23qWJqz9HXcPSL+p6lj2dS4jcAsZxFxj6TmPCf2xqINcGVTB7EpconAzKyFcxuBmVkL54zAzKyFc0ZgZtbCOSMwM2vhnBGYmbVw/x/FxZeaUBYQLAAAAABJRU5ErkJggg==\n", 788 | "text/plain": [ 789 | "
" 790 | ] 791 | }, 792 | "metadata": { 793 | "needs_background": "light" 794 | }, 795 | "output_type": "display_data" 796 | } 797 | ], 798 | "source": [ 799 | "plot_roc_curve(rfModel,features_test,ifMalware_test)" 800 | ] 801 | }, 802 | { 803 | "cell_type": "code", 804 | "execution_count": null, 805 | "id": "8ec51c31", 806 | "metadata": {}, 807 | "outputs": [], 808 | "source": [] 809 | } 810 | ], 811 | "metadata": { 812 | "kernelspec": { 813 | "display_name": "Python 3 (ipykernel)", 814 | "language": "python", 815 | "name": "python3" 816 | }, 817 | "language_info": { 818 | "codemirror_mode": { 819 | "name": "ipython", 820 | "version": 3 821 | }, 822 | "file_extension": ".py", 823 | "mimetype": "text/x-python", 824 | "name": "python", 825 | "nbconvert_exporter": "python", 826 | "pygments_lexer": "ipython3", 827 | "version": "3.9.10" 828 | } 829 | }, 830 | "nbformat": 4, 831 | "nbformat_minor": 5 832 | } 833 | -------------------------------------------------------------------------------- /data-set/dataset.csv: -------------------------------------------------------------------------------- 1 | AddressOfEntryPoint,MajorLinkerVersion,MajorImageVersion,MajorOperatingSystemVersion,DllCharacteristics,SizeOfStackReserve,NumberOfSections,ResourceSize,IfMalware 2 | 47184,5,0,4,0,1048576,3,0,1 3 | 257184,6,0,4,0,1048576,4,1720,1 4 | 443086,11,0,4,34112,1048576,3,24192,1 5 | 29959,6,0,4,0,1048576,5,7816,1 6 | 636583,9,0,5,32768,1048576,3,0,1 7 | 11344,14,0,6,33088,1048576,5,0,1 8 | 33303,11,0,5,33088,1048576,5,2204424,1 9 | 114288,6,0,4,0,1048576,3,928,1 10 | 15803,2,1,4,0,1048576,8,76424,1 11 | 662982,48,0,4,34144,1048576,3,1452,1 12 | 265614,8,0,4,34112,1048576,3,2560,1 13 | 261598,8,0,4,34112,1048576,3,2560,1 14 | 41910,10,0,5,33792,1048576,6,22770,1 15 | 7168,6,1,4,0,1048576,3,1432,1 16 | 226176,6,0,4,0,1048576,6,12928,1 17 | 32057,10,0,5,320,1048576,5,247608,1 18 | 176272,9,0,5,33024,1048576,3,4156,1 19 | 660302,48,0,4,34112,1048576,3,21188,1 20 | 14124,6,0,4,0,1048576,3,0,1 21 | 21982,6,0,4,0,1048576,4,17744,1 22 | 14764,2,6,4,32768,2097152,7,17800,1 23 | 609738,8,0,4,34112,1048576,3,118113,1 24 | 5936,10,0,5,34112,1048576,5,1628,1 25 | 9072,10,0,5,34112,1048576,4,265392,1 26 | 100370,7,5,5,32768,262144,2,0,1 27 | 5269,8,6,4,34112,1048576,7,8288,1 28 | 6264,14,6,6,33120,1048576,6,209496,1 29 | 924368,10,0,5,33088,1048576,3,1324,1 30 | 30650,6,0,4,0,1048576,4,3448736,1 31 | 324832,9,0,5,32768,1048576,4,50088,1 32 | 19001,14,0,6,320,1048576,6,856,1 33 | 664,6,0,4,0,1048576,4,26536,1 34 | 2564766,8,0,4,34112,1048576,3,371870,1 35 | 16896,5,0,4,0,1048576,4,2400,1 36 | 13199,6,6,4,34112,1048576,5,131952,0 37 | 27506,8,6,6,33088,262144,4,25695624,0 38 | 301411,14,0,6,33088,1048576,5,29024,0 39 | 30100,6,0,4,256,1048576,4,4072,0 40 | 40594,14,0,6,33088,1048576,5,25257092,0 41 | 15920,2,6,4,34144,2097152,9,38168,0 42 | 13784,6,6,4,34112,1048576,5,295776,0 43 | 4096,0,0,4,0,1048576,5,15104,0 44 | 13238,6,6,4,34112,1048576,5,75880,0 45 | 745196,2,6,6,33088,1048576,10,51196,0 46 | 43787,14,0,6,33088,1048576,5,135743656,0 47 | 261455,14,0,6,33024,1048576,4,52160,0 48 | 745196,2,6,6,33088,1048576,10,65828,0 49 | 4768,2,1,4,1344,2097152,11,174736,0 50 | 46622,14,0,6,33088,1048576,7,82774692,0 51 | 108448,14,0,6,49472,1048576,5,37936,0 52 | --------------------------------------------------------------------------------