DeCSS encore plus petit en C qu'en Perl

Posté par  . Modéré par Fabien Penso.
Étiquettes :
0
14
mar.
2001
Humour
Il y a quelques jours, une version Perl de DeCSS a été introduite qui était le programme le plus petit (7 lignes) pour décrypter le CSS.
Il faut croire que ça a vexé un passioné de C, qui vient de produire un code C de 442 octets, soit 30 de moins que son équivalent Perl!
Allez, y'en a bien un qui va nous l'écrire en Basic ou en logo à ce rythme :)

#define K(i)(x[i]^s[i+84])<<
unsigned char x[5],y,z,s[2048];main(n){for(read(0,x,5);read(0,s,n=2048);write(1
,s,n))if(s[y=s[13]%8+20]/16%4==1){int i=K(1)17^256+K(0)8,k=K(2)0,j=K(4)17^K(3)9
^k*2-k%8^8,a=0,b=0,c=26;for(s[y]-=16;--c;i/=2,j/=2)a=a*2^i&1,b=b*2^j&1;for(j=
127;++jy)a^=a>>14,a=a>>8^(y=a^a*8^a<<6)<<9,b=b>>8^(z=b^b/8^b>>4^b>>12)
<<17,i=s[j],i="7Wo~'G_\216"[i&7]+2^"cr3sfw6v;*k+>/n."[i>>4]*2^i*257/8,s[j]=i^(i
&i*2&34)*6^z+c+~y;}}

