Skip to content

Commit a7af535

Browse files
authored
Otimiza e adiciona verificação de debug precisa.
Otimizei o verifyfpprocess inteiro fazendo uma filtração de processos, antes ele verificava todos os processos do sistema, agora ele só verifica os processos do usuário... Agora também a verificação se a build é debug ou standard está bem mais precisa, eu fiz verificando os bytes do .exe do flash player e procurando por uma sequencia de bytes específica que por enquanto, eu e a Eri achamos que tem em todas as builds de debug.
1 parent bac5672 commit a7af535

File tree

1 file changed

+47
-30
lines changed

1 file changed

+47
-30
lines changed

verifyfpprocess.py

+47-30
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,64 @@
11
import psutil
22
import os
3-
import getfileprops
3+
import getfileprops as gp
44
import time
55

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']):
910
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]:
1112
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])
2213
except (IndexError, psutil.AccessDenied, psutil.NoSuchProcess, psutil.ZombieProcess):
2314
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']):
2732
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):
3036
pass
31-
props = None
32-
if MODE == "S":
37+
38+
for path in paths:
39+
props = 0
40+
if mode == "S":
3341
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]
3750
except:
3851
pass
39-
elif MODE == "D":
52+
elif mode == "D":
4053
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]
4462
except:
4563
pass
46-
time.sleep(7.5/1000)
4764
return [False, False]

0 commit comments

Comments
 (0)