Skip to main content
 首页 » 编程设计

python之Python代码片段的解释

2025年05月04日12emanlee

对于类作业,我正在分析 Amazon 的 Kindle 数字版权管理实现的工作原理以及如何击败它。在我的研究中,我遇到了一组从加密中提取图书数据的 Python 脚本。它适合我解释我论文中的加密破解部分的需要。

问题是,我的 Python 不流利,除了 print 'Hello World' 之外没有任何经验。

在研究源代码时,我遇到了这个片段

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 是一个字节数组,由 read() 在 file(infile, 'rb') 调用中返回。
  2. self.header是数据文件前79字节的值

我遇到的问题是 self.header[0x3C:0x3C+8] 是什么意思?

请您参考如下方法:

这是一个普通的切片,就像 self.data_file[0:78] 一样,除了使用十六进制文字作为偏移量。 0x3C 是 base10 中的 60,所以它与 self.header[60:60+8] 相同。