rendered paste body@@Original:
alias obtest1 { echo -a hello }
alias obtest2 { echo -a hello2 }
alias obtest3 {
var %x = 1
while (%x <= 10) {
echo -a %x
inc %x
}
return %x
}
alias wtf { return lol }
alias abc { return $rand(1,10) }
alias def { return $r(1,10) }
alias ghi { return $left($1,$2) }
alias jkl { return $right($1,$2) }
@@Obfuscated:
alias obtest1 { echo -a hello }
alias obtest2 { echo -a hello2 }
alias obtest3 {
var %OO0O0O0O0O = 1
while (%OO0O0O0O0O <= 10) {
echo -a %OO0O0O0O0O
inc %OO0O0O0O0O
}
return %OO0O0O0O0O
}
alias wtf { return lol }
alias abc { return $O0OO0OO00(1,10) }
alias def { return $O00000O0(1,10) }
alias ghi { return $OO0O0000O0($1,$2) }
alias jkl { return $O0OO0OO0OO($1,$2) }
alias -l O0OO0OO0OO var %i 0,%l | while (%i < $0) { inc %i | %l = %l $+ ,$ $+ %i } | return $iif(%l || $prop,$($ $+ right( $mid(%l,2) ) $+ $iif($prop,$+(.,$v1)),2),$right )
alias -l OO0O0000O0 var %i 0,%l | while (%i < $0) { inc %i | %l = %l $+ ,$ $+ %i } | return $iif(%l || $prop,$($ $+ left( $mid(%l,2) ) $+ $iif($prop,$+(.,$v1)),2),$left )
alias -l O00000O0 var %i 0,%l | while (%i < $0) { inc %i | %l = %l $+ ,$ $+ %i } | return $iif(%l || $prop,$($ $+ r( $mid(%l,2) ) $+ $iif($prop,$+(.,$v1)),2),$r )
alias -l O0OO0OO00 var %i 0,%l | while (%i < $0) { inc %i | %l = %l $+ ,$ $+ %i } | return $iif(%l || $prop,$($ $+ rand( $mid(%l,2) ) $+ $iif($prop,$+(.,$v1)),2),$rand )
@@Recovered:
alias obtest1 { echo -a hello }
alias obtest2 { echo -a hello2 }
alias obtest3 {
var %var_1 = 1
while (%var_1 <= 10) {
echo -a %var_1
inc %var_1
}
return %var_1
}
alias wtf { return lol }
alias abc { return $rand(1,10) }
alias def { return $r(1,10) }
alias ghi { return $left($1,$2) }
alias jkl { return $right($1,$2) }
@@ SOURCE
alias unobfuscate {
var %ofile = $1
hmake unob 100
hadd unob varidx 1
var %i = 1
var %l = $lines(%ofile)
var %unofile = $2
; first pass - fix the aliases
while (%i <= %l) {
var %line = $read(%ofile, n, %i)
if (alias -l O* iswm %line) {
var %nam = $gettok(%line,3,32)
var %v = $gettok(%line,9,44)
%v = $gettok(%v,1,32)
%v = $right(%v,-1)
echo -a %nam => %v
hadd unob a_ $+ %nam %v
}
inc %i
}
; second pass - actual fix
%i = 1
while (%i <= %l) {
var %line = $read(%ofile, n, %i)
var %j = 1
var %k = $hfind(unob, a_*, 0, w)
while (%j <= %k) {
var %z = $hfind(unob, a_*, %j, w)
%z = $right(%z,-2)
if (alias -l %z isin %line) { goto next }
%line = $replace(%line, %z, $hget(unob, a_ $+ %z))
inc %j
}
write -a %unofile $+ .tmp %line
:next
inc %i
}
; third pass - friendly variable names
%i = 1
%l = $lines(%unofile $+ .tmp)
while (%i <= %l) {
var %line = $read(%unofile $+ .tmp, n, %i)
while ($regex(%line, /%(O[O0]*)/)) {
var %vname = $regml(1)
if ($hget(unob, v_ $+ %vname)) {
%line = $replace(%line, %vname, $v1)
}
else {
echo -a New variable: v_ $+ %vname
hadd unob v_ $+ %vname var_ $+ $hget(unob, varidx)
%line = $replace(%line, %vname, $hget(unob, v_ $+ %vname))
hinc unob varidx
}
}
inc %i
write -a %unofile %line
}
remove %unofile $+ .tmp
hfree unob
}