|
1 | 1 | import psutil
|
2 | 2 | import os
|
3 |
| -import getfileprops |
| 3 | +import getfileprops as gp |
4 | 4 | import time
|
5 | 5 |
|
6 |
| -def verifyrunningonly(path): # Essa função é para verificar se o executável que é especificado no path está rodando nos processos ou não, essa função é pra verificar se o flashplayer está rodando ou não. |
7 |
| - PIDS = psutil.pids() |
8 |
| - for PID in PIDS: |
| 6 | +def verifyrunningonly(dir): |
| 7 | + pids = psutil.pids() |
| 8 | + user = psutil.users()[0][0] |
| 9 | + for proc in psutil.process_iter(['pid', 'username']): |
9 | 10 | try:
|
10 |
| - if path.lower() in psutil.Process(PID).cmdline()[0].lower(): |
| 11 | + if str(proc.info["username"]).find(user) != -1 and dir in psutil.Process(proc.info["pid"]).cmdline()[0]: |
11 | 12 | return True
|
12 |
| - except (psutil.NoSuchProcess, psutil.AccessDenied, |
13 |
| - psutil.ZombieProcess, IndexError): |
14 |
| - pass |
15 |
| - return False |
16 |
| -def verifyfpprocess(MODE): # Essa função serve para poder verificar todos os processos dos sistemas, para assim pegar os directórios deles para verificar se os executáveis deles contém nos detalhes no FileDescription "Adoble Flash Player", se tiver, retorna uma LIST com um valor boleano e uma path, o valor boleano é pra falar que está executando. PS: O mode é para definir se quer encontrar a versão de debug ou standard do flash. |
17 |
| - PIDS = psutil.pids() |
18 |
| - PATHS = [] |
19 |
| - for PID in PIDS: |
20 |
| - try: |
21 |
| - PATHS.append(psutil.Process(PID).cmdline()[0]) |
22 | 13 | except (IndexError, psutil.AccessDenied, psutil.NoSuchProcess, psutil.ZombieProcess):
|
23 | 14 | pass
|
24 |
| - time.sleep(7.5/1000) |
25 |
| - |
26 |
| - for PATH in PATHS: |
| 15 | + return False |
| 16 | + |
| 17 | +def verifyifdebug(path): # Verifica se o path dado no parâmetro é um Flash Player Debug. |
| 18 | + with open(path, 'rb') as f: |
| 19 | + hexdata = f.read().hex() |
| 20 | + if hexdata.find("006465627567456e74657200") == -1: |
| 21 | + f.close() |
| 22 | + return False |
| 23 | + f.close() |
| 24 | + return True |
| 25 | + |
| 26 | + |
| 27 | +def verifyfpprocess(mode): |
| 28 | + pids = psutil.pids() |
| 29 | + paths = [] |
| 30 | + user = psutil.users()[0][0] |
| 31 | + for proc in psutil.process_iter(['pid', 'username']): |
27 | 32 | try:
|
28 |
| - FILESIZE = round(os.path.getsize(PATH)/2**20) |
29 |
| - except FileNotFoundError: |
| 33 | + if str(proc.info["username"]).find(user) != -1: |
| 34 | + paths.append(psutil.Process(proc.info["pid"]).cmdline()[0]) |
| 35 | + except (IndexError, psutil.AccessDenied, psutil.NoSuchProcess, psutil.ZombieProcess): |
30 | 36 | pass
|
31 |
| - props = None |
32 |
| - if MODE == "S": |
| 37 | + |
| 38 | + for path in paths: |
| 39 | + props = 0 |
| 40 | + if mode == "S": |
33 | 41 | try:
|
34 |
| - props = getfileprops.get_file_properties(path) |
35 |
| - if props["StringFileInfo"]["FileDescription"].find("Adobe Flash Player") != -1 and FILESIZE < 16: |
36 |
| - return [True, PATH] |
| 42 | + props = gp.get_file_properties(path) |
| 43 | + if props["StringFileInfo"]["FileDescription"].find("Adobe Flash Player") != -1: |
| 44 | + try: |
| 45 | + debugon = verifyifdebug(path) |
| 46 | + except FileNotFoundError: |
| 47 | + continue |
| 48 | + if debugon == False: |
| 49 | + return [True, path] |
37 | 50 | except:
|
38 | 51 | pass
|
39 |
| - elif MODE == "D": |
| 52 | + elif mode == "D": |
40 | 53 | try:
|
41 |
| - props = getfileprops.get_file_properties(path) |
42 |
| - if props["StringFileInfo"]["FileDescription"].find("Adobe Flash Player") != -1 and FILESIZE > 15: |
43 |
| - return [True, PATH] |
| 54 | + props = gp.get_file_properties(path) |
| 55 | + if props["StringFileInfo"]["FileDescription"].find("Adobe Flash Player") != -1: |
| 56 | + try: |
| 57 | + debugon = verifyifdebug(path) |
| 58 | + except FileNotFoundError: |
| 59 | + continue |
| 60 | + if debugon == True: |
| 61 | + return [True, path] |
44 | 62 | except:
|
45 | 63 | pass
|
46 |
| - time.sleep(7.5/1000) |
47 | 64 | return [False, False]
|
0 commit comments