def cacheSizes(self): """Find the number of different sizes, and creates that much numpyarray""" # if not os.access outdir = config.get_cache_filename( config.CACHE_SIGNATURE_SIZES_DIR, self._context.dumpname) if not os.path.isdir(outdir): os.mkdir(outdir) if not os.access(outdir, os.W_OK): raise IOError('cant write to %s' % (outdir)) # sizes = map(int, set(self._context._malloc_sizes)) arrays = dict([(s, []) for s in sizes]) # sort all addr in all sizes.. [arrays[self._context._malloc_sizes[i]].append( long(addr)) for i, addr in enumerate(self._context._malloc_addresses)] # saving all sizes dictionary in files... for size, lst in arrays.items(): fout = os.path.sep.join([outdir, 'size.%0.4x' % (size)]) arrays[size] = utils.int_array_save(fout, lst) # saved all sizes dictionaries. # tag it as done file( os.path.sep.join([outdir, config.CACHE_SIGNATURE_SIZES_DIR_TAG]), 'w') self._sizes = arrays return
def persist(self, _context): outdir = _context.get_folder_cache() config.create_cache_folder(outdir) # outname = _context.get_filename_cache_signatures() #outname = os.path.sep.join([outdir, self._name]) ar = utils.int_array_save(outname, self._similarities) return
def persist(self): outdir = config.get_cache_filename( config.CACHE_SIGNATURE_GROUPS_DIR, self._context.dumpname) config.create_cache_folder(outdir) # outname = os.path.sep.join([outdir, self._name]) ar = utils.int_array_save(outname, self._similarities) return
def persist(self): outdir = Config.getCacheFilename(Config.CACHE_SIGNATURE_GROUPS_DIR, self._context.dumpname) if not os.path.isdir(outdir): os.mkdir(outdir) if not os.access(outdir, os.W_OK): raise IOError('cant write to %s'%(outdir)) # outname = os.path.sep.join([outdir,self._name]) ar = utils.int_array_save(outname, self._similarities) return
def persist(self, _context): outdir = _context.get_folder_cache() if not os.path.isdir(outdir): os.mkdir(outdir) if not os.access(outdir, os.W_OK): raise IOError('cant write to %s' % outdir) # outname = _context.get_filename_cache_signatures() #outname = os.path.sep.join([outdir, self._name]) ar = utils.int_array_save(outname, self._similarities) return
def cacheSizes(self): """Find the number of different sizes, and creates that much numpyarray""" # if not os.access outdir = Config.getCacheFilename(Config.CACHE_SIGNATURE_SIZES_DIR, self._context.dumpname) if not os.path.isdir(outdir): os.mkdir(outdir) if not os.access(outdir, os.W_OK): raise IOError('cant write to %s'%(outdir)) # sizes = map(int,set(self._context._malloc_sizes)) arrays = dict([(s,[]) for s in sizes]) #sort all addr in all sizes.. [arrays[ self._context._malloc_sizes[i] ].append( long(addr) ) for i, addr in enumerate(self._context._malloc_addresses) ] #saving all sizes dictionary in files... for size,lst in arrays.items(): fout = os.path.sep.join([outdir, 'size.%0.4x'%(size)]) arrays[size] = utils.int_array_save( fout , lst) #saved all sizes dictionaries. # tag it as done file(os.path.sep.join([outdir, Config.CACHE_SIGNATURE_SIZES_DIR_TAG]),'w') self._sizes = arrays return
def cacheSizes(self): """Find the number of different sizes, and creates that much numpyarray""" # if not os.access outdir = config.get_cache_filename(config.CACHE_SIGNATURE_SIZES_DIR, self._context.dumpname) config.create_cache_folder(outdir) # sizes = map(int, set(self._context._malloc_sizes)) arrays = dict([(s, []) for s in sizes]) # sort all addr in all sizes.. [ arrays[self._context._malloc_sizes[i]].append(long(addr)) for i, addr in enumerate(self._context._malloc_addresses) ] # saving all sizes dictionary in files... for size, lst in arrays.items(): fout = os.path.sep.join([outdir, 'size.%0.4x' % size]) arrays[size] = utils.int_array_save(fout, lst) # saved all sizes dictionaries. # tag it as done open(os.path.sep.join([outdir, config.CACHE_SIGNATURE_SIZES_DIR_TAG]), 'w') self._sizes = arrays return
def _load(self): ## DO NOT SORT LIST. c'est des sequences. pas des sets. myname = self.cacheFilenamePrefix+'.pinned' sig = utils.int_array_cache(myname) if sig is None: log.info("Signature has to be calculated for %s. It's gonna take a while."%(self.name)) pointerSearcher = pointerfinder.PointerSearcher(self.mmap) self.WORDSIZE = pointerSearcher.WORDSIZE sig = [] # save first offset last = self.mmap.start for i in pointerSearcher: #returns the vaddr sig.append(i-last) # save intervals between pointers #print hex(i), 'value:', hex(self.mmap.readWord(i) ) last=i # save it sig = utils.int_array_save(myname, sig) else: log.debug("%d Signature intervals loaded from cache."%( len(sig) )) self.sig = sig # self.addressCache[0] = self.mmap.start # previous pointer of interval 0 is start of mmap self._loadAddressCache() return