
    9c	                     r    d dl Zd dlZd dlmZ  G d dej
                  j                  j                        Zy)    N)	BlockFilec                   0    e Zd ZdZdgZdZdZd Zd Zd Z	y)	
LZMAPluginz+
    Validates lzma signature results.
    	Signatureu   ÿÿÿÿÿÿÿÿi   c                     	 	 dd l }|j                  | _        y # t        $ r	 ddlm } Y #w xY w# t        $ r}d | _        Y d }~y d }~ww xY w)Nr   )lzma)r   ImportError	backports
decompressdecompressor)selfr   es      ;/usr/lib/python3/dist-packages/binwalk/plugins/lzmavalid.pyinitzLZMAPlugin.init   sM    	%+ !%D  +*+  	% $D	%s(    . +. +. 	AAAc                 *   d}| j                   ;	 | j                  t        j                  j                  j	                  |             |S |S # t
        $ r}t        |      dk7  rd}Y d }~|S d }~wt        $ r}t        |      dk7  rd}Y d }~|S d }~ww xY w)NTzunknown BUF errorFzACompressed data ended before the end-of-stream marker was reached)r   binwalkcorecompat	str2bytesIOErrorstr	Exception)r   datavalidr   s       r   is_valid_lzmazLZMAPlugin.is_valid_lzma   s    (
"!!',,"5"5"?"?"EF u  "q600!E   " q6``!E"s#   8A 	BA++B7BBc                 x   |j                   r-|j                  r|j                  j                         j	                  d      r| j
                  j                  j                  |j                  j                  |j                  | j                        }|j                  | j                        }|j                          | j                  |      sh|d d | j                  z   |dd  z   }| j                  |      sd|_         y dj                  |j                  j!                  d      d d dgz         |_        y y y y y )Nzlzma compressed data)offsetlength   F,z missing uncompressed size)r   filedescriptionlower
startswithmoduleconfig	open_filepathr   MAX_DATA_SIZEreadcloser   FAKE_LZMA_SIZEjoinsplit)r   resultfdr   s       r   scanzLZMAPlugin.scan2   s
   <<FKKF,>,>,D,D,F,Q,QRh,i ##--fkk.>.>v}}]a]o]o-pB774--.DHHJ %%d+BQx$"5"55QR@))$/#(FL),&2D2D2J2J32OPSQS2TXtWu2u)vF& , -jK<    N)
__name__
__module____qualname____doc__MODULESr-   r*   r   r   r2    r3   r   r   r      s.     mG 8N M%(wr3   r   )	binwalk.core.pluginr   binwalk.core.compatbinwalk.core.commonr   r   pluginPluginr   r9   r3   r   <module>r?      s,      )<w$$++ <wr3   