Example #1
0
 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
Example #2
0
 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
Example #3
0
 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
Example #4
0
 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
Example #5
0
 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
Example #6
0
 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
Example #7
0
 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
Example #8
0
 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
Example #9
0
 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