免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3467 | 回复: 8
打印 上一主题 下一主题

简单文件压缩加密脚本 python [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-15 15:17 |只看该作者 |倒序浏览
简单文件压缩加密脚本 python
  1. 001 #coding:utf-8  

  2. 002   

  3. 003 import sys  

  4. 004 import getopt  

  5. 005 import zlib  

  6. 006 import base64  

  7. 007 from cStringIO import StringIO  

  8. 008   

  9. 009 _move = 15

  10. 010 _line_sep = "\n"

  11. 011   

  12. 012 class TMain:  

  13. 013     def __init__(self):  

  14. 014         options, args = 0,0

  15. 015         try:  

  16. 016             options, args = getopt.getopt(sys.argv[1:], 'd')  

  17. 017         except getopt.GetoptError, err:  

  18. 018             print str(err)  

  19. 019             self.usage()  

  20. 020            

  21. 021         mode = "serialize"

  22. 022         for opt, value in options:  

  23. 023             if opt == "-d":  

  24. 024                 mode = 'deSerialize'

  25. 025                 break

  26. 026            

  27. 027         for filename in args:  

  28. 028             f = getattr(self, mode)  

  29. 029             s = f(self.readfile(filename))  

  30. 030             fout = file(filename + ".out.py", 'wb')  

  31. 031             fout.write(s)  

  32. 032             fout.close()  

  33. 033             print  

  34. 034             print "##################################"

  35. 035             print s  

  36. 036   

  37. 037            

  38. 038     def moveCode(self, strobj ):  

  39. 039         result = ""  

  40. 040         for i in strobj:  

  41. 041             pass

  42. 042        

  43. 043     def compress(self,strobj):  

  44. 044         return zlib.compress(strobj, 9)  

  45. 045        

  46. 046     def decompress(self,strobj):  

  47. 047         return zlib.decompress(strobj)  

  48. 048        

  49. 049     def serialize(self, strobj ):  

  50. 050         '''serialize the string into encoded format'''

  51. 051         strobj = self.compress( strobj )  

  52. 052         strobj = base64.standard_b64encode(strobj)  

  53. 053         max_char_per_line = 40

  54. 054         c = 0

  55. 055         result = ""  

  56. 056         for i in strobj:  

  57. 057             c += 1

  58. 058             if c >= max_char_per_line:  

  59. 059                 c = 1

  60. 060                 result += _line_sep  

  61. 061             result += hex( ord( i ) #+ _move  

  62. 062                       )[2:]  

  63. 063         return result  

  64. 064        

  65. 065     def deSerialize(self, strobj ):  

  66. 066         strobj = strobj.replace( _line_sep, '' )  

  67. 067         result = ""  

  68. 068         strlen = len(strobj)  

  69. 069         if strlen % 2 != 0 :  

  70. 070             raise Exception("Bad value")  

  71. 071         for i in xrange( 0, len( strobj ), 2 ):  

  72. 072             c = strobj[i:i + 2]  

  73. 073             try:  

  74. 074                 c = chr( int( c, 16 ) #- _move  

  75. 075                         )  

  76. 076                 tmp= hex( ord(c))[2:]  

  77. 077                 result += c  

  78. 078             except ValueError, err:  

  79. 079                 print c, int( c, 16 ), int( c, 16 ) - _move  

  80. 080     #    for i in result:  

  81. 081     #        sys.stdout.write(i)  

  82. 082     #    print   

  83. 083         result = base64.standard_b64decode(result)  

  84. 084         #return compress(result)  

  85. 085         return self.decompress( result )  

  86. 086        

  87. 087     def readfile(self, filename ):  

  88. 088         return open( filename ).read()  

  89. 089        

  90. 090     def usage(self,):  

  91. 091         usage_str= '''  

  92. 092         {this_program} [-d] filename  

  93. 093            

  94. 094         if the -d option is given, program will try to decode file,  

  95. 095         otherwise, program will encode file and print the result.  

  96. 096         '''.format( this_program = sys.argv[0])  

  97. 097         print usage_str  

  98. 098         sys.exit()  

  99. 099   

  100. 100 def main():  

  101. 101     m = TMain()  

  102. 102   

  103. 103 if __name__ == '__main__':  

  104. 104     main()
复制代码

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
2 [报告]
发表于 2011-09-15 15:59 |只看该作者
欢迎砸场。

论坛徽章:
0
3 [报告]
发表于 2011-09-16 09:22 |只看该作者
村草哥~ 果然厉害!

论坛徽章:
0
4 [报告]
发表于 2011-09-16 13:05 |只看该作者
只有村艹在坚持啊.........

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
5 [报告]
发表于 2011-09-16 13:19 |只看该作者
村艹是跑错地方了好不好

论坛徽章:
0
6 [报告]
发表于 2011-09-16 16:46 |只看该作者
回复 5# zhlong8


    为啥捏啊?

论坛徽章:
0
7 [报告]
发表于 2011-09-19 10:27 |只看该作者
回复  zhlong8


    为啥捏啊?
2gua 发表于 2011-09-16 16:46


瓜哥难道没看出来这是一篇Python的帖子?

论坛徽章:
0
8 [报告]
发表于 2011-09-19 12:41 |只看该作者
瓜哥难道没看出来这是一篇Python的帖子?
bugbugbug3 发表于 2011-09-19 10:27



    哇塞,还真是没细看,这么大的乌龙啊?

论坛徽章:
0
9 [报告]
发表于 2011-09-19 12:42 |只看该作者
村艹这在砸场子呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP