oh, btw I am not sure if that is syntactically correct. Did the original one
> 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>