繁体   English   中英

Python代码段说明

[英]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

我对代码的解释如下:

  1. self.data_file是一个字节数组,由file(infile, 'rb')调用中的read()返回。
  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM