Python Forensics - Soporte de multiprocesamiento

Los especialistas forenses normalmente encuentran difícil aplicar soluciones digitales para analizar las montañas de evidencia digital en delitos comunes. La mayoría de las herramientas de investigación digital son de un solo hilo y solo pueden ejecutar un comando a la vez.

En este capítulo, nos centraremos en las capacidades de multiprocesamiento de Python, que pueden relacionarse con los desafíos forenses comunes.

Multiprocesamiento

El multiprocesamiento se define como la capacidad del sistema informático para admitir más de un proceso. Los sistemas operativos que admiten el multiprocesamiento permiten que varios programas se ejecuten simultáneamente.

Hay varios tipos de multiprocesamiento como symmetric y asymmetric processing. El siguiente diagrama se refiere a un sistema de multiprocesamiento simétrico que generalmente se sigue en la investigación forense.

Ejemplo

El siguiente código muestra cómo se enumeran los diferentes procesos internamente en la programación de 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."

Aquí, la función list_append() ayuda a enumerar el conjunto de procesos en el sistema.

Salida

Nuestro código producirá el siguiente resultado: