Python Forensics - Suporte a multiprocessamento
Os especialistas forenses normalmente têm dificuldade em aplicar soluções digitais para analisar as montanhas de evidências digitais em crimes comuns. A maioria das ferramentas de investigação digital é de thread único e pode executar apenas um comando por vez.
Neste capítulo, vamos nos concentrar nos recursos de multiprocessamento do Python, que podem estar relacionados aos desafios forenses comuns.
Multiprocessamento
Multiprocessamento é definido como a capacidade do sistema de computador de suportar mais de um processo. Os sistemas operacionais que oferecem suporte a multiprocessamento permitem que vários programas sejam executados simultaneamente.
Existem vários tipos de multiprocessamento, como symmetric e asymmetric processing. O diagrama a seguir se refere a um sistema de multiprocessamento simétrico que geralmente é seguido em investigação forense.
Exemplo
O código a seguir mostra como diferentes processos são listados internamente na programação Python.
import random
import multiprocessing
def list_append(count, id, out_list):
#appends the count of number of processes which takes place at a time
for i in range(count):
out_list.append(random.random())
if __name__ == "__main__":
size = 999
procs = 2
# Create a list of jobs and then iterate through
# the number of processes appending each process to
# the job list
jobs = []
for i in range(0, procs):
out_list = list() #list of processes
process1 = multiprocessing.Process(
target = list_append, args = (size, i, out_list))
# appends the list of processes
jobs.append(process)
# Calculate the random number of processes
for j in jobs:
j.start() #initiate the process
# After the processes have finished execution
for j in jobs:
j.join()
print "List processing complete."
Aqui, a função list_append() ajuda a listar o conjunto de processos no sistema.
Resultado
Nosso código produzirá a seguinte saída -