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: