Me quedo flipada....esa persona que dijo que había crackeado el cobra hace tiempo, no sabía que tenia el T.E.A? Que bueno, teniendo en cuenta que cuando yo vi de pasada el cobra, hace ya tiempo, se veia claramente ese algoritmo, no habían cambiado nada de la versión que tiene de ejemplo la wikipedia.
En fin...ahora los guiris a entrar en furia, como siempre!
_data_rel_ro:80000000005507C8 loc_0_80000000005507C8: # CODE XREF: sub_0_8000000000550708+184j
_data_rel_ro:80000000005507C8 lwz r30, 0(r6)
_data_rel_ro:80000000005507CC li r10, 0x3720
_data_rel_ro:80000000005507D0 lwz r25, 0(r4)
_data_rel_ro:80000000005507D4 li r0, 0x20
_data_rel_ro:80000000005507D8 clrldi r12, r22, 32
_data_rel_ro:80000000005507DC oris r10, r10, 0xC6EF
_data_rel_ro:80000000005507E0 mtctr r0
_data_rel_ro:80000000005507E4 clrldi r27, r26, 32
_data_rel_ro:80000000005507E8 clrldi r31, r23, 32
_data_rel_ro:80000000005507EC clrldi r29, r28, 32
_data_rel_ro:80000000005507F0 mr r8, r30
_data_rel_ro:80000000005507F4 mr r7, r25
_data_rel_ro:80000000005507F8
_data_rel_ro:80000000005507F8 loc_0_80000000005507F8: # CODE XREF: sub_0_8000000000550708+144j
_data_rel_ro:80000000005507F8 srwi r9, r8, 5
_data_rel_ro:80000000005507FC add r11, r8, r10
_data_rel_ro:8000000000550800 slwi r0, r8, 4
_data_rel_ro:8000000000550804 add r9, r9, r29
_data_rel_ro:8000000000550808 add r0, r0, r31
_data_rel_ro:800000000055080C xor r9, r9, r11
_data_rel_ro:8000000000550810 addis r11, r10, 0x61C9
_data_rel_ro:8000000000550814 xor r0, r0, r9
_data_rel_ro:8000000000550818 addi r11, r11, -0x79B9
_data_rel_ro:800000000055081C subf r0, r0, r7
_data_rel_ro:8000000000550820 clrldi r7, r0, 32
_data_rel_ro:8000000000550824 srwi r9, r7, 5
_data_rel_ro:8000000000550828 add r10, r7, r10
_data_rel_ro:800000000055082C add r9, r9, r27
_data_rel_ro:8000000000550830 slwi r0, r7, 4
_data_rel_ro:8000000000550834 xor r9, r9, r10
_data_rel_ro:8000000000550838 add r0, r0, r12
_data_rel_ro:800000000055083C clrldi r10, r11, 32
_data_rel_ro:8000000000550840 xor r0, r0, r9
_data_rel_ro:8000000000550844 subf r0, r0, r8
_data_rel_ro:8000000000550848 clrldi r8, r0, 32
_data_rel_ro:800000000055084C bdnz loc_0_80000000005507F8
_data_rel_ro:8000000000550850 lwz r0, 0(r3)
_data_rel_ro:8000000000550854 cmpwi cr7, r5, 7
_data_rel_ro:8000000000550858 xor r0, r0, r8
_data_rel_ro:800000000055085C stw r0, 0(r6)
_data_rel_ro:8000000000550860 ble cr7, loc_0_8000000000550870
_data_rel_ro:8000000000550864 lwz r0, 4(r3)
_data_rel_ro:8000000000550868 xor r0, r0, r7
_data_rel_ro:800000000055086C stw r0, 0(r4)
_data_rel_ro:8000000000550870
_data_rel_ro:8000000000550870 loc_0_8000000000550870: # CODE XREF: sub_0_8000000000550708+158j
_data_rel_ro:8000000000550870 addi r0, r5, -8
_data_rel_ro:8000000000550874 stw r30, 0(r3)
_data_rel_ro:8000000000550878 addi r6, r6, 8
_data_rel_ro:800000000055087C stw r25, 4(r3)
_data_rel_ro:8000000000550880 extsw r5, r0
_data_rel_ro:8000000000550884 addi r4, r4, 8
_data_rel_ro:8000000000550888
_data_rel_ro:8000000000550888 loc_0_8000000000550888: # CODE XREF: sub_0_8000000000550708+BCj
_data_rel_ro:8000000000550888 cmpwi cr7, r5, 0
_data_rel_ro:800000000055088C bgt cr7, loc_0_80000000005507C8
_data_rel_ro:8000000000550890 b loc_0_800000000055097C
_data_rel_ro:8000000000550894 # ---------------------------------------------------------------------------
_data_rel_ro:8000000000550894
_data_rel_ro:8000000000550894 loc_0_8000000000550894: # CODE XREF: sub_0_8000000000550708+A4j
_data_rel_ro:8000000000550894 mr r4, r9
_data_rel_ro:8000000000550898 mr r5, r0
_data_rel_ro:800000000055089C mr r6, r24
_data_rel_ro:80000000005508A0 srdi r23, r26, 32
_data_rel_ro:80000000005508A4 srdi r25, r28, 32
_data_rel_ro:80000000005508A8 b loc_0_8000000000550974
_data_rel_ro:80000000005508AC # ---------------------------------------------------------------------------
_data_rel_ro:80000000005508AC
_data_rel_ro:80000000005508AC loc_0_80000000005508AC: # CODE XREF: sub_0_8000000000550708+270j
_data_rel_ro:80000000005508AC lwz r0, 0(r5)
_data_rel_ro:80000000005508B0 addi r30, r3, 4
_data_rel_ro:80000000005508B4 lwz r11, 4(r3)
_data_rel_ro:80000000005508B8 clrldi r31, r23, 32
_data_rel_ro:80000000005508BC lwz r10, 0(r3)
_data_rel_ro:80000000005508C0 clrldi r12, r26, 32
_data_rel_ro:80000000005508C4 lwz r9, 0(r6)
_data_rel_ro:80000000005508C8 xor r0, r0, r11
_data_rel_ro:80000000005508CC clrldi r27, r25, 32
_data_rel_ro:80000000005508D0 xor r9, r9, r10
_data_rel_ro:80000000005508D4 clrldi r8, r0, 32
_data_rel_ro:80000000005508D8 li r0, 0x20
_data_rel_ro:80000000005508DC clrldi r10, r9, 32
_data_rel_ro:80000000005508E0 clrldi r29, r28, 32
_data_rel_ro:80000000005508E4 mtctr r0
_data_rel_ro:80000000005508E8 li r7, 0
_data_rel_ro:80000000005508EC
_data_rel_ro:80000000005508EC loc_0_80000000005508EC: # CODE XREF: sub_0_8000000000550708+238j
_data_rel_ro:80000000005508EC addis r9, r7, -0x61C9
_data_rel_ro:80000000005508F0 srwi r11, r8, 5
_data_rel_ro:80000000005508F4 addi r9, r9, 0x79B9
_data_rel_ro:80000000005508F8 slwi r0, r8, 4
_data_rel_ro:80000000005508FC clrldi r7, r9, 32
_data_rel_ro:8000000000550900 add r11, r11, r12
_data_rel_ro:8000000000550904 add r9, r8, r7
_data_rel_ro:8000000000550908 add r0, r0, r31
_data_rel_ro:800000000055090C xor r11, r11, r9
_data_rel_ro:8000000000550910 xor r0, r0, r11
_data_rel_ro:8000000000550914 add r0, r0, r10
_data_rel_ro:8000000000550918 clrldi r10, r0, 32
_data_rel_ro:800000000055091C srwi r9, r10, 5
_data_rel_ro:8000000000550920 slwi r0, r10, 4
_data_rel_ro:8000000000550924 add r9, r9, r29
_data_rel_ro:8000000000550928 add r11, r10, r7
_data_rel_ro:800000000055092C add r0, r0, r27
_data_rel_ro:8000000000550930 xor r9, r9, r11
_data_rel_ro:8000000000550934 xor r0, r0, r9
_data_rel_ro:8000000000550938 add r0, r0, r8
_data_rel_ro:800000000055093C clrldi r8, r0, 32
_data_rel_ro:8000000000550940 bdnz loc_0_80000000005508EC
_data_rel_ro:8000000000550944 cmpwi cr7, r4, 7
_data_rel_ro:8000000000550948 stw r10, 0(r6)
_data_rel_ro:800000000055094C ble cr7, loc_0_8000000000550954
_data_rel_ro:8000000000550950 stw r8, 0(r5)
_data_rel_ro:8000000000550954
_data_rel_ro:8000000000550954 loc_0_8000000000550954: # CODE XREF: sub_0_8000000000550708+244j
_data_rel_ro:8000000000550954 addi r0, r4, -8
_data_rel_ro:8000000000550958 lwz r11, 0(r6)
_data_rel_ro:800000000055095C lwz r9, 0(r5)
_data_rel_ro:8000000000550960 addi r6, r6, 8
_data_rel_ro:8000000000550964 extsw r4, r0
_data_rel_ro:8000000000550968 addi r5, r5, 8
_data_rel_ro:800000000055096C stw r9, 0(r30)
_data_rel_ro:8000000000550970 stw r11, 0(r3)
_data_rel_ro:8000000000550974
_data_rel_ro:8000000000550974 loc_0_8000000000550974: # CODE XREF: sub_0_8000000000550708+1A0j
_data_rel_ro:8000000000550974 cmpwi cr7, r4, 0
_data_rel_ro:8000000000550978 bgt cr7, loc_0_80000000005508AC
_data_rel_ro:800000000055097C
_data_rel_ro:800000000055097C loc_0_800000000055097C: # CODE XREF: sub_0_8000000000550708+188j
_data_rel_ro:800000000055097C extsw r0, r21
_data_rel_ro:8000000000550980 clrrdi r9, r24, 5
_data_rel_ro:8000000000550984 add r0, r24, r0
_data_rel_ro:8000000000550988 b loc_0_800000000055099C
O en alto nivel (wikipedia source), :
void decrypt(unsigned long* v, unsigned long* k) {
unsigned long v0=v[0], v1=v[1], sum=0xC6EF3720, i; /* set up */
unsigned long delta=0x9e3779b9; /* a key schedule constant */
unsigned long k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache key */
for(i=0; i<32; i++) { /* basic cycle start */
v1 -= (v0 << 4)+k2 ^ v0+sum ^ (v0 >> 5)+k3;
v0 -= (v1 << 4)+k0 ^ v1+sum ^ (v1 >> 5)+k1;
sum -= delta; /* end cycle */
}
v[0]=v0; v[1]=v1;
}
Wikipedia escribió:TEA opera sobre bloques de 64 bits y usa una clave de 128 bits. Contiene una estructura de red de Feistel aconsejada en 64 rondas, generalmente implementadas en parejas denominadas ciclos. Posee una generación de claves extremadamente simple, mezclando todo el contenido de la clave de la misma manera para cada ciclo. Se utilizan distintos múltiplos de una constante mágica para prevenir ataques basados en la simetría de las rondas.
TEA tiene algunas debilidades. La más notable es que padece de claves equivalentes: cada clave es equivalente a otras tres, y esto implica que la longitud de clave efectiva es solo de 126 bits (Kelsey et. al., 1996). Esta debilidad dio lugar a un método para crackear la consola Xbox de Microsoft, donde se utilizaba el algoritmo como una función resumen o hash. TEA es también susceptible a ataques de clave relacionada que requieren 223 textos planos escogidos para un par de claves relacionadas, con una complejidad cronológica de 232 (Kelsey et. al., 1997).
Exactamente como era la version del cobra que vi hace tiempo, gracias por el dump Miralatijera,