shadowbq / pecli

Portable Windows32 PE CLI tool
MIT License
0 stars 0 forks source link

Look at getting the language resource #1

Open shadowbq opened 6 years ago

shadowbq commented 6 years ago
def check_rsrc(self, pe):
        ret = {}
        if hasattr(pe, 'DIRECTORY_ENTRY_RESOURCE'):
            i = 0
            for resource_type in pe.DIRECTORY_ENTRY_RESOURCE.entries:
                if resource_type.name is not None:
                    name = "%s" % resource_type.name
                else:
                    name = "%s" % pefile.RESOURCE_TYPE.get(resource_type.struct.Id)
                if name == None:
                    name = "%d" % resource_type.struct.Id
                if hasattr(resource_type, 'directory'):
                    for resource_id in resource_type.directory.entries:
                        if hasattr(resource_id, 'directory'):
                            for resource_lang in resource_id.directory.entries:
                                data = pe.get_data(resource_lang.data.struct.OffsetToData, resource_lang.data.struct.Size)
                                filetype = get_filetype(data)
                                lang = pefile.LANG.get(resource_lang.data.lang, '*unknown*')
                                sublang = pefile.get_sublang_name_for_lang( resource_lang.data.lang, resource_lang.data.sublang )
                                ret[i] = (name, resource_lang.data.struct.OffsetToData, resource_lang.data.struct.Size, filetype, lang, sublang)
                                i += 1
        return ret  

    def get_lang(self, pe):
        resources = self.check_rsrc(pe)
        ret = []
        lang_holder = []
        for rsrc in resources.keys():
            (name,rva,size,type,lang,sublang) = resources[rsrc]
            lang_holder.append(lang)
            lang_count = collections.Counter(lang_holder)
            lang_common = lang_count.most_common(1)
            for lang_likely,occur in lang_common:
                ret = lang_likely.split('_')[1]
        return ret
shadowbq commented 6 years ago

https://github.com/hiddenillusion/AnalyzePE/blob/master/pescanner.py