Liens connexes

Dépêche modérée par

: DeCSS encore plus petit en C qu'en Perl

Posté par oliv (). Modéré le 14 mars 2001.
0
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;}}

> Lire les commentaires (36 commentaires, moyenne: 0,4).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Ouaouh !

Posté par Pat Le Nain (Jabber id, page perso, ) le 14/03/2001 à 17:33. (lien). É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.

--
Demat le bouchot !

i2bp

Posté par Sohphie de Montmirail () le 14/03/2001 à 17:36. (lien). Évalué à 1.

Faut demander à i2bp.
Ils le feront en JAVA en 2,5 bytes (après compilation).

Pas une bonne idee...

Posté par Anonyme () le 14/03/2001 à 17:37. (lien). É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

La preuve

Posté par Ramón Perez (page perso, ) le 14/03/2001 à 17:44. (lien). Évalué à 1.

Comme quoi, c'est bien la preuve que le C c'est mieux que le Perl....

bon sang !

Posté par Anonyme () le 14/03/2001 à 19:56. (lien). Évalué à 0.

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

héhé

Posté par Anonyme () le 14/03/2001 à 20:40. (lien). É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+

Et l'auteur

Posté par Laurent Saint-Michel () le 15/03/2001 à 07:21. (lien). Évalué à 1.

Cela aurait été "cool" de citer l'auteur, non?

euuuu c'est super mais ...

Posté par Anonyme () le 15/03/2001 à 11:02. (lien). É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

+ court

Posté par Fred (page perso, ) le 06/01/2002 à 01:08. (lien). Évalué à 1.

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

Revenir en haut de page