Come posso immaginare se un carico utile è offuscato o crittografato? in altre parole, posso applicare l'algoritmo di Shannon Entropy a un carico utile binario?
qualsiasi consiglio sarà apprezzato, grazie in anticipo
L'equazione dell'entropia di Shannon è il metodo di calcolo standard. Ecco una semplice implementazione in Python, copiata senza vergogna dal Revelation codebase:
def entropy(string):
"Calculates the Shannon entropy of a string"
# get probability of chars in string
prob = [ float(string.count(c)) / len(string) for c in dict.fromkeys(list(string)) ]
# calculate the entropy
entropy = - sum([ p * math.log(p) / math.log(2.0) for p in prob ])
return entropy
def entropy_ideal(length):
"Calculates the ideal Shannon entropy of a string with given length"
prob = 1.0 / length
return -1.0 * length * prob * math.log(prob) / math.log(2.0)
Si noti che questa implementazione presuppone che il flusso di bit di input sia rappresentato al meglio come byte. Questo potrebbe essere o non essere il caso del tuo dominio problematico.
Leggi altre domande sui tag encryption obfuscation entropy packet