[英]Explaination of Python code snippet
对于课堂作业,我正在分析亚马逊的Kindle数字版权管理实施的工作原理以及如何克服它。 在研究中,我遇到了一组Python脚本,这些脚本从加密中提取出图书数据。 它满足了我解释论文加密破解部分的需要。
问题是,除了print 'Hello World'
之外,我不精通Python或没有任何经验。
在处理源代码时,我遇到了这个片段
def __init__(self, infile):
# initial sanity check on file
self.data_file = file(infile, 'rb').read()
self.mobi_data = ''
self.header = self.data_file[0:78]
if self.header[0x3C:0x3C+8] != 'BOOKMOBI' and self.header[0x3C:0x3C+8] != 'TEXtREAd':
raise DrmException("invalid file format")
self.magic = self.header[0x3C:0x3C+8]
self.crypto_type = -1
我对代码的解释如下:
self.data_file
是一个字节数组,由file(infile, 'rb')
调用中的read()
返回。 self.header
是数据文件的前79个字节的值 我遇到的问题只是self.header[0x3C:0x3C+8]
是什么意思?
这是一个普通的切片,就像self.data_file[0:78]
,只是使用十六进制文字作为偏移量。 0x3C
在base10中为60,因此与self.header[60:60+8]
。
self.header[0x3C:0x3C+8]
将得到的8个字节的字符串从header
开始,偏移为0x3C。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.