コード例 #1
0
def BuildClassFilesAndHash(jarfile,ignoreDirs = [],ignoreFiles = []):
    print 'Building ClassFiles'
    zip = zipfile.ZipFile(jarfile)
    files = []
    for name in zip.namelist():
        isokay = True
        for x in ignoreDirs:
            if name.startswith(x):
                isokay = False
                break
        for x in ignoreFiles:
            if name.endswith(x):
                isokay = False
                break
        if isokay == True:
            files.append(name)
    for name in files:
        if name.endswith('.class'):
            hasher = hashlib.md5()
            t = zip.open(name)
            temp = ClassFile(t)
            ClassFiles[name.replace(".class","")]=temp
            t = zip.open(name)
            hasher.update(t.read())
            Hashes[name.replace(".class","")]=hasher.hexdigest()
            t.close()
        elif not name.endswith("/"):
            t = zip.open(name)
            hasher = hashlib.md5()
            hasher.update(t.read())
            FingerPrint["other"][name] = hasher.hexdigest()
コード例 #2
0
    def read_class(self, classname):
        if is_classfile_ext(classname):
            raise Exception('Invalid classname "{}" - omit ".class"'.format(classname))

        class_names = self.classfiles()
        if classname not in class_names:
            raise KeyError('{} not found in jar.'.format(classname))

        entry_name = format_classfile_ext(classname)
        return ClassFile(self.open_zip.open(entry_name, self.mode))