Aller plus loin

  • # Ouaouh !

    Posté par  . Évalué à 1.

    Dans le genre "code C illisible mais fonctionnel", celui-ci est très beau.
    Ya pas un pro en Ruby ou mieux, en Java :) pour nous faire qqchse d'encore plus court ?
    Cette performance est tout de même à relativiser, il manque l'obtention de la title-key (comme pour le code Perl), il faut la récupérer ailleurs.
    • [^] # Demande d'aide, merci.

      Posté par  . Évalué à 0.

      Il me semblait bien que j'avais loupé quelque-chose. S'il-vous-plait, je débute dans l'art de décripter les DVD, pouriez-vous me dire comment faire ? Ou trouver la title-key et quelle ligne de commande taper exactement. Merci !
    • [^] # Re: Ouaouh !

      Posté par  . Évalué à 1.

      pour faire un exécutable java "concis" (genre 50 octets), il faut demander à I2BP....... :):):)
    • [^] # Re: Ouaouh !

      Posté par  . Évalué à 0.

      Je crois que "Ya pas un pro en Ruby ou mieux, en Java :) pour nous faire qqchse d'encore plus court ?" est une question débile quand on a dejà lu le code source d'un programme écrit en Java.
      • [^] # Re: Ouaouh !

        Posté par  . Évalué à 1.

        Je sais bien, je code du Java avec JBuilder tte la journée.
        Ma phrase était à prendre au deuxième degré (au moins) et elle avait un rapport léger avec i2bp.
  • # i2bp

    Posté par  . Évalué à 1.

    Faut demander à i2bp.
    Ils le feront en JAVA en 2,5 bytes (après compilation).
  • # Pas une bonne idee...

    Posté par  . Évalué à 0.

    Je ne suis pas certains qu'il soit tres judicieux de plublier ce bout de code... l'URL pour le telecharger aurait ete beaucoup moins problematique vis à vis de Hollywood
    • [^] # En France DeCSS est legal !

      Posté par  . Évalué à 0.

      Le but est de lire des fichiers sous linux donc d'apres la loi d'interoperabilite des sytems, il est legal de pouvoir decrypter les dvds. Na d'abord ! Et pour copier des dvd on a pas besoin de decss(enfin , il me semble).
      nicO
  • # La preuve

    Posté par  (site web personnel) . Évalué à 1.

    Comme quoi, c'est bien la preuve que le C c'est mieux que le Perl....
    • [^] # Re: La preuve

      Posté par  . Évalué à 0.

      Je rappelle que ce code n'est pas DeCSS.

      Franck.
    • [^] # Re: La preuve

      Posté par  . Évalué à 1.

      Ah bon c une preuve ca????? Produire un code totalement imbitable afin de gagner 30 octet est synonime de mieux???? On doit pas avoir la meme notion de meilleur alors.
    • [^] # Re: La preuve ? Quelle preuve ?

      Posté par  . Évalué à 0.

      Faut pas mélanger !
      Ils ont des buts totalement différent.
      Perl et C ne sont pas opposer. Ils sont plutôt fait pour se complèter.
    • [^] # Re: La preuve

      Posté par  . Évalué à 1.

      Moi ca me fait surtout penser que si Hollywood avait encrypte ses films en les ecrivant de cette maniere personne serait arrive a les decrypter :+)
    • [^] # Re: La preuve

      Posté par  . Évalué à -1.

      A ce jeu la, le meilleur language, c'est Brainf***
      171o pour le compilo:
      $ls -l
      [...] 171 Mar 9 02:41 bf*

      Et ça reste toujours tres lisible ;-)

      Bon, -1
    • [^] # Re: La preuve

      Posté par  (site web personnel) . Évalué à 1.

      Ca c'est un des commentaires les plus débiles qu'il m'ait été permis de lire :) Ca veut dire quoi qu'un langage est 'mieux' qu'un autre ? 'Mieux' en lui meme ne veut rien dire ... Chaque langage a ses points forts et ses points faibles ...
    • [^] # Re: La preuve

      Posté par  . Évalué à 0.

      aller, apres avoir essaye DeCSS avec Perl et C, faudrait essayer avec des langages de losers, genre java, PHP pour voir si on peut faire aussi court :-)
      • [^] # Re: La preuve

        Posté par  (site web personnel) . Évalué à 1.

        Et hop ! Un autre commentaire qui reflète la débilité de son auteur :) Es-tu au courant qu'un langage de programmation n'est pas fait pour écrire un programme le plus petit possible, mais pour développer du logiciel ? :) Alors tes commentaires à la c*n du genre 'langage de loser' tu peux te les garder ! Du haut de tes 12 ans (d'age mental en tout cas), tu te prends sans doute pour un C0d3rZ de la mort ... Enfin bon, on peut pas t'en vouloir hein :)
        • [^] # Re: La preuve

          Posté par  . Évalué à 1.

          Et un point Godwin, un !

          A moins que tu fasses parti ds gars qui codent des JDK ou des JVM ou que tu fasses parti du team PHP, je te demanderais de modérer un poil tes propos.

          J'avoue au passage qu'il me parait difficile de faire la même chose en php et en java (au moins en aussi court). Le C n'est après tout qu'un macro-assembleur (et a été conçu comme tel).
          • [^] # Re: La preuve

            Posté par  (site web personnel) . Évalué à 1.

            Je reconnais que je me suis emporté mais ça me fout hors de moi de voir qq'un qui manifestement n'y connais pas rien critiquer des choses qu'il ne connait pas ... Personnellement je code tout aussi bien en C, C++ et Java, tout ces langages ont leurs points forts et leurs points faibles ... Par exemple je ne connais pas le PHP, et je ne me permettrais jamais de dire que le PHP est un langage de loser ... Je parie que le gars qui a fait ce post serait le 1er à sauter en l'air si un utilisateur de Windows n'ayant jamais utilisé Linux disait 'C'est un OS de losers', alors qu'il ne fasse pas de meme pour les langages de programmations ...

            J'oubliais, je n'ai bien entendu pas la prétention de recoder ça en Java (je n'en vois pas l'intérêt...) et mon post n'était absolument pas une critique contre le C ou le PERL mais juste un coup de gueule contre l'auteur du post ...
      • [^] # Re: La preuve

        Posté par  (site web personnel) . Évalué à -1.

        Ha je suis deg, ton troll a mieux marché que le mien ;-)
  • # bon sang !

    Posté par  . Évalué à 0.

    Mais je le reconnais, ce code ! C'est i2bp ! Vite, je dois le deposer avant les autres ! ouaaaaaaaaaaaah !
  • # héhé

    Posté par  . Évalué à 0.

    Et après on me dit que le Perl c'est illisible, et quand je réponds que les crados codent aussi mal en C qu'en Perl on me rit au nez :)
    Les 30 octets ils doivent bien être dans les $ et @ qui manquent (cruellement ;-) au C.
    Allez, je vais me le faire à coup de transistors, a+
    • [^] # Re: héhé

      Posté par  . Évalué à 1.

      Attention, composants discrets exclusivement!

      En Gal, Pal et autres µC, c'est beaucoup trop facile....

      Allez: un décodeur DVD multizone hard en 6 transistors, 3 résistances et 3 condensateurs céramique (non, non, pas de tantale!)...

      Et ca c'est du hard, je peux le breveter... Je peux pas encore vous le montrer, je doit déposer ce nouveau montage avant de le présenter au public, et l'administration est leeeente....
      • [^] # Re: héhé

        Posté par  . Évalué à 0.

        On y viendra un jour: Après le soft libre viendra le hard...

        Si quelqu'un s'y connait en éléctronique numérique, lancer un projet expliquant comment faire sa carte de décompression MPEG2 avec décodage DeCss intégré serait hyper cool. Genre une page avec les PCBs à télécharger (où à commander tout fait pour ceux qui n'ont pas le matos), la liste des composants, le plan d'implantation, le code à flasher, le driver linux GPL, etc...

        Un volontaire?
        • [^] # Re: héhé

          Posté par  . Évalué à 0.

          MDR !
          Le plus simple est de recuperer une puce qui fait tout le boulot donc qui coute 90 % du montage. Tu peux aussi tout faire avec des fpga et beaucoup d'huile de coude (un decodeur mpeg2 a ecrire VHDL, mmh coton!). Mais comme il faut des gros composants dans les 5-10 kF... Je ne te parle meme pas du cout du pcb si tu as besoin de 4 couches en proto(~10000F).

          Bref, parfois la production en volume a du bon :p Sauf si il s'agit de rajouter (ou d'enlever;) certaines fonctionnalites...

          nicO
        • [^] # Re: héhé

          Posté par  (site web personnel) . Évalué à 1.

          >Après le soft libre viendra le hard...

          Il existe déjà un projet visant à créer un CPU sous GPL :
          http://www.f-cpu.org(...)
      • [^] # Recherche shéma carte pirate

        Posté par  . Évalué à 0.

        HELP !!! !je ne trouve pas le site où je peux me procurer les shémas de montage de carte pirate Csat !
    • [^] # Re: héhé

      Posté par  (site web personnel) . Évalué à 1.

      >Allez, je vais me le faire à coup de transistors

      Et bien ça a été fait en Verilog :
      http://www.cs.cmu.edu/~dst/DeCSS/Gallery/DAH(...)
  • # Et l'auteur

    Posté par  . Évalué à 1.

    Cela aurait été "cool" de citer l'auteur, non?
  • # euuuu c'est super mais ...

    Posté par  . Évalué à 0.

    je trouves ca trop exelent mais ...
    vous n'êtes pas capable de faire un copié/collé sur linuxfr ?

    voila le code correct et mis en page:

    /* efdtt.c Author: Charles M. Hannum <root@ihack.net> */
    /* */
    /* Usage is: cat title-key scrambled.vob | efdtt >clear.vob */

    #define K(i)(x[i]^s[i+84])<<
    unsigned char x[5],
    y,
    z,
    s[2048];
    main(n)
    {
    for(
    read(0, x, 5);
    read(0, s, n=2048);
    write(1, s, n)
    )

    if(s[y=s[13]%8+20]/16%4==1)
    {
    int i=K(1)17^256+K(0)8,
    k=K(2)0,
    j=K(4)17^K(3)9^k*2-k%8^8,
    a=0,
    b=0,
    c=26;

    for(s[y]-=16; --c; i/=2,j/=2)
    a=a*2^i&1,
    b=b*2^j&1;

    for(j=127; ++j<n; c=z+c>y)
    a^=a>>14,
    a=a>>8^(y=a^a*8^a<<6)<<9,
    b=b>>8^(z=b^b/8^b>>4^b>>12)<<17,
    i=s[j],
    i="7Wo~'G_\216"[i&7]+2^"cr3sfw6v;*k+>/n."[i>>4]*2^i*257/8,
    s[j]=i^(i&i*2&34)*6^z+c+~y;
    }
    }


    j'ai testé et ca marche ... en fait on devrait même pouvoir lire un dvd en faisant cat title-key scrambled.vob | efdtt | "playermpg2"

    mais j'ai pas testé.

    c'est vrai qu'en lisant le code non mis en forme ca parrais (comme pour le perl) incompréhensible mais une fois mis en forme c'est assez simple (tout est relatif ;) en tout cas chapeau Mr Charles M. Hannum c'est impressionnant !!!

    Le Fennec Keepu
    • [^] # Re: euuuu c'est super mais ...

      Posté par  . Évalué à 0.

      et merde j'ai oublié que les tabs passeraient pas en html ... tanpis c'est pas si lisible que ca ...
      désolé

      Le Fennec Keepu
    • [^] # Re: euuuu c'est super mais ...

      Posté par  . Évalué à 0.

      Pour avoir le code correctement mis en page, tu prends le pavé de la news, tu le sauvegarde ds un .c et tu le passe à la moulinette indent.
      Hors directives pour cpp, n'importe quel source C peut tenir sur une seule ligne (mais ça fait bcp de colonnes:). Pareil pour perl, bash, Java (et oui), PHP, HTML, et autres.
    • [^] # Re: euuuu c'est super mais ...

      Posté par  . Évalué à 1.

      désolé, mais je ne suis pas friand des dépêches qui font plus de 15 lignes. En plus, celà permettait une comparaison avec le code Perl publié précédemment (suivre le 3° lien). Voilà pourquoi j'ai préféré garder la mise en page du fichier texte d'origine.
  • # + court

    Posté par  . Évalué à 1.

    je pense que l on peut faire plus court en prenant un sort au lieux d un usigned char...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.