Programme de dingue en C

Discussions concernant tout ce qui n'entre pas dans le cadre des autres catégories.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
François D.
Utilisateur chevronné
Utilisateur chevronné
Messages : 1367
Inscription : dimanche 30 juillet 2006, 10:04
Localisation : Alsace

Programme de dingue en C

Message non lu par François D. »

Comme promis en catégorie LaTeX, voici :

Code : Tout sélectionner

#include <stdio.h>

main(t,_,a)
char *a;
{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a
)&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %d\n" ):9:16:t<0?t<-72?main(_,
t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\
,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\
+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\
l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\
+1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \
i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}


:crazy: :scared: :mrgreen:
Dernière modification par François D. le samedi 02 janvier 2010, 10:04, modifié 1 fois.
Arnaud
Modérateur honoraire
Modérateur honoraire
Messages : 7098
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne

Re: Programme de dingue en C

Message non lu par Arnaud »

J'ai un peu la flemme : ça fait quoi ?
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
François D.
Utilisateur chevronné
Utilisateur chevronné
Messages : 1367
Inscription : dimanche 30 juillet 2006, 10:04
Localisation : Alsace

Re: Programme de dingue en C

Message non lu par François D. »

Je viens de revérifier : chez moi, ça compile net, sans même un warning de gcc !

Ce que ça fait ? Pour ne pas gâcher le plaisir des autres, je te dis ça en MP ;) .
Dernière modification par François D. le mardi 05 janvier 2010, 17:39, modifié 1 fois.
Arnaud
Modérateur honoraire
Modérateur honoraire
Messages : 7098
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne

Re: Programme de dingue en C

Message non lu par Arnaud »

Ha ouais, quand même.
C'est pas mal récursif, et je ne comprends pas toutes les interventions de caractères, je ne m'y connais pas trop dans les finesses du c.
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
Framboise
Utilisateur chevronné
Utilisateur chevronné
Messages : 1174
Inscription : lundi 21 mai 2007, 13:57
Statut actuel : Autre
Localisation : Dordogne

Re: Programme de dingue en C

Message non lu par Framboise »

Amusant.
Un tout petit peu mathématique.

Pour info, il compile sans problème avec TurboC que l'on trouve en abandonware facilement.
Je ne dirais pas ce qu'il fait, je laisse la surprise.
J'ai le virus des sciences, ça se soigne ?
François D.
Utilisateur chevronné
Utilisateur chevronné
Messages : 1367
Inscription : dimanche 30 juillet 2006, 10:04
Localisation : Alsace

Re: Programme de dingue en C

Message non lu par François D. »

En discutant de ce programme avec un collègue ce matin, j'ai fini par me demander qui pouvait être à la fois suffisamment compétent et pervers pour pondre une ignominie pareille :mrgreen: ...
M'est alors venue l'idée suivante : il pourrait s'agir d'un programme initialement écrit de manière classique et, toutes proportion gardées :mrgreen:, lisible, en C (voire même peut-être dans un autre langage compilé, finalement), compilé pour obtenir un exécutable qui a lui été décompilé par après ce « source » C si alléchant.
Framboise
Utilisateur chevronné
Utilisateur chevronné
Messages : 1174
Inscription : lundi 21 mai 2007, 13:57
Statut actuel : Autre
Localisation : Dordogne

Re: Programme de dingue en C

Message non lu par Framboise »

C'est une idée mais la décompilation ne donne pas ce genre de résultat du tout.
Il existe aussi des programmes destinés à embrouiller la source en C afin de rendre le programme source incompréhensible ( système antivol de l'algorithme ). Cela s'en rapproche un peu plus.
Pour atteindre ce degré de perversité, je ne vois qu'un programmeur en C encore pire que moi ( c'est pas peu dire ! ), pas un programme tout seul.

J'ai connu un plus petit programme dans ce style pour calculer un grand nombre de décimales de PI:
http://www.yann-ollivier.org/pi/pi

Voir:
http://fr.wikipedia.org/wiki/Internatio ... de_Contest
http://en.wikipedia.org/wiki/Internatio ... de_Contest
http://www.cise.ufl.edu/~manuel/obfusca ... scate.html

Faire une recherche Google avec:
program obfuscated
J'ai le virus des sciences, ça se soigne ?
Garulfo

Re: Programme de dingue en C

Message non lu par Garulfo »

François D. a écrit :En discutant de ce programme avec un collègue ce matin, j'ai fini par me demander qui pouvait être à la fois suffisamment compétent et pervers pour pondre une ignominie pareille :mrgreen: ...
M'est alors venue l'idée suivante : il pourrait s'agir d'un programme initialement écrit de manière classique et, toutes proportion gardées :mrgreen:, lisible, en C (voire même peut-être dans un autre langage compilé, finalement), compilé pour obtenir un exécutable qui a lui été décompilé par après ce « source » C si alléchant.
Non c'est un programme écrit volontairement dans ce sens. C'est un jeu de l'esprit et un exemple de ce qu'il ne faut jamais faire. Ça amuse les étudiants mais c'est quasiment contraire à toutes les bonnes habitudes de programmation.
Garulfo

Re: Programme de dingue en C

Message non lu par Garulfo »

Framboise a écrit :C'est une idée mais la décompilation ne donne pas ce genre de résultat du tout.
Il existe aussi des programmes destinés à embrouiller la source en C afin de rendre le programme source incompréhensible ( système antivol de l'algorithme ). Cela s'en rapproche un peu plus.[...]
J'en doute aussi. Brouiller le code source est peu efficace. C'est l'assembleur qui est brouillé d'habitude avec des instructions inutiles.