簡體   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