def get_resource_dimen(self, ate): try: return [ate.get_value(), "%s%s" % ( complexToFloat(ate.key.get_data()), DIMENSION_UNITS[ate.key.get_data() & COMPLEX_UNIT_MASK])] except Exception, why: androconf.warning(why.__str__()) return [ate.get_value(), ate.key.get_data()]
def __init__(self, buff): try: import psyco psyco.full() except ImportError: warning("module psyco not found") self.__buff = buff self.__idx = 0
def __init__(self, buff) : try : import psyco psyco.full() except ImportError : warning("module psyco not found") self.__buff = buff self.__idx = 0
def getAttributeOffset(self, index): # FIXME if self.m_event != START_TAG: androconf.warning("Current event is not START_TAG.") offset = index * 5 # FIXME if offset >= len(self.m_attributes): androconf.warning("Invalid attribute index") return offset
def __init__(self, buff): self.start = buff.get_idx() self._cache = {} self.header = unpack('<h', buff.read(2))[0] self.header_size = unpack('<h', buff.read(2))[0] self.chunkSize = unpack('<i', buff.read(4))[0] self.stringCount = unpack('<i', buff.read(4))[0] self.styleOffsetCount = unpack('<i', buff.read(4))[0] self.flags = unpack('<i', buff.read(4))[0] self.m_isUTF8 = ((self.flags & UTF8_FLAG) != 0) self.stringsOffset = unpack('<i', buff.read(4))[0] self.stylesOffset = unpack('<i', buff.read(4))[0] self.m_stringOffsets = [] self.m_styleOffsets = [] self.m_strings = [] self.m_styles = [] for i in range(0, self.stringCount): self.m_stringOffsets.append(unpack('<i', buff.read(4))[0]) for i in range(0, self.styleOffsetCount): self.m_styleOffsets.append(unpack('<i', buff.read(4))[0]) size = self.chunkSize - self.stringsOffset if self.stylesOffset != 0: size = self.stylesOffset - self.stringsOffset # FIXME if (size % 4) != 0: androconf.warning("ooo") for i in range(0, size): self.m_strings.append(unpack('=b', buff.read(1))[0]) if self.stylesOffset != 0: size = self.chunkSize - self.stylesOffset # FIXME if (size % 4) != 0: androconf.warning("ooo") for i in range(0, size / 4): self.m_styles.append(unpack('<i', buff.read(4))[0])
def run(self, coord_x, coord_y): try: import gmpy coord_x = [gmpy.mpz(i) for i in coord_x] coord_y = [gmpy.mpz(i) for i in coord_y] except ImportError: warning("module gmpy not found") try: import psyco psyco.bind(self._run) psyco.bind(self.NevilleAlgorithm) psyco.bind(self.interpolate) except ImportError: warning("module psyco not found") return self._run(coord_x, coord_y)
def __init__(self, raw_buff): self.reset() self.valid_axml = True self.buff = bytecode.BuffHandle(raw_buff) axml_file = unpack('<L', self.buff.read(4))[0] if axml_file == CHUNK_AXML_FILE: self.buff.read(4) self.sb = StringBlock(self.buff) self.m_resourceIDs = [] self.m_prefixuri = {} self.m_uriprefix = {} self.m_prefixuriL = [] self.visited_ns = [] else: self.valid_axml = False androconf.warning("Not a valid xml file")
def __init__(self, buff): self.start = buff.get_idx() self.size = unpack('<i', buff.read(4))[0] self.imsi = unpack('<i', buff.read(4))[0] self.locale = unpack('<i', buff.read(4))[0] self.screenType = unpack('<i', buff.read(4))[0] self.input = unpack('<i', buff.read(4))[0] self.screenSize = unpack('<i', buff.read(4))[0] self.version = unpack('<i', buff.read(4))[0] self.screenConfig = 0 self.screenSizeDp = 0 if self.size >= 32: self.screenConfig = unpack('<i', buff.read(4))[0] if self.size >= 36: self.screenSizeDp = unpack('<i', buff.read(4))[0] self.exceedingSize = self.size - 36 if self.exceedingSize > 0: androconf.warning("too much bytes !") self.padding = buff.read(self.exceedingSize)
def __init__(self, raw_buff): self.analyzed = False self.buff = bytecode.BuffHandle(raw_buff) #print "SIZE", hex(self.buff.size()) self.header = ARSCHeader(self.buff) self.packageCount = unpack('<i', self.buff.read(4))[0] #print hex(self.packageCount) self.stringpool_main = StringBlock(self.buff) self.next_header = ARSCHeader(self.buff) self.packages = {} self.values = {} for i in range(0, self.packageCount): current_package = ARSCResTablePackage(self.buff) package_name = current_package.get_name() self.packages[package_name] = [] mTableStrings = StringBlock(self.buff) mKeyStrings = StringBlock(self.buff) #self.stringpool_main.show() #self.mTableStrings.show() #self.mKeyStrings.show() self.packages[package_name].append(current_package) self.packages[package_name].append(mTableStrings) self.packages[package_name].append(mKeyStrings) pc = PackageContext(current_package, self.stringpool_main, mTableStrings, mKeyStrings) current = self.buff.get_idx() while not self.buff.end(): header = ARSCHeader(self.buff) self.packages[package_name].append(header) if header.type == RES_TABLE_TYPE_SPEC_TYPE: self.packages[package_name].append(ARSCResTypeSpec(self.buff, pc)) elif header.type == RES_TABLE_TYPE_TYPE: a_res_type = ARSCResType(self.buff, pc) self.packages[package_name].append(a_res_type) entries = [] for i in range(0, a_res_type.entryCount): current_package.mResId = current_package.mResId & 0xffff0000 | i entries.append((unpack('<i', self.buff.read(4))[0], current_package.mResId)) self.packages[package_name].append(entries) for entry, res_id in entries: if self.buff.end(): break if entry != -1: ate = ARSCResTableEntry(self.buff, res_id, pc) self.packages[package_name].append(ate) elif header.type == RES_TABLE_PACKAGE_TYPE: break else: androconf.warning("unknown type") break current += header.size self.buff.set_idx(current)
def doNext(self): if self.m_event == END_DOCUMENT: return event = self.m_event self.reset() while True: chunkType = -1 # Fake END_DOCUMENT event. if event == END_TAG: pass # START_DOCUMENT if event == START_DOCUMENT: chunkType = CHUNK_XML_START_TAG else: if self.buff.end(): self.m_event = END_DOCUMENT break chunkType = unpack('<L', self.buff.read(4))[0] if chunkType == CHUNK_RESOURCEIDS: chunkSize = unpack('<L', self.buff.read(4))[0] # FIXME if chunkSize < 8 or chunkSize % 4 != 0: androconf.warning("Invalid chunk size") for i in range(0, chunkSize / 4 - 2): self.m_resourceIDs.append(unpack('<L', self.buff.read(4))[0]) continue # FIXME if chunkType < CHUNK_XML_FIRST or chunkType > CHUNK_XML_LAST: androconf.warning("invalid chunk type") # Fake START_DOCUMENT event. if chunkType == CHUNK_XML_START_TAG and event == -1: self.m_event = START_DOCUMENT break self.buff.read(4) # /*chunkSize*/ lineNumber = unpack('<L', self.buff.read(4))[0] self.buff.read(4) # 0xFFFFFFFF if chunkType == CHUNK_XML_START_NAMESPACE or chunkType == CHUNK_XML_END_NAMESPACE: if chunkType == CHUNK_XML_START_NAMESPACE: prefix = unpack('<L', self.buff.read(4))[0] uri = unpack('<L', self.buff.read(4))[0] self.m_prefixuri[prefix] = uri self.m_uriprefix[uri] = prefix self.m_prefixuriL.append((prefix, uri)) self.ns = uri else: self.ns = -1 self.buff.read(4) self.buff.read(4) (prefix, uri) = self.m_prefixuriL.pop() #del self.m_prefixuri[ prefix ] #del self.m_uriprefix[ uri ] continue self.m_lineNumber = lineNumber if chunkType == CHUNK_XML_START_TAG: self.m_namespaceUri = unpack('<L', self.buff.read(4))[0] self.m_name = unpack('<L', self.buff.read(4))[0] # FIXME self.buff.read(4) # flags attributeCount = unpack('<L', self.buff.read(4))[0] self.m_idAttribute = (attributeCount >> 16) - 1 attributeCount = attributeCount & 0xFFFF self.m_classAttribute = unpack('<L', self.buff.read(4))[0] self.m_styleAttribute = (self.m_classAttribute >> 16) - 1 self.m_classAttribute = (self.m_classAttribute & 0xFFFF) - 1 for i in range(0, attributeCount * ATTRIBUTE_LENGHT): self.m_attributes.append(unpack('<L', self.buff.read(4))[0]) for i in range(ATTRIBUTE_IX_VALUE_TYPE, len(self.m_attributes), ATTRIBUTE_LENGHT): self.m_attributes[i] = self.m_attributes[i] >> 24 self.m_event = START_TAG break if chunkType == CHUNK_XML_END_TAG: self.m_namespaceUri = unpack('<L', self.buff.read(4))[0] self.m_name = unpack('<L', self.buff.read(4))[0] self.m_event = END_TAG break if chunkType == CHUNK_XML_TEXT: self.m_name = unpack('<L', self.buff.read(4))[0] # FIXME self.buff.read(4) self.buff.read(4) self.m_event = TEXT break
def Warning( msg ): warning(msg)
def Exit( msg ): warning("Error : " + msg) raise("oops")
def Exit(msg): warning('Error : ' + msg) raise 'oops'
def Exit(msg): warning("Error : " + msg) raise ("oops")
def Warning(msg): warning(msg)