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