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 -