Python Forensics - Supporto multiprocessing
Gli specialisti forensi normalmente trovano difficile applicare soluzioni digitali per analizzare le montagne di prove digitali in crimini comuni. La maggior parte degli strumenti di indagine digitale sono a thread singolo e possono eseguire un solo comando alla volta.
In questo capitolo, ci concentreremo sulle capacità di multiprocessing di Python, che possono riguardare le comuni sfide forensi.
Multiprocessing
Il multiprocessing è definito come la capacità del sistema informatico di supportare più di un processo. I sistemi operativi che supportano il multiprocessing consentono a più programmi di essere eseguiti contemporaneamente.
Esistono vari tipi di multiprocessing come symmetric e asymmetric processing. Il diagramma seguente si riferisce a un sistema multiprocessing simmetrico che viene solitamente seguito nelle indagini forensi.
Esempio
Il codice seguente mostra come i diversi processi sono elencati internamente nella programmazione 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."
Qui, la funzione list_append() aiuta a elencare l'insieme di processi nel sistema.
Produzione
Il nostro codice produrrà il seguente output: