Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
MakaleYazılım Mühendisliği

Obfuscated C Code Contest

Paylaş

tiocccBir yarışma, C dilinde geliştirilen yazılımların yarıştığı bir yarışmadır Obfuscated C Code Contest.  Bu yarışmada yazılıma gönül vermiş C dilinde bilgi birikimin sahibi olan  kişilerin katıldığı 1984 yılında başlayan, bir dönem ara vermiş ardından devam eden yarışmadır.

Bu yarışmanın amacı ise oldukça ilgi çekici. Obfuscated C Code Contest’in amacı Ufak ve anlaşılmaz “anlamlı” programlar yazmak.

Bu yarışmanın her sene değişmekte olan kuralları bulunmakta. Şaşırtıcı ve ilgi çekici olan bu kodlar ilk başta ne olduğu, ne hakkında yazıldığını anlamak zor derledikten sonra ortaya çıkan sonuçlar ise oldukça şaşırtıcı.

Obfuscated C Code Contest yarışması IOCCC önderliğinde ortaya Landon Curt Noll ve Lary Bassel tarafından başlatılmış.

Obfuscated C Code Contest yarışması ASCII sanatınada destek vermekte ve kodları sanata göre yapmak, program içerisinde programı gizlemek. Anlamsız söz dizimi ise yarışmanın genel kurallarıdır.

Bu yarışmaya katılan yazılımcıların bir dahi olduğunu düşünüyorum. Hem sanat, hem de bilgi ve tecrübenin üst seviyede olduğu kod bloklarından anlaşılmakta.

Çok eğlenceli bir yarışma olduğu kesin.  Bu anlamsız kod yazım yarışmasından sizlere örnekler vereceğim. Derleme imkanınız var ise bu kodları derlemenizi ve çıkan sonuçlara bakmanızı öneririm.

#include<stdio.h> /******** SpigotQuine -- usage: ./spigot [pi or e] ********/
char*s="G1%%xJ{;Q7wunmuGuu%%uu#include<stdio.h>/*Spigot_Quine*/#include<stdli"
"b.h>/*_IOCCC2012_*/int*e,"    "i,j,k,n"     ";char*q"    ",*a,*d,*z,*p=%s%c;"
"int" "%cmain(){a=calloc("                                 "1,1e4+n*2);;for(*"
"a=
#include<stdio.h> /******** SpigotQuine -- usage: ./spigot [pi or e] ********/
char*s="G1%%xJ{;Q7wunmuGuu%%uu#include<stdio.h>/*Spigot_Quine*/#include<stdli"
"b.h>/*_IOCCC2012_*/int*e,"    "i,j,k,n"     ";char*q"    ",*a,*d,*z,*p=%s%c;"
"int" "%cmain(){a=calloc("                                 "1,1e4+n*2);;for(*"
"a=\0@3,z=d=a+n+1,j=n*8-7;"    "k=0,j-1"     ";j-=2){"    "for(a[1]+=2;--z-a;"
"*z=k%%10,k/=10)k+=j/2**z;;for(;k=k%%j*"     "10+*++z,z<d;)*z=k/" "j;;\0@2,z="
"d=a+n*2,*z=1,j=0;++j<n;){for(;k=k%%"           "j*10+*z,a-z;*z"   "--=k/j)a+"
"+;for(k=0;z-d;*a--=k%%10,k/=10)k+"               "=*++z+*a\0"     "@;}d+=spr"
"intf(q=d-20,p,p,34,32,n+1)+2;;;;"                 "for(n=n*2"     "0-400;k<n"
";++k%%n?j=!puts("                                                 "d):(d[j]="
"47,d++,d[j-2"                                                     "]=42),k%%"
"20<1?puts(d"                                                      "-1),a++:0"
"){for(i=-1"                                                       ";i++<32;!"
"*z?q[662]"          "=0,z=q+207:"                 "*z+z[1]<6"     "5?z+=11:*"
"z==34?p=0"         ":0)d[i]=((k/2"               "0-1?275*q["     "*a+10]-8*"
"q[*a+0]-8"         ":128)>>(i/11+k/"           "4%%5*3))&1?k"     "/3*!j&&p?"
"j=34:(j="           "i+1,*z++):32;k/3*"     "j--&&p?d[z--,j]=3"   "4:0;}}int"
"*y,n=%d;/*..~",*f="nnLa5~z23~|22t$q(s82r&q(s82q'q(s8;q(s8;q(s8:" "r(s8:r(s8:"
"q)s89r)sLr#t+" "sLx,uJw-yGu/wnnnU",*g="nnLa<z::t$u88t(u67t*u57s,t56t,t56~v56"
"tF6tF6tF8t1p"   "Nu/qOv+rS}Xxnng";int main(int m,char**v){char a[2012],b[2012
],*p=a,*r=m>1     &&*v[1]=='e'?g:f,*q=b,*t=r;;sprintf(a,"%s%s%s",s,r==g?s+281:
s+168,s+386);     sprintf(b,a+22,a,34,32,24);for(sprintf(a,"%.33s/*%.28s*/%.3"
"3s/*%.28s*/%"   ".33s\"%s*/",b,b+66,b+33,b+76,b+66,b+99);*r;r++){;for(m=0;m++
<(*r-34)%77;*q++=*r>111?32:*p++)(q-b)%66<1?*q++=10:0;*r-110&&*r-126&&r-t<(t-g?
62:45)?*q++=34,((q-b)%66<1?*q++=10,*q++=34:0):0;}*q=0;puts(b+1);}/*IOCCC2012*/
@3,z=d=a+n+1,j=n*8-7;" "k=0,j-1" ";j-=2){" "for(a[1]+=2;--z-a;" "*z=k%%10,k/=10)k+=j/2**z;;for(;k=k%%j*" "10+*++z,z<d;)*z=k/" "j;;
#include<stdio.h> /******** SpigotQuine -- usage: ./spigot [pi or e] ********/
char*s="G1%%xJ{;Q7wunmuGuu%%uu#include<stdio.h>/*Spigot_Quine*/#include<stdli"
"b.h>/*_IOCCC2012_*/int*e,"    "i,j,k,n"     ";char*q"    ",*a,*d,*z,*p=%s%c;"
"int" "%cmain(){a=calloc("                                 "1,1e4+n*2);;for(*"
"a=\0@3,z=d=a+n+1,j=n*8-7;"    "k=0,j-1"     ";j-=2){"    "for(a[1]+=2;--z-a;"
"*z=k%%10,k/=10)k+=j/2**z;;for(;k=k%%j*"     "10+*++z,z<d;)*z=k/" "j;;\0@2,z="
"d=a+n*2,*z=1,j=0;++j<n;){for(;k=k%%"           "j*10+*z,a-z;*z"   "--=k/j)a+"
"+;for(k=0;z-d;*a--=k%%10,k/=10)k+"               "=*++z+*a\0"     "@;}d+=spr"
"intf(q=d-20,p,p,34,32,n+1)+2;;;;"                 "for(n=n*2"     "0-400;k<n"
";++k%%n?j=!puts("                                                 "d):(d[j]="
"47,d++,d[j-2"                                                     "]=42),k%%"
"20<1?puts(d"                                                      "-1),a++:0"
"){for(i=-1"                                                       ";i++<32;!"
"*z?q[662]"          "=0,z=q+207:"                 "*z+z[1]<6"     "5?z+=11:*"
"z==34?p=0"         ":0)d[i]=((k/2"               "0-1?275*q["     "*a+10]-8*"
"q[*a+0]-8"         ":128)>>(i/11+k/"           "4%%5*3))&1?k"     "/3*!j&&p?"
"j=34:(j="           "i+1,*z++):32;k/3*"     "j--&&p?d[z--,j]=3"   "4:0;}}int"
"*y,n=%d;/*..~",*f="nnLa5~z23~|22t$q(s82r&q(s82q'q(s8;q(s8;q(s8:" "r(s8:r(s8:"
"q)s89r)sLr#t+" "sLx,uJw-yGu/wnnnU",*g="nnLa<z::t$u88t(u67t*u57s,t56t,t56~v56"
"tF6tF6tF8t1p"   "Nu/qOv+rS}Xxnng";int main(int m,char**v){char a[2012],b[2012
],*p=a,*r=m>1     &&*v[1]=='e'?g:f,*q=b,*t=r;;sprintf(a,"%s%s%s",s,r==g?s+281:
s+168,s+386);     sprintf(b,a+22,a,34,32,24);for(sprintf(a,"%.33s/*%.28s*/%.3"
"3s/*%.28s*/%"   ".33s\"%s*/",b,b+66,b+33,b+76,b+66,b+99);*r;r++){;for(m=0;m++
<(*r-34)%77;*q++=*r>111?32:*p++)(q-b)%66<1?*q++=10:0;*r-110&&*r-126&&r-t<(t-g?
62:45)?*q++=34,((q-b)%66<1?*q++=10,*q++=34:0):0;}*q=0;puts(b+1);}/*IOCCC2012*/
@2,z=" "d=a+n*2,*z=1,j=0;++j<n;){for(;k=k%%" "j*10+*z,a-z;*z" "--=k/j)a+" "+;for(k=0;z-d;*a--=k%%10,k/=10)k+" "=*++z+*a
#include<stdio.h> /******** SpigotQuine -- usage: ./spigot [pi or e] ********/
char*s="G1%%xJ{;Q7wunmuGuu%%uu#include<stdio.h>/*Spigot_Quine*/#include<stdli"
"b.h>/*_IOCCC2012_*/int*e,"    "i,j,k,n"     ";char*q"    ",*a,*d,*z,*p=%s%c;"
"int" "%cmain(){a=calloc("                                 "1,1e4+n*2);;for(*"
"a=\0@3,z=d=a+n+1,j=n*8-7;"    "k=0,j-1"     ";j-=2){"    "for(a[1]+=2;--z-a;"
"*z=k%%10,k/=10)k+=j/2**z;;for(;k=k%%j*"     "10+*++z,z<d;)*z=k/" "j;;\0@2,z="
"d=a+n*2,*z=1,j=0;++j<n;){for(;k=k%%"           "j*10+*z,a-z;*z"   "--=k/j)a+"
"+;for(k=0;z-d;*a--=k%%10,k/=10)k+"               "=*++z+*a\0"     "@;}d+=spr"
"intf(q=d-20,p,p,34,32,n+1)+2;;;;"                 "for(n=n*2"     "0-400;k<n"
";++k%%n?j=!puts("                                                 "d):(d[j]="
"47,d++,d[j-2"                                                     "]=42),k%%"
"20<1?puts(d"                                                      "-1),a++:0"
"){for(i=-1"                                                       ";i++<32;!"
"*z?q[662]"          "=0,z=q+207:"                 "*z+z[1]<6"     "5?z+=11:*"
"z==34?p=0"         ":0)d[i]=((k/2"               "0-1?275*q["     "*a+10]-8*"
"q[*a+0]-8"         ":128)>>(i/11+k/"           "4%%5*3))&1?k"     "/3*!j&&p?"
"j=34:(j="           "i+1,*z++):32;k/3*"     "j--&&p?d[z--,j]=3"   "4:0;}}int"
"*y,n=%d;/*..~",*f="nnLa5~z23~|22t$q(s82r&q(s82q'q(s8;q(s8;q(s8:" "r(s8:r(s8:"
"q)s89r)sLr#t+" "sLx,uJw-yGu/wnnnU",*g="nnLa<z::t$u88t(u67t*u57s,t56t,t56~v56"
"tF6tF6tF8t1p"   "Nu/qOv+rS}Xxnng";int main(int m,char**v){char a[2012],b[2012
],*p=a,*r=m>1     &&*v[1]=='e'?g:f,*q=b,*t=r;;sprintf(a,"%s%s%s",s,r==g?s+281:
s+168,s+386);     sprintf(b,a+22,a,34,32,24);for(sprintf(a,"%.33s/*%.28s*/%.3"
"3s/*%.28s*/%"   ".33s\"%s*/",b,b+66,b+33,b+76,b+66,b+99);*r;r++){;for(m=0;m++
<(*r-34)%77;*q++=*r>111?32:*p++)(q-b)%66<1?*q++=10:0;*r-110&&*r-126&&r-t<(t-g?
62:45)?*q++=34,((q-b)%66<1?*q++=10,*q++=34:0):0;}*q=0;puts(b+1);}/*IOCCC2012*/
" "@;}d+=spr" "intf(q=d-20,p,p,34,32,n+1)+2;;;;" "for(n=n*2" "0-400;k<n" ";++k%%n?j=!puts(" "d):(d[j]=" "47,d++,d[j-2" "]=42),k%%" "20<1?puts(d" "-1),a++:0" "){for(i=-1" ";i++<32;!" "*z?q[662]" "=0,z=q+207:" "*z+z[1]<6" "5?z+=11:*" "z==34?p=0" ":0)d[i]=((k/2" "0-1?275*q[" "*a+10]-8*" "q[*a+0]-8" ":128)>>(i/11+k/" "4%%5*3))&1?k" "/3*!j&&p?" "j=34:(j=" "i+1,*z++):32;k/3*" "j--&&p?d[z--,j]=3" "4:0;}}int" "*y,n=%d;/*..~",*f="nnLa5~z23~|22t$q(s82r&q(s82q'q(s8;q(s8;q(s8:" "r(s8:r(s8:" "q)s89r)sLr#t+" "sLx,uJw-yGu/wnnnU",*g="nnLa<z::t$u88t(u67t*u57s,t56t,t56~v56" "tF6tF6tF8t1p" "Nu/qOv+rS}Xxnng";int main(int m,char**v){char a[2012],b[2012 ],*p=a,*r=m>1 &&*v[1]=='e'?g:f,*q=b,*t=r;;sprintf(a,"%s%s%s",s,r==g?s+281: s+168,s+386); sprintf(b,a+22,a,34,32,24);for(sprintf(a,"%.33s/*%.28s*/%.3" "3s/*%.28s*/%" ".33s\"%s*/",b,b+66,b+33,b+76,b+66,b+99);*r;r++){;for(m=0;m++ <(*r-34)%77;*q++=*r>111?32:*p++)(q-b)%66<1?*q++=10:0;*r-110&&*r-126&&r-t<(t-g? 62:45)?*q++=34,((q-b)%66<1?*q++=10,*q++=34:0):0;}*q=0;puts(b+1);}/*IOCCC2012*/

