That's just a normal obuscation I deal with every day. They use silly things
like this and even much more complicated ones for Javascript, visual basic,
autoit and the kind and they think their code are well protected.... This
samaple did not even use trigraphs so it was just ok...
#include <ncurses.h>
int m[256][256], a, b;
WINDOW *w;
char *l = "\176qxlqqkwxmxtjvun";
Q[] = "Zpt!ftd`qdc!`eudq!$c!nnwft\040\t";
c( int u , int v)
{
v ? m[u][v-1] |= 2, m[u][v-1] & 48 ? W][v-1] & 15]]) : 0 : 0;
u ? m[u-1][v] |= 1
,m[u-1][v] & 48 ? W-1][v] &
15]]) : 0 : 0;
v < 255 ? m[u][v+1]| = 8
,m[u][v+1] & 48 ? W][v+1] & 15]]) : 0 : 0;
u < 255 ?m[ u+1][v]|=
4,m[u+1][v] & 48 ? W+1][v] & 15]]) : 0 : 0;
W][v] & 15]]);
}
// recursive loops on the string
cu ( char *q )
{
return *q ? (
// some silly decryption algorithm
cu (q + 1) & 1 ? q[0]++ : q[0]--
) : 1;
}
d( int u , int v, int x, int y)
{
int Y = y - v, X = x - u;
int S,s;
Y < 0 ? Y = -Y, s, s = -1 : (s = 1);
X < 0 ? X = -X, S = -1 : (S = 1);
Y <<= 1;
X <<= 1;
if(X > Y)
{
int f = Y -( X >> 1 );
while(u != x )
{
f >= 0 ? v += s,f -= X : 0;
u +=S ;
f += Y;
m[u][v] |= 32;
mvwaddch( w,v ,u, m[u][v] & 64 ? 60 : 46);
if (m[u][v] & 16)
{
c(u,v);
return;
}
}
}
else{int f=X -(Y>>1);
while
(v != y ){f >= 0 ? u += S, f -= Y : 0;
v += s;
f += X;
m[u][v] |= 32;
mvwaddch ( w, v ,u, m[u][v] & 64 ? 60 : 46 );
if( m[u][v] & 16)
{
c( u,v );
return;
}
}
}
}
Z( int a, int b){ }
e( int y,int x){
int i ;
for (i= a; i <= a + S; i++)
d(y,x,i,b), d(y,x,i,b+L);
for( i =b; i <= b + L; i++) {
d(y,x,a,i);
d(y,x,a+ S,i);
}
mvwaddch(w,x,y,64);
prefresh( w,b,a,0,0 ,L- 1,S-1);
}
main( int V , char *C[] )
{
FILE *f = fopen( V == 1 ? "arachnid.c" : C[1], "r");
... got bored and did not continue...
On Wed, Jul 1, 2009 at 8:20 PM, Peter Restall <
pete@...> wrote:
>
> For those who are interested, they still do hold the Obfuscated C
> competition :)
>
>
http://www.de.ioccc.org/years.html>
> I honestly don't know why people dislike C...this is pure
> art/genius/madness !
>
> (btw - this is called 'arachnid.c' and requires ncurses to compile; use a,
> s,
> w and d keys).
>
> Regards,
>
> Pete Restall
>
> ---
>
> #include <ncurses.h>/*****************************************************/
> int m[256 ] [ 256 ],a
> ,b ;;; ;;; WINDOW*w; char*l="" "\176qxl" "q" "q" "k" "w\
> xm" "x" "t" "j" "v" "u" "n" ,Q[
> ]= "Z" "pt!ftd`" "qdc!`eu" "dq!$c!nnwf"/** *** */"t\040\t";c(
> int u , int v){ v?m [u] [v-
> 1] |=2,m[u][v-1] & 48?W][v-1 ] & 15]]):0:0;u?m[u -1][v]|=1 ,m[
> u- 1][ v]& 48? W-1 ][v ]&
> 15] ]):0:0;v< 255 ?m[ u][v+1]|=8,m[u][v+1]& 48? W][ v+1]&15]]
> ):0 :0; u < 255 ?m[ u+1 ][v ]|=
> 4,m[u+1][ v]&48?W+1][v]&15]]):0:0;W][ v]& 15] ]);}cu(char*q){
> return
> *q ?cu (q+ 1)& 1?q [0] ++:
> q[0 ]-- :1; }d( int u , int/**/v, int/**/x, int y){ int
> Y=y -v, X=x -u; int S,s ;Y< 0?Y =-Y ,s,
> s=- 1:( s=1);X<0?X=-X,S =-1 :(S= 1); Y<<= 1;X<<=1; if(X>Y){
> int f=Y -(X >>1 );; while(u!= x){
> f>= 0?v+=s,f-=X:0;u +=S ;f+= Y;m[u][v]|=32;mvwaddch(w,v ,u, m[u
> ][ v]& 64? 60: 46) ;if (m[ u][
> v]&16){c(u,v);; ;;; ;;; return;}} }else{int f=X -(Y>>1);;
> while
> (v !=y ){f >=0 ?u +=S, f-= Y:0
> ;v +=s ;f+=X;m[u][v]|= 32;mvwaddch(w,v ,u,m[u][v]&64?60:46);if(m[u
> ][ v]& 16) {c( u,v );
> ; return;;;}}}}Z( int/**/a, int b){ }e( int/**/y,int/**/ x){
> int i ; for (i= a;i <=a
> +S;i++)d(y,x,i,b),d(y,x,i,b+L);for(i=b;i<=b+L;i++)d(y,x,a,i),d(y,x,a+ S,i
> ); ;;; ;;; ;;; ;;; ;
> mvwaddch(w,x,y,64); ;;; ;;; ;;; prefresh( w,b,a,0,0 ,L-
> 1,S-1
> );} main( int V , char *C[
> ] ){FILE*f= fopen(V==1?"arachnid.c"/**/ :C[ 1],"r");int/**/x,y,c,
> v=0 ;;; initscr (); Z(Z
> (raw
> () ,Z( curs_set(0),Z(1 ,noecho()))),keypad( stdscr,TRUE));w
> =newpad
> ( 300, 300 ) ; for (x= 255 ; x >=0 ;x--
> ) for (y= 255 ;y>=0;y-- )m[ x][ y]= 0;x=y=0;refresh(
> );while
> ( (c= fgetc (f) )+1) {if(
> 0||c==10|| x== 256){x=0;y++;if(y==256 )break;;} else{m[x][y]=(c ==
> '~' ?64 : c ==32 ?0: 16) ;;x ++;
> }}for(x=0 ;x< 256;x++)m [x][0]=16 ,m[ x][ 255]=16;for(y=0
> ;y< 256 ; y ++) m[0 ][y ] = 16,
> m[255][y] =16 ;a=b=c=0; x=y =1; do{v++;mvwaddch (w, y,x ,m[
> x][ y]& 32? m[x ][y ] & 16?
> 0| acs_map[l[m[x][y]&15]]:46 : 32);c==0163&&!(m[x][y+1]&16)?y++: 0;c
> == 119 &&! (m[ x][
> y- 1]& 16) ?y--:0;;c ==97 &&!(m[x-1][y]&16)?x--:0;c==100&&!(m[x+1
> ][ y]& 16) ? x ++:0 ;if( c==
> 3- 1+1 ){endwin( );; return(0) ;}x -a<5?a>S- 5?a-=S-5:(a=0):
> 0;x -a> S-5?a<255 -S* 2?a +=S
> -5:(a=256-S):0; y-b<5?b>L-5?b-=L-5:(b =0) :0; y-b>L-5?b<255-L *2?
> b+= L-5 :(b
> =256
> -L) :0;e(x,y);if(m[x][y]&64)break;}while((c=getch())!=-1);endwin();cu(Q);
> printf(Q,v);}
>
> --
>
http://www.piclist.com PIC/SX FAQ & list archive
> View/change your membership options at
>
http://mailman.mit.edu/mailman/listinfo/piclist>
--
http://www.mcuhobby.com--
http://www.piclist.com PIC/SX FAQ & list archive
View/change your membership options at
http://mailman.mit.edu/mailman/listinfo/piclist