Python: A recipe for cryptic code? Python: Une recette pour le code caché?
I have heard that Python is a great programming language which is so much superior to everything around etc. J'ai entendu dire que Python est un langage de programmation grand qui est bien supérieure à tout autour etc
The following code in python is touted as the world’s smallest p2p client & server. Le code suivant en python est vanté comme le plus petit du monde p2p client et serveur.
# tinyp2p.py 1.0 (documentation at http://freedom-to-tinker.com/tinyp2p.html) # Tinyp2p.py 1.0 (documentation http://freedom-to-tinker.com/tinyp2p.html)
import sys, os, SimpleXMLRPCServer, xmlrpclib, re, hmac # (C) 2004, EW Felten import sys, os, SimpleXMLRPCServer, xmlrpclib, re, hmac # (C) 2004, EW Felten
ar,pw,res = (sys.argv,lambda u:hmac.new(sys.argv[1],u).hexdigest(),re.search) ar, pw, res = (sys.argv, lambda u: hmac.new (sys.argv [1], u). hexdigest (), re.search)
pxy,xs = (xmlrpclib.ServerProxy,SimpleXMLRPCServer.SimpleXMLRPCServer) pxy, xs = (xmlrpclib.ServerProxy, SimpleXMLRPCServer.SimpleXMLRPCServer)
def ls(p=”"):return filter(lambda n:(p==”")or res(p,n),os.listdir(os.getcwd())) def ls (p =""): retour filtre (lambda n: (p =="") ou res (p, n), os.listdir (os.getcwd ()))
if ar[2]!=”client”: # license: http://creativecommons.org/licenses/by-nc-sa/2.0 si ar [2]! = "client": # license: http://creativecommons.org/licenses/by-nc-sa/2.0
myU,prs,srv = (”http://”+ar[3]+”:”+ar[4], ar[5:],lambda x:x.serve_forever()) myU, PRS, srv = ( "http://" + ar [3 ]+":"+ ar [4], ar [5:], lambda x: x.serve_forever ())
def pr(x=[]): return ([(y in prs) or prs.append(y) for y in x] or 1) and prs bat pr (x =[]): return ([(y en personne) ou prs.append (y) pour y po x] ou 1) et personne
def c(n): return ((lambda f: (f.read(), f.close()))(file(n)))[0] def c (n): return ((lambda f: (f.read (), f.close ()))( fichier (n))) [0]
f=lambda p,n,a:(p==pw(myU))and(((n==0)and pr(a))or((n==1)and [ls(a)])or c(a)) f = lambda p, n, a: (p == pw (myU)) et (((n == 0) et pr (a)) ou ((n == 1) et [ls (a)]) ou c (a))
def aug(u): return ((u==myU) and pr()) or pr(pxy(u).f(pw(u),0,pr([myU]))) bat Août (u): return ((u == myU) et pr ()) ou PR (pxy (u). f (pw (u), 0, pr ([myU])))
pr() and [aug(s) for s in aug(pr()[0])] pr () et [Aug (s) pour s en Août (pr () [0])]
(lambda sv:sv.register_function(f,”f”) or srv(sv))(xs((ar[3],int(ar[4])))) (lambda sv: sv.register_function (f, "f") ou srv (sv)) (xs ((ar [3], int (ar [4 ]))))
for url in pxy(ar[3]).f(pw(ar[3]),0,[]): pour l'url dans pxy (ar [3]). f (pw (ar [3]), 0 ,[]):
for fn in filter(lambda n:not n in ls(), (pxy(url).f(pw(url),1,ar[4]))[0]): pour la note de bas de filtre (lambda n: n pas dans ls (), (pxy (url). f (pw (url), 1, ar [4])) [0]):
(lambda fi:fi.write(pxy(url).f(pw(url),2,fn)) or fi.close())(file(fn,”wc”)) (lambda fi: fi.write (pxy (url). f (pw (url), 2, fn)) ou fi.close ()) (file (fn, "wc"))
Source: TinyP2P
I started my programming career with assembly language (writing tiny .com programs and playing with cuties like masm and tasm), then moved to C, even mess with java byte codes for fun. J'ai commencé ma carrière au sein de programmation langage d'assemblage (écriture minuscule. Com programmes et de jouer avec Cuties comme MASM et tasm), puis à C, même mess with java byte code pour le plaisir.
But this wonderful gem of a program (displayed above) beat the crap out of me. Mais ce merveilleux joyau d'un programme (affiché ci-dessus) a battu la merde hors de moi.
Python, going by this example, looks to me a sure-fire recipe for creating obfuscated code. Python, en passant par cet exemple, se tourne vers moi un certain feu recette pour créer obfuscated code. I would rather read 80×86 instructions, thank you very much! Je préfère lire 80 × 86 instructions, je vous remercie beaucoup!
PS. Java programmers, you can relax. Programmeurs Java, vous pouvez vous détendre. Python programmers (oops hackers as per naive bayesian dude) writing such code will never be able to maintain it. Programmeurs Python (oups par les pirates comme bayésien naïf dude) écrit un tel code ne sera jamais en mesure de le maintenir. So you will definitely be called in to replace such “hackers” and rewrite the whole thing in Java (use the word refactoring to get better traction with management). Ainsi, vous sera sans aucun doute appelé à remplacer ces "pirates" et de réécrire le tout en Java (utiliser le mot refactoring pour obtenir une meilleure adhérence avec la direction).
Filed under Classé sous Humor Humour , Java Software Logiciel de Java , Technology Technologie , Web , Web Services Services Web | |
| |
RSS 2.0 RSS 2,0 | |
Email this Article Envoyer cet article
You may also like to read Vous mai également à lire |




April 13th, 2005 at 3:55 am Avril 13, 2005 chez 3:55 am
I’ma java programmer (and an occasioanl python/jython one). Je suis un programmeur Java (et un python occasioanl / Jython). But this is not really fair. Mais ce n'est pas vraiment juste. One can write obfuscated code in any language. On peut écrire obfuscated code dans n'importe quelle langue. This code is like when you write multiple statments in one line in any C style language (like in java). Ce code est comme lorsque vous écrivez statments multiples sur une seule ligne dans toute langue de style C (comme en java). Or you can nest a lot of method calls, which you normally don’t do if you wan’t maintanable code. Ou vous pouvez nid beaucoup de la méthode des appels, que vous ne le faites pas si vous voulez maintanable code.
This code is meant to be compact and not readible or maintainable. Ce code est conçu pour être compact et readible ou pas d'entretien. There are no blocks (no indentations) only one liner methods and lambda (inline defined) functions. Il n'ya pas de blocs (pas de marques) une seule ligne et les méthodes lambda (inline défini) fonctions. Python does look good when you program it in the right, standard style. Python ne semblent bonnes quand vous le programmer dans le droit, de style standard. And there is such a thing, just as with java (though there are some annoying inconsistencies, like some people and the stdlib uses camel case here and underscores there, etc). Et il ya une telle chose, tout comme avec Java (mais il ya des incohérences ennuyeux, à l'instar de certaines personnes et utilise la stdlib chameau cas ici et il souligne, etc.)
April 13th, 2005 at 5:06 am Avril 13, 2005 at 5:06 am
Be sure to catch the readable rebuke Assurez-vous de prendre le blâme lisible
:
http://www.mechanicalcat.net/richard/log/Python/Ugly_Python
…wonder if that runs in Jython? … Se demander si ce qui tourne dans Jython?
April 13th, 2005 at 5:14 am Avril 13, 2005 chez 5:14 am
@Laszlo Marai @ Laszlo Marai
> But this is not really fair. > Mais ce n'est pas vraiment juste.
Life isn’t fair either La vie n'est pas juste soit
BTW: You mentioned that the code is meant to be compact and not readable or maintable. BTW: Vous avez mentionné que le code est conçu pour être compact et pas lisible ou maintable. Then why did he code it in Python? Alors pourquoi at-il dans le code Python? Why not in assembly language? Pourquoi ne pas en langage assembleur? It would have been much faster and more compact. Il aurait été beaucoup plus rapide et plus compacte.
Any code written in high level language should be readable and maintable. Tout code écrit en langage de haut niveau doit être lisible et maintable.
I seriously doubt you can match this level of obfuscation in Java. Je doute vous permettent d'adapter ce niveau de dissimulation en Java. Heck I can even read the decompiled obfuscated(using standard obfuscators; not by the programmer) java code properly. Heck, je peux même lire les décompilé rendu (en utilisant la norme obfuscators, pas par le programmeur) Java code correctement.
PS: Be sure to check the categories this post is under. PS: N'oubliez pas de vérifier les catégories de ce poste est en cours.
April 13th, 2005 at 5:32 am Avril 13, 2005 at 5:32 am
From À partir de http://www.gamedev.net/hosted/javaextreme/obfpoll.htm :
import java.awt.*;import java.util.*;public class C extends Frame{Date D=new Date();void T(Date d){D=d;repaint();}double P=Math.PI,A=P/2,a,c,U=.05;int W,H,m,R;double E(int a,int u){return(3*P/2+2*P*a/u)%(2*P);}void N(Graphics g,double q,double s){g.fillPolygon(new int[]{H(s,q),H(U,q+A),H(U,q+3*A)},new int[]{J(s,q),J(U,q+A),J(U,q+3*A)},3);}public void paint(Graphics g){Color C=SystemColor.control;g.setColor(C);g.fillRect(0,0,W=size().width,H=size().height);W-=52;H-=52;R=Math.min(W/2,H/2);g.translate(W/2+25,H/2+36);g.setColor(C.darker());for(m=0;m javac C.java import java.awt .*; importation java.util .*; public class C étend Frame (date d = new Date (); void T (Date d) (D = d; repeindre ();) double P = Math.PI , A = P / 2, A, C, U =. 05; int W, H, M, R; double E (un int, int u) (return (3 * P / 2 +2 * P * a / u )% (2 * P);) void N (Graphics g, double q, double s) (g.fillPolygon (nouveau int [] (H (s, q), H (U, q + A), H (U , q +3 * A)), de nouvelles int [] (J (s, q), J (U, q + A), J (U, q +3 * A)), 3);) public void peinture ( Graphics g) (color = C SystemColor.control; g.setColor (C); g.fillRect (0,0, W = taille (). Largeur, H = taille (). Hauteur) et W-= 52, H - = 52, R = Math.min (W / 2, H / 2); g.translate (W / 2 +25, H / 2 +36); g.setColor (C.darker ()); (m = 0; javac m C.java
C> java C C> Java C
Author & Submitter: David M. Hewitt/1999″ Auteur et auteur: David M. Hewitt / 1999 "
April 13th, 2005 at 6:37 am Avril 13, 2005 at 6:37 am
not the shortest p2p app, there is at least a shorter one in ruby and an even shorter one in perl. pas les plus brefs app p2p, il ya au moins une courte dans un rubis et un même un court en perl.
See Voir
http://ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-talk/123945
for the first, I can’t find the latter. pour la première, je ne peux pas trouver ce dernier.
Btw, doing this things in python is more impressive. Btw, ce faisant les choses en python est plus impressionnant.
April 13th, 2005 at 7:08 am Avril 13, 2005 at 7:08 am
You picked what is probably the single most obsfucated chunk of Python code in existence and are attempting to make a generalization about the entire language based on it. Vous avez choisi ce qui est probablement la plus obsfucated morceau de code Python dans l'existence et tentent de faire une généralisation sur l'ensemble fondée sur la langue. It’s folly. C'est la folie.
> Why not in assembly language? > Pourquoi ne pas en langage assembleur? It would have been much faster and more compact. Il aurait été beaucoup plus rapide et plus compacte.
It would have taken longer, required many more lines, and would have been limited to running on a specific platform. Il aurait pris plus de temps, exige beaucoup plus de lignes, et aurait été limitée à l'exploitation sur une plate-forme spécifique.
> Any code written in high level language should be readable and maintable. > Tout code écrit en langage de haut niveau doit être lisible et maintable.
More folly. Plus de folie. Python syntax *encourages* readable and maintainable code, it doesn’t require it. Syntaxe de Python * * encourage lisible et maintenable code, il ne l'exige pas.
October 3rd, 2007 at 7:21 am 3 octobre 2007 à 7:21 am
I tend to agree with the artical. J'ai tendance à être d'accord avec l'article. Have a look at examples in the Python tutorials: Jetez un coup d'œil à des exemples en Python tutoriels:
return “;”.join(["%s=%s" % (k, v) for k, v in params.items()]) retour ";". join ([ "% s =% s"% (k, v) pour k, v dans params.items ()])
This statement could easily be written using a loop and be much easier to understand. Cette déclaration pourrait facilement être écrits en utilisant une boucle et d'être beaucoup plus facile à comprendre. It seems to be cool to Python programmers try to write the entire program in one line and the syntax of the language seems to be designed that way. Il semble être sympa pour les programmeurs Python essayer d'écrire tout le programme sur une seule ligne et la syntaxe de la langue semble être conçues de cette manière.
Java uses plain english keywords that makes it less crytic. Java utilise plaine Anglais mots-clés qui le rend moins crytic.