1

クラスの割り当てについては、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]意味ですか?

4

2 に答える 2

8

self.data_file[0:78]これは、オフセットとして16進リテラルを使用することを除いて、のような通常のスライスです。0x3Cbase10では60なので、と同じself.header[60:60+8]です。

于 2012-05-02T22:42:56.417 に答える
2

self.header[0x3C:0x3C+8]から8バイトの文字列を取得し、headerオフセット0x3Cから開始します。

于 2012-05-02T22:43:06.587 に答える