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
- le code C (8 clics)
- la gallerie des versions de DeCSS (7 clics)
- la dépêche précédente (2 clics)
# Ouaouh !
Posté par Pat Le Nain . Évalué à 1.
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 Anonyme . Évalué à 0.
[^] # Re: Ouaouh !
Posté par Olivier . Évalué à 1.
[^] # Re: Ouaouh !
Posté par Anonyme . Évalué à 0.
[^] # Re: Ouaouh !
Posté par Pat Le Nain . Évalué à 1.
Ma phrase était à prendre au deuxième degré (au moins) et elle avait un rapport léger avec i2bp.
# i2bp
Posté par Sohphie de Montmirail . Évalué à 1.
Ils le feront en JAVA en 2,5 bytes (après compilation).
# Pas une bonne idee...
Posté par Anonyme . Évalué à 0.
[^] # En France DeCSS est legal !
Posté par Anonyme . Évalué à 0.
nicO
[^] # Copiez un DVD en une ligne de shell !
Posté par Anonyme . Évalué à 0.
# La preuve
Posté par Ramón Perez (site web personnel) . Évalué à 1.
[^] # Re: La preuve
Posté par Anonyme . Évalué à 0.
Franck.
[^] # Re: La preuve
Posté par Zork . Évalué à 1.
[^] # Re: La preuve ? Quelle preuve ?
Posté par Anonyme . Évalué à 0.
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 pasBill pasGates . Évalué à 1.
[^] # Re: La preuve
Posté par Anonyme . Évalué à -1.
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 Nelis (site web personnel) . Évalué à 1.
[^] # Re: La preuve
Posté par Anonyme . Évalué à 0.
[^] # Re: La preuve
Posté par Nelis (site web personnel) . Évalué à 1.
[^] # Re: La preuve
Posté par Pat Le Nain . Évalué à 1.
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 Nelis (site web personnel) . Évalué à 1.
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 Ramón Perez (site web personnel) . Évalué à -1.
# bon sang !
Posté par Anonyme . Évalué à 0.
# héhé
Posté par Anonyme . Évalué à 0.
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 Ano . Évalué à 1.
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 Anonyme . Évalué à 0.
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 Anonyme . Évalué à 0.
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 Ramón Perez (site web personnel) . Évalué à 1.
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 Anonyme . Évalué à 0.
[^] # Re: héhé
Posté par Ramón Perez (site web personnel) . Évalué à 1.
Et bien ça a été fait en Verilog :
http://www.cs.cmu.edu/~dst/DeCSS/Gallery/DAH(...)
# Et l'auteur
Posté par Laurent Saint-Michel . Évalué à 1.
# euuuu c'est super mais ...
Posté par Anonyme . Évalué à 0.
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 Anonyme . Évalué à 0.
désolé
Le Fennec Keepu
[^] # Re: euuuu c'est super mais ...
Posté par Anonyme . Évalué à 0.
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 Anonyme . Évalué à 0.
Le Fennec Keepu
[^] # Re: euuuu c'est super mais ...
Posté par oliv . Évalué à 1.
# + court
Posté par Fred . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.