python3下载远程代码并执行

Life is short, you need Python - Bruce Eckel
Package Index, Python 3.5.3 documentation
头像
灵台方寸山
出类拔萃
出类拔萃
帖子: 79
注册时间: 2016年08月06日 16:40
拥有现金: 锁定
储蓄: 锁定
来自: [color=red]斜月三星洞[/color]
Has thanked: 24 times
Been thanked: 17 times

python3下载远程代码并执行

帖子 #1 灵台方寸山 » 2016年09月01日 12:19

第一步:
先在gist之类的网站上贴上代码,目的不是高亮,而可以raw的形式获取代码,这样可以省掉处理html的时间,我这里用的是pasteraw:

远程上的代码:http://cdn.pasteraw.com/6hwu5u4ujhdv5gvyh07qrahb9d0orer

tkinter代码的兼容性真是超好,我基本抄的十年前教程上的代码,其中代码如下,那些奇怪的字符是原型是一个2K的MP3文件:
```

  1. """
  2. 这个代码主要示范:
  3. 1、示范python3如何从远程下载代码并执行
  4. 2、示范如何把一个文件转成文本嵌入到程序代码中。
  5. 3、示范把字符还原成文件,并调用。这段代码中使用的是base85编码
  6. # 调用方法 import urllib.request; code_url = url; req = urllib.request.urlopen(code_url).read();exec(req)
  7.  
  8. #运行环境 windows python3.4
  9. #2016年9月1日 11:51:16 codegay
  10. """
  11. import base64
  12.  
  13. amp3 = r"""
  14. s5P6?!#0DW?irk8!4Z3Y@0-^#!bBcl]=Z(=Lku)C]=Xdb`(kZokl-G8!K0,aE&\]!EsobJ#N(aK5EtF<ci<KRi1(nIpc`!`arL!PPR$0(7rUdB&!mh,0(;.,5QDK*"Tj6?s5P<A#o/Rd
  15. dU.u!!2*.:'F2>G\SrpF;o4$MIHd=#c-m"ZM?;c5:(t(=U4CV/4nG`BN2Z^Bk[B;Z-m2=d-o(L,ht3o!s75JIVtnO8LjR&'..htts2>^]L]dd&[cr:\@q[G>"omU*`"!T9md;1;-j,4M
  16. jqp@Mc?"c\*PCQ$5g`g6mOV_maK=i&Qg7!YL4@Ttku<Ym?GsBW'<MaC5O?/bs%i5dV5[o*Z5Hqpf73fZrRO[]ZB:NWYPf/Y]uP\cbYk=llV%1b63#sh`![<Kk5IP(7,@qloMNM#^&ao8
  17. nh>_\"%!R6@0f4*`$#(BdM"c46'8:,RAbr+e'mu9ke?<]s7Ce`A@,8;*PmgC$loL@)G>RFeAWG,$lZJFTh<B?!$$Qu2h*r_JdEXUr@e32+N+g.!nQI^;?WEmTcMHX"I`2^j!k"t+B#Ds
  18. :hf@kmE.0/s&U?RGQ3>-E_&n2I2Rj/mma4i7*5Gcs8W,U6_*=!(uYT/0H^K<m9QOc8F$?q16*7`Z/=br"p$2Cg]m^LV$$bX,/aj)F2%>H-q.0h2tT32@3^O6ns#p`'_l3oaAE*t2dB$#
  19. !#M);@/k`sd1\uBo-5.OVMkNJs7W#?a(ko65`B8E7s3q^=5(Cgs8ApBf<%drj:&srgccke$+,kVp*;X&?r@4/iul8L(JD'mp//d*Z/P_I$m5D_+;4^IpoV<\.`ZDUj++W8SfVe8WQ#4e
  20. r^&jIJQo&(ro@,[\+pT0Q''`N_#h5uVuDDMg]!.7aYKljRa-f.&XCA:aU,KEeVqQN*JuoW?reNPj!)DK'No2DIL8J01*ur1"CL<o!Wd66/,rM8s.Z4"kG"aNW)F%=61b2LW3N#[Y^A&+
  21. ,TX*la%]q=@%d_m;,rQ;epG0_f/"5UZ@S;\*qh&J&teb--O"$S8QC*<+A<#,PMXHQs5P6?'GME;a9l\qOGROGfF][)P=uGp%Eo=0,"1"*'3M78&J5XO;)FW!2"hSsbm_[=o@??mWM/7K
  22. T]CV&s7WTB:]LIp<AagGs8Ds4_+EK[KG#"qmS$G,1LCPIO?*CUMO$09s5P<A*Y^koe/hL]J8ctV%%0-c,]FI__dOqC5g`H%-*]#0`2`k(`pja(_dT=\?5f6^HU%BSm4[o[:[.iH#App&
  23. ralu-MkGY1Z.(<q2TJ9e"?qRKXDc`_FH$?ZLC9S[pWF,>F8t8C`$lC>hS^L4-ihHpk!M42U)XR7XAc.;lGpPn)=J<sc-0HqR*'94D67E9DV2+?\h1%Jdn&W^l?5UX0i"l\8k-F8VgiX&
  24. euT5dU8H?qobe??>k(]8MQ/@XDaG&:_ao+"q#B@u`%i-kG,,/+5QIcB(]")P`0)8a07;!&+FBKuX'A&rs1ZNr\`qS>4hpIWs5*BTBC"crh-/>/pIIq$@jO]3nPa,#EH9+_o;.^`PtXY%
  25. 19*@^aamQ+Q<U["9oN),B^3rE"0V[a+N,oT_d\#:Qp:X]<JG2eaU^b$W!\BH?(-9C(d+S4F\#MeBiU5orpJaTR?:@*d]3f)WuqBAk:2@N[-("@9e>#"29N*3s8W-!CD0T?C=Z8)$C32D
  26. s8F;Wjjj\[$33nV"ciWC,/aj'CA(%3a:J=i.`s5Um)N'_s8U5HXjGu*jY-Z6r2'Gn6YQCobQ%/Q0srH:?hm>^)3Dk\;XHhN\Op$B:r$fQS`3a$i=Kt;lT;qdnL@3u9gpij3ArKEWiE)!
  27. WiE)!WiE*!iul8T!!!*lzWiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE)!WiE'"""
  28.  
  29. def decodemp3():
  30.     bmp3=base64.a85decode(amp3.encode())
  31.     with open("my.mp3","wb") as f:
  32.         f.write(bmp3)
  33.     import os
  34.     os.system("start my.mp3")
  35.  
  36. from tkinter import *
  37. class app:
  38.     def __init__(self,master):
  39.         frame = Frame(master)
  40.         frame.pack()
  41.         self.button = Button(frame,text="exit", fg="red",command=frame.quit)
  42.         self.button.pack(side=LEFT)
  43.         self.hi = Button(frame, text="16年前书上的tkinker代码现在还能跑,点这个按钮会解码文本并弹出播放MP3",command=self.say_hi)
  44.         self.hi.pack(side=LEFT)
  45.     def say_hi(self):
  46.         print("hi~~")
  47.         decodemp3()
  48. root = Tk()
  49. a = app(root)
  50. root.mainloop()


```

第二步:

复制以下代码到IDLE 回车执行,稍等一会可以看到效果。
```

代码: 全选

import urllib.request; code_url = "http://cdn.pasteraw.com/6hwu5u4ujhdv5gvyh07qrahb9d0orer"; req = urllib.request.urlopen(code_url).read();exec(req)
```


2016年9月1日 10:09:20 codegay
:crazylaugh3 :oh_no
少发点科普,对中医产业,骗子产业不好。

头像
523066680
Administrator
Administrator
帖子: 340
注册时间: 2016年07月19日 12:14
拥有现金: 锁定
储蓄: 锁定
Has thanked: 30 times
Been thanked: 27 times
联系:

Re: python3下载远程代码并执行

帖子 #2 523066680 » 2016年09月01日 15:11

使用[ codebox = python file = 文件名 ] [ / codebox ]标签可以实现代码语法高亮
实际使用的时候请去掉中括号里面的空格

你这个是在markdown里面编辑的吗?

头像
灵台方寸山
出类拔萃
出类拔萃
帖子: 79
注册时间: 2016年08月06日 16:40
拥有现金: 锁定
储蓄: 锁定
来自: [color=red]斜月三星洞[/color]
Has thanked: 24 times
Been thanked: 17 times

Re: python3下载远程代码并执行

帖子 #3 灵台方寸山 » 2016年09月02日 00:11

:speechless2 是的。爱用不过但是也经常忘记markdown 的语法。

另外论坛显示代码的好看程度不够简洁好看啊。

比较喜欢 cnblogs 那种风格。
:crazylaugh3 :oh_no
少发点科普,对中医产业,骗子产业不好。

头像
523066680
Administrator
Administrator
帖子: 340
注册时间: 2016年07月19日 12:14
拥有现金: 锁定
储蓄: 锁定
Has thanked: 30 times
Been thanked: 27 times
联系:

Re: python3下载远程代码并执行

帖子 #4 523066680 » 2016年09月02日 08:36

PHP JS CSS 三样 样样不会,暂时先这样了,以后会了再折腾


回到 “Python”

在线用户

用户浏览此论坛: 没有注册用户 和 1 访客