Decrypt asm finito

This commit is contained in:
Giulio De Pasquale 2017-05-29 17:07:00 +02:00
parent 701881b0b2
commit cc6cd1ee6e
2 changed files with 28 additions and 35 deletions

View File

@ -42,49 +42,40 @@ movi s0, 0 # i
movi s1, 0 # sum movi s1, 0 # sum
loop: loop:
push s0 # saving i push s0 # saving i
addi s1, 0x626f # sum += delta
push s1 # saving sum
# s0 and s1 will be used as tmps # 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 # calc v1
######### #########
movr s0, r2 movr s0, r2
shli s0, 4 shli s0, 4
addi s0, 0x7275 # s0 = (text[0] << 4) + k2 addi s0, 0x7275 # s0 = (text[0] << 4) + k2
movr s1, r2 movr s1, r2
poop s3 # restoring sum in s3 xorr s0, s1 # s0 = ((text[0] << 4) + k2) ^ text[0]
addr s1, s3 # s1 = text[0] + sum
push s3 # saving sum again
xorr s0, s1 # s0 = ((text[0] << 4) + k2) ^ (text[0] + sum)
push s0 push s0
movr s0, r2 movr s0, r2
shri s0, 5 shri s0, 5
addi s0, 0x6e73 # s0 = (text[0] >> 5) + k3 addi s0, 0x6e73 # s0 = (text[0] >> 5) + k3
poop s1 poop s1
xorr s0, s1 # s0 = ((text[0] << 4) + k2) ^ (text[0] + sum) ^ ((text[0] >> 5) + k3) xorr s0, s1 # s0 = ((text[0] << 4) + k2) ^ text[0] ^ ((text[0] >> 5) + k3)
addr r3, s0 # r3 += s0 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 # end loop
##### #####
poop s1 # restoring sum
poop s0 # restoring i poop s0 # restoring i
addi s0, 1 addi s0, 1
cmpb s0, 127 # while (i < 128) cmpb s0, 127 # while (i < 128)
@ -98,19 +89,19 @@ poop r1
retn retn
def main: def main:
movi r0, 0xadde movi r0, 0x93af
movi r1, 0x0bb0 movi r1, 0x9ea9
stri 0, r0 stri 0, r0
stri 2, r1 stri 2, r1
movi r0, 0x0bb0 movi r0, 0x2008
movi r1, 0xcefa movi r1, 0xc917
stri 0x4, r0 stri 0x4, r0
stri 0x6, r1 stri 0x6, r1
movi r0, 0 movi r0, 0
call datastrlen call datastrlen
movr r2, r0 movr r2, r0
movi s0, 0 movi s0, 0
encrypt: decrypt:
push s0 push s0
movi r0, 0 movi r0, 0
movi r1, 2 movi r1, 2
@ -118,11 +109,13 @@ addr r0, s0
addr r1, s0 addr r1, s0
call round call round
poop s0 poop s0
addi s0, 1 addi s0, 4
debg
cmpr s0, r2 cmpr s0, r2
jpbi encrypt jpbi decrypt
lodi r0, 0 lodi r0, 0
lodi r1, 2 lodi r1, 2
lodi r2, 4 lodi r2, 4
lodi r3, 6 lodi r3, 6
debg
shit shit