Entropy on payload

0

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

    
posta CDominik 25.09.2015 - 10:22
fonte

1 risposta

0

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.

    
risposta data 25.09.2015 - 15:36
fonte

Leggi altre domande sui tag