All pastes #133236 Raw Edit

Xorn

public text v1 · immutable
#133236 ·published 2006-08-15 19:19 UTC
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
}