PythonChallenge第8题
来源:互联网 发布:ctr csm数据区别 编辑:程序博客网 时间:2024/05/18 00:52
点击题目链接
技巧:
1.看页面提示
2.点击图片
3.看网站源码
误点图片,发现让我输入账号和密码,真是狗屎运,看网页好像有个加密的用户名和密码。
下面就是解密的问题。
如何解密?
看的博客告诉我是用bzip2解压,对应Python的bz2模块用于解密,现在好像明白打开这一题链接上面一个很像苍蝇顶在油菜花上,那是蜜蜂,bee,bee和bz2声音有点像。
查看bz2的帮助文档:
>>> import bz2>>> help(bz2)Help on module bz2:NAME bz2FILE c:\python27\dlls\bz2.pydDESCRIPTION The python bz2 module provides a comprehensive interface for the bz2 compression library. It implements a complete file interface, one shot (de)compression functions, and types for sequential (de)compression.CLASSES __builtin__.object BZ2Compressor BZ2Decompressor BZ2File class BZ2Compressor(__builtin__.object) | BZ2Compressor([compresslevel=9]) -> compressor object | | Create a new compressor object. This object may be used to compress | data sequentially. If you want to compress data in one shot, use the | compress() function instead. The compresslevel parameter, if given, | must be a number between 1 and 9. | | Methods defined here: | | __delattr__(...) | x.__delattr__('name') <==> del x.name | | __getattribute__(...) | x.__getattribute__('name') <==> x.name | | __init__(...) | x.__init__(...) initializes x; see help(type(x)) for signature | | __setattr__(...) | x.__setattr__('name', value) <==> x.name = value | | compress(...) | compress(data) -> string | | Provide more data to the compressor object. It will return chunks of | compressed data whenever possible. When you've finished providing data | to compress, call the flush() method to finish the compression process, | and return what is left in the internal buffers. | | flush(...) | flush() -> string | | Finish the compression process and return what is left in internal buffers. | You must not use the compressor object after calling this method. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __new__ = <built-in method __new__ of type object> | T.__new__(S, ...) -> a new object with type S, a subtype of T class BZ2Decompressor(__builtin__.object) | BZ2Decompressor() -> decompressor object | | Create a new decompressor object. This object may be used to decompress | data sequentially. If you want to decompress data in one shot, use the | decompress() function instead. | | Methods defined here: | | __delattr__(...) | x.__delattr__('name') <==> del x.name | | __getattribute__(...) | x.__getattribute__('name') <==> x.name | | __init__(...) | x.__init__(...) initializes x; see help(type(x)) for signature | | __setattr__(...) | x.__setattr__('name', value) <==> x.name = value | | decompress(...) | decompress(data) -> string | | Provide more data to the decompressor object. It will return chunks | of decompressed data whenever possible. If you try to decompress data | after the end of stream is found, EOFError will be raised. If any data | was found after the end of stream, it'll be ignored and saved in | unused_data attribute. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | unused_data | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __new__ = <built-in method __new__ of type object> | T.__new__(S, ...) -> a new object with type S, a subtype of T class BZ2File(__builtin__.object) | BZ2File(name [, mode='r', buffering=0, compresslevel=9]) -> file object | | Open a bz2 file. The mode can be 'r' or 'w', for reading (default) or | writing. When opened for writing, the file will be created if it doesn't | exist, and truncated otherwise. If the buffering argument is given, 0 means | unbuffered, and larger numbers specify the buffer size. If compresslevel | is given, must be a number between 1 and 9. | | Add a 'U' to mode to open the file for input with universal newline | support. Any line ending in the input file will be seen as a '\n' in | Python. Also, a file so opened gains the attribute 'newlines'; the value | for this attribute is one of None (no newline read yet), '\r', '\n', | '\r\n' or a tuple containing all the newline types seen. Universal | newlines are available only when reading. | | Methods defined here: | | __delattr__(...) | x.__delattr__('name') <==> del x.name | | __enter__(...) | __enter__() -> self. | | __exit__(...) | __exit__(*excinfo) -> None. Closes the file. | | __getattribute__(...) | x.__getattribute__('name') <==> x.name | | __init__(...) | x.__init__(...) initializes x; see help(type(x)) for signature | | __iter__(...) | x.__iter__() <==> iter(x) | | __setattr__(...) | x.__setattr__('name', value) <==> x.name = value | | close(...) | close() -> None or (perhaps) an integer | | Close the file. Sets data attribute .closed to true. A closed file | cannot be used for further I/O operations. close() may be called more | than once without error. | | next(...) | x.next() -> the next value, or raise StopIteration | | read(...) | read([size]) -> string | | Read at most size uncompressed bytes, returned as a string. If the size | argument is negative or omitted, read until EOF is reached. | | readline(...) | readline([size]) -> string | | Return the next line from the file, as a string, retaining newline. | A non-negative size argument will limit the maximum number of bytes to | return (an incomplete line may be returned then). Return an empty | string at EOF. | | readlines(...) | readlines([size]) -> list | | Call readline() repeatedly and return a list of lines read. | The optional size argument, if given, is an approximate bound on the | total number of bytes in the lines returned. | | seek(...) | seek(offset [, whence]) -> None | | Move to new file position. Argument offset is a byte count. Optional | argument whence defaults to 0 (offset from start of file, offset | should be >= 0); other values are 1 (move relative to current position, | positive or negative), and 2 (move relative to end of file, usually | negative, although many platforms allow seeking beyond the end of a file). | | Note that seeking of bz2 files is emulated, and depending on the parameters | the operation may be extremely slow. | | tell(...) | tell() -> int | | Return the current file position, an integer (may be a long integer). | | write(...) | write(data) -> None | | Write the 'data' string to file. Note that due to buffering, close() may | be needed before the file on disk reflects the data written. | | writelines(...) | writelines(sequence_of_strings) -> None | | Write the sequence of strings to the file. Note that newlines are not | added. The sequence can be any iterable object producing strings. This is | equivalent to calling write() for each string. | | xreadlines(...) | xreadlines() -> self | | For backward compatibility. BZ2File objects now include the performance | optimizations previously implemented in the xreadlines module. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | closed | True if the file is closed | | mode | file mode ('r', 'w', or 'U') | | name | file name | | newlines | end-of-line convention used in this file | | softspace | flag indicating that a space needs to be printed; used by print | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __new__ = <built-in method __new__ of type object> | T.__new__(S, ...) -> a new object with type S, a subtype of TFUNCTIONS compress(...) compress(data [, compresslevel=9]) -> string Compress data in one shot. If you want to compress data sequentially, use an instance of BZ2Compressor instead. The compresslevel parameter, if given, must be a number between 1 and 9. decompress(...) decompress(data) -> decompressed data Decompress data in one shot. If you want to decompress data sequentially, use an instance of BZ2Decompressor instead.DATA __author__ = 'The bz2 python module was written by:\n\n Gustavo Nie...AUTHOR The bz2 python module was written by: Gustavo Niemeyer <niemeyer@conectiva.com>
三个类:BZ2Compressor,BZ2Decompressor,BZ2File
两个函数:compress,decompress
两个函数翻译下,压缩和解压缩。
import bz2un='BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084'pw= 'BZh91AY&SY\x94$|\x0e\x00\x00\x00\x81\x00\x03$ \x00!\x9ah3M\x13<]\xc9\x14\xe1BBP\x91\xf08'print bz2.decompress(un)print bz2.decompress(pw)
输出的结果:
>>> print bz2.decompress(un)huge>>> print bz2.decompress(pw)file
用户名:huge
密码:file
点击蜜蜂位置输入用户名密码进入下一题
0 0
- PythonChallenge第8题
- pythonchallenge 【第0题】
- pythonchallenge 【第1题】
- pythonchallenge 【第2题】
- pythonchallenge 【第3题】
- PythonChallenge第0题
- PythonChallenge第3题
- PythonChallenge第4题
- PythonChallenge第5题
- PythonChallenge第6题
- PythonChallenge第7题
- PythonChallenge第9题
- PythonChallenge第10题
- pythonchallenge--8
- pythonchallenge第0关
- [PythonChallenge]第0关
- [PythonChallenge]第1关
- [PythonChallenge]第2关
- WebRTC代码走读(五):视频接受流程
- Ruby字符(串)总结
- java文件上转-fileupload
- Unity4.6.3之间隔、延时调用方法
- hdu-1078 FatMouse and Cheese (and) 滑雪问题(记忆化搜索+简单dp)
- PythonChallenge第8题
- Android学习记录<三>
- java乱码处理
- hadoop SequenceFile介绍 大数据 存储
- Sum Root to Leaf Numbers
- 【机房重构】——查看上机记录、充值记录+三层+存储过程+模板方法
- WIN7问题记录
- Maven本地仓库配置和archiva私服搭建
- xcode6.3 搭建 kobold2D 环境