
    9c                     n    d dl Z d dlZd dlZ G d dej                  j
                  j                        Zy)    Nc                   "    e Zd ZdZdgZd Zd Zy)JFFS2ValidPluginz
    Helps validate JFFS2 signature results.

    The JFFS2 signature rules catch obvious cases, but inadvertently
    mark some valid JFFS2 nodes as invalid due to  padding (0xFF's or
    0x00's) in between nodes.
    	Signaturec                    t         j                  j                  j                  |      }|dd dk(  rt	        j
                  d|dd       d   }nt	        j
                  d|dd       d   }t        j                  |dd d      dz  d	z  }||k(  S )
Nr      s   z>I      z<Il    )binwalkcorecompat	str2bytesstructunpackbinasciicrc32)selfnode_header
header_crccalculated_header_crcs       </usr/lib/python3/dist-packages/binwalk/plugins/jffs2valid.py
_check_crczJFFS2ValidPlugin._check_crc   s    ll))33K@ q{*t[2->?BJt[2->?BJ "*Aa0@"!E!Jj X 334    c                 p   |j                   r|j                  j                         j                  d      r| j                  j
                  j                  |j                   j                  |j                        }|j                  d      }|j                          | j                  |dd       |_        y y y )Nzjffs2 filesystem)offseti   r   r	   )filedescriptionlower
startswithmoduleconfig	open_filepathr   readcloser   valid)r   resultfdr   s       r   scanzJFFS2ValidPlugin.scan!   s    ;;6--335@@AST ##--fkk.>.>v}}-UB ''$-KHHJ??;q+<=FL U;r   N)__name__
__module____qualname____doc__MODULESr   r)    r   r   r   r      s     mG5 >r   r   )r   r   binwalk.core.pluginr   r   pluginPluginr   r/   r   r   <module>r3      s*      )>w||**11 )>r   