Qual è un buon modo per contare in esadecimale e aggiungere il risultato alla fine di una stringa esadecimale più grande? Sto provando a formattare una stringa da utilizzare in un attacco oracle a padding. Le stringhe verranno concatenate insieme per formare una richiesta HTTP.Python - conteggio in esadecimale
Ho due stringhe esadecimali di 32 caratteri. 'g' è un'ipotesi, pad è l'oracle di riempimento. Fondamentalmente quello che devi fare è avere l'ultimo byte g contare in esadecimale da 0x00 a codice 0xff.The che ho finora è:
split = [value[x:x+32] for x in range (0, len(value), 32)] #Split the CT into 16 byte chunks
IV = unhexlify(split[0])
c0 = unhexlify(split[1])
c1 = unhexlify(split[2])
c2 = unhexlify(split[3])
g = unhexlify("00000000000000000000000000000000")
pad = unhexlify("00000000000000000000000000000001")
pad_xor_guess = xorb(g, pad)
c1_prime = xorb(pad_xor_guess, c1)
attack = str(hexlify(c1_prime + c2).decode())
'attacco' sarà passato nel metodo query che aggiungerà la stringa di attacco all'indirizzo web. Ora la parte su cui sono bloccato è che devo sostanzialmente inviare fino a 256 richieste HTTP per indovinare un byte del testo in chiaro. Come posso usare un ciclo for per "contare" da 00 a ff, aggiungendo il risultato a g in modo tale che possa essere xo'd con il pad e il blocco di testo cifrato scelto? Finora ho percorso questa strada, ma sono bloccato su come farlo funzionare con le stringhe esadecimali.
for i in range(0, 20):
#g = bytes([i])
print(bytes([i]),end=' ')
#print(g, end=' ')
' per i in range (255): hex (i) ' – user2097159