diff --git a/polictf/asms/decrypt.pstc b/polictf/asms/decrypt.pstc index b7623b6..3f5d96e 100644 --- a/polictf/asms/decrypt.pstc +++ b/polictf/asms/decrypt.pstc @@ -42,49 +42,40 @@ movi s0, 0 # i movi s1, 0 # sum loop: push s0 # saving i -addi s1, 0x626f # sum += delta -push s1 # saving sum # s0 and s1 will be used as tmps ######### -# calc v0 -######### -movr s0, r3 -shli s0, 4 -addi s0, 0x7065 # s0 = (text[1] << 4) + k0 -movr s1, r3 -poop s3 # restoring sum in s3 -addr s1, s3 # s1 = text[1] + sum -push s3 # saving sum again -xorr s0, s1 # s0 = ((text[1] << 4) + k0) ^ (text[1] + sum) -push s0 -movr s0, r3 -shri s0, 5 -addi s0, 0x7065 # s0 = (text[1] >> 5) + k1 -poop s1 -xorr s0, s1 # s0 = ((text[1] << 4) + k0) ^ (text[1] + sum) ^ ((text[1] >> 5) + k1) -addr r2, s0 # r2 += s0 -######### # calc v1 ######### movr s0, r2 shli s0, 4 addi s0, 0x7275 # s0 = (text[0] << 4) + k2 movr s1, r2 -poop s3 # restoring sum in s3 -addr s1, s3 # s1 = text[0] + sum -push s3 # saving sum again -xorr s0, s1 # s0 = ((text[0] << 4) + k2) ^ (text[0] + sum) +xorr s0, s1 # s0 = ((text[0] << 4) + k2) ^ text[0] push s0 movr s0, r2 shri s0, 5 addi s0, 0x6e73 # s0 = (text[0] >> 5) + k3 poop s1 -xorr s0, s1 # s0 = ((text[0] << 4) + k2) ^ (text[0] + sum) ^ ((text[0] >> 5) + k3) -addr r3, s0 # r3 += s0 +xorr s0, s1 # s0 = ((text[0] << 4) + k2) ^ text[0] ^ ((text[0] >> 5) + k3) +subr r3, s0 # r3 -= s0 +######### +# calc v0 +######### +movr s0, r3 +shli s0, 4 +addi s0, 0x7065 # s0 = (text[1] << 4) + k0 +movr s1, r3 +xorr s0, s1 # s0 = ((text[1] << 4) + k0) ^ text[1] +push s0 +movr s0, r3 +shri s0, 5 +addi s0, 0x7065 # s0 = (text[1] >> 5) + k1 +poop s1 +xorr s0, s1 # s0 = ((text[1] << 4) + k0) ^ text[1] ^ ((text[1] >> 5) + k1) +subr r2, s0 # r2 -= s0 ###### # end loop ##### -poop s1 # restoring sum poop s0 # restoring i addi s0, 1 cmpb s0, 127 # while (i < 128) @@ -98,19 +89,19 @@ poop r1 retn def main: -movi r0, 0xadde -movi r1, 0x0bb0 +movi r0, 0x93af +movi r1, 0x9ea9 stri 0, r0 stri 2, r1 -movi r0, 0x0bb0 -movi r1, 0xcefa +movi r0, 0x2008 +movi r1, 0xc917 stri 0x4, r0 stri 0x6, r1 movi r0, 0 call datastrlen movr r2, r0 movi s0, 0 -encrypt: +decrypt: push s0 movi r0, 0 movi r1, 2 @@ -118,11 +109,13 @@ addr r0, s0 addr r1, s0 call round poop s0 -addi s0, 1 +addi s0, 4 +debg cmpr s0, r2 -jpbi encrypt +jpbi decrypt lodi r0, 0 lodi r1, 2 lodi r2, 4 lodi r3, 6 +debg shit \ No newline at end of file diff --git a/polictf/tea_cversion/tea-decrypt.c b/polictf/tea_cversion/tea-decrypt.c index 62ae21c..35667bf 100644 --- a/polictf/tea_cversion/tea-decrypt.c +++ b/polictf/tea_cversion/tea-decrypt.c @@ -12,7 +12,7 @@ void decrypt(uint16_t *v) { uint16_t k2 = 0x7275; // "ru" uint16_t k3 = 0x6e73; // "ns" for (i = 0; i < 128; i++) { - // printf("Intermediate v0: 0x%x | v1: 0x%x\n", v0, v1); /* basic cycle + //printf("Intermediate v0: 0x%x | v1: 0x%x\n", v0, v1); /* basic cycle // start */ v1 -= ((v0 << 4) + k2) ^ (v0) ^ ((v0 >> 5) + k3); v0 -= ((v1 << 4) + k0) ^ (v1) ^ ((v1 >> 5) + k1);