2012 yılında endoh2 adlı yaptığı ve ödül alan programı.

 #define  \
                        D(s)"<<"#s">>"
                      #define  q(s)p(#s)
                     #define S " endobj "
                    #define Y "endstream"S
                    #include     <stdio.h>
                    #define  o(s) b[s]=_;\
                     p("%u    0  obj",s);
#define E for         (c=d;c  < 123;c++)
  #define DANCE         "trailer   "D\
    (/Root 3 0            R /Size %d)            "\nstartxref %u %%%%EOF\n*/"
      #define              p(s, ...)             _+=printf(s,  ##__VA_ARGS__)
       #define C         "<</Type/Page         /Parent %d %d R /Resources <<\
        /ProcSet[       /PDF/Text]/Font       <</U"D(/Subtype/Type1/BaseFont\
          /Courier) "  /T<</Subtype/Type3   /FontBBox[0 0 10 10]/FontMatrix[\
           %f 0 0 %f 0 0]/FirstChar %d/LastChar %d/Encoding<</Differences[%d"
            typedef int N;typedef char*Nyan;typedef char A;N a,b[64],d=65,_,v
              [32]={84,0,64,282,90,74,330,85,93,173,167,176,80,208,81,13,7,87
                ,160,346,32,128,170,218,16,26}; Nyan w[]={"+*-(,&-&","+*,&-&"
                  ,"+*.&/&","+*/*/+","+*())'('"  ,"+**&)&","+*(&'&","+*'*'+",
                    "","+,./","+,-,./","+--,+*"  ,"","+,(/","+,),(/","+-),+*"
                     ,"10 0 d0 ","8 7 2 2 re "   ,"+*+.'`'@'mi +/+/(mi"};Nyan
                       nyan(Nyan _,N y,A n){
                        N g=v[~-y%32];Nyan
                         s=w[g>>n&3|n*2];
                         for(a=0;*_=*s++;
                         a++,_++,*_++=32)
                         {*_+=*_-32?10:0;
                         if(a%2&&*_/16==3
                         ){if(g>>8)*_=105-*_;
                        _++;*_++=32;*_=~-a&&a-13
                        ?108:109;}}return n?n-9?nyan
                       (_,y,n-2):_:nyan(_+=~y&' '?sprintf
                      (_,17[w]):0,y,9);}N main(N c){A e[256];
                     p("/*%%PDF-1.3%%*/")-2;q(#include<stdio.h>\n);
                    q(#define o *_++&& *_-41\n#define);p(" endstream ");q
                   (main(){for(;*_++;      *_-40?:putchar(o?*_:o?10:41));\n)
                  ;q(#define  endobj          return 0;}\n);q(typedef int ET;/)
                 ;q(*);o(1)*b=~(p(D                 (/Length 2 0 R)"stream\n"))
                ;for(p("BT 12 818"                    " Td/%c 12 Tf 12 TL%%%c/"
               "static char*_=\""                       " \\\n",7[v],*v/2);c=
              getchar(),~c;c-10?                         p("/%c 12 Tf(\\%o)"
             "Tj",v[~-c%' '<25[                         v]&&!~-(~-c/'@')?0
            :7],c):(p("()'")))                         ;p("%%\";\nET ");*
           b-=~_;p(Y"/*");E{a                         =nyan(e+sprintf(e,
          16[w]),c,6)-e;o(c-                         59)p(D(/Length %d)
         "stream\n%s"Y,a,e)                         ;}o(2)p(" %u"S,*b);
        o(3)p(D(/Pages 4 0                         R)S);o(4)p(D(/Count
       1/MediaBox[0 0 595                         842]/Kids[5 0 R])S)
      ;o(5)p(C,4,0,6e-2,                         6e-2f,d,122,d);E p(
     "/%c",~-c/6+~14?c:                         d);q(]>>/CharProcs<<)
    ;E if(~-c/6+~14)p(                           "/%c %d 0 R",c,c+~58);
   for(q(>>/Widths[),                             c=59;--c;p(" 10"));a=p
  ("]>>>>>>/Contents 1                              0 R>>"S);for(p("xref\
 0 %d ",--d);c<d;p("%010u\
 %05d n  ",*(c+++b),NULL));
  return!(p(DANCE,d,a));}

2012 yılında 2012 yılında endoh2 adlı yaptığı ve ödül alan programı.

Daha bir çok örnek paylaşabilmem mümkün ama siz http://www.ioccc.org sitesine girip daha detaylı ve kazanmış örneklerine bakmanız mümkün.

Tags:

iocccyazılım yarışması

Paylaş

Diğer Yazılar

blank
Previous

Java Persistance API – JPA Nedir?

blank
Next

Kitap Aldatma Sanatı Kevin D. Mitnick – William L. Simon

Next
blank
27 Temmuz 2013

Kitap Aldatma Sanatı Kevin D. Mitnick – William L. Simon

Previews
12 Temmuz 2013

Java Persistance API – JPA Nedir?

blank

One Comment

  1. Yusuf dedi ki:
    03 Ekim 2013, 16:24

    Ağzım açık kaldı , nedir o ya 🙂 .

    endoh2 nin derledim o musluklu koddan pi nasıl çıktı 🙂

    #include/*Spigot_Quine*//*int*e,i,j,k,n;char*q,*a,*d,**/
    #include/*_IOCCC2012_*//*k,n;char*q,*a,*d,*z,*p=G1%%x*/
    int*e,i,j,k,n;char*q,*a,*d,*z,*p=”G1%%xJ{;Q7wunmuGuu%%uu#include”
    “/*Spigot_Quine*/#include/*_IOCCC2012_*/int*e”
    “,i,j,k,n;char*q,*a,” “*d,*z,*p=%s%c;in”
    “t%cmain(){a=callo” “c(1,1e4+n*2);;fo”
    “r(*a=3,z=d=a+n+1” “,j” “=n*8-7” “;k=0,j-1;j-=2){for(a[1”
    “]+=2;–z-a;*z=k%” “%10,” “k/=10)” “k+=j/2**z;;for(;k=k%%j”
    “*10+*++z,z<d;)*z" "=k/j;" ";;}d+=" "sprintf(q=d-20,p,p,34,"
    "32,n+1)+2;;;;for(n=n*20-4" "00;k<n" ";++k%%n?j=!puts(d):(d["
    "j]=47,d++,d[j-2]=42),k%%2" "0<1?pu" "ts(d-1),a++:0){for(i=-"
    "1;i++<32;!*z?q[662]=0,z=" "q+207:" "*z+z[1]”
    “>(i/11+k/4%%5*3))&1?k/3*” “!j&&p?j” “=34:(j=i+1,*z++):32;k/”
    “3*j–&&p?d[z–,j]=34:0;” “}}int*y” “,n=%d;/*..~”;int main()
    {a=calloc(1,1e4+n*2 ) ;;for(*a= 3,z=d=a+n+1,j=n*8-7;k=0,
    j-1;j-=2){for(a[1] +=2;–z-a; *z=k%10,k/=10)k+=j/2**
    z;;for(;k=k%j*10+* ++z,z<d;)*z =k/j;;;}d+=sprintf
    (q=d-20,p,p,34,32,n +1)+2;;;;for( n=n*20-400;k<n;++k%
    n?j=!puts(d):(d[j]=47,d++,d[j-2]=42),k%20<1?puts(d-1),a++:0){for(
    i=-1;i++<32;!*z?q[662]=0,z=q+207:*z+z[1]>(i/11+k/4%5*3))&1?k/3*
    !j&&p?j=34:(j=i+1,*z++):32;k/3*j–&&p?d[z–,j]=34:0;}}int*y,n=24;

    ——————
    (program exited with code: 238)
    Press return to continue

    Cevapla

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

blank

Melek Yatırımcı ve Yatırım Şirketleri

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Redis
Röportaj
Spring Data
Spring Cloud Stream
XCode
Debezium
Mikroservis Mimarisi
Video
Spring Native
iPhone Uygulama Geliştirme
Objective C
JPA
Spring Security
PostgreSQL
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
RabbitMQ
PrimeFaces
JDBC
Spring Jdbc Template
Spring
Spring MVC
Manset
Google
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Tanıyalım
Veritabanı
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale