def __search(self, searchCases): """Execute the different search cases and build search results that will be returned. :parameter searchCases: an iterable of tupple (bitarray, :class:`netzob.Inference.Vocabulary.Search.SearchTask.SearchTask`) :type searchCases: a list :return: the obtained results :rtype: a list of :class:`netzob.Inference.Vocabulary.Search.SearchResult.SearchResult` """ if searchCases is None: raise TypeError("There should be at least one search case.") results = SearchResults() for (target, searchTask) in searchCases: if target is None or not isinstance(target, bitarray) or searchTask is None or not isinstance(searchTask, SearchTask): raise TypeError("Each search case must a tupple made of a bitarray and a SearchTask instance") ranges = [] for startIndex in target.search(searchTask.data): self._logger.debug("Search found {}: {}>{}".format(searchTask.data, startIndex, len(searchTask.data))) ranges.append((startIndex, startIndex + len(searchTask.data))) if len(ranges) > 0: results.append(SearchResult(target, searchTask, ranges)) return results
def __search(self, searchCases): """Execute the different search cases and build search results that will be returned. :parameter searchCases: an iterable of tupple (bitarray, :class:`netzob.Inference.Vocabulary.Search.SearchTask.SearchTask`) :type searchCases: a list :return: the obtained results :rtype: a list of :class:`netzob.Inference.Vocabulary.Search.SearchResult.SearchResult` """ if searchCases is None: raise TypeError("There should be at least one search case.") results = SearchResults() for (target, searchTask) in searchCases: if target is None or not isinstance( target, bitarray) or searchTask is None or not isinstance( searchTask, SearchTask): raise TypeError( "Each search case must a tupple made of a bitarray and a SearchTask instance" ) ranges = [] for startIndex in target.search(searchTask.data): self._logger.debug("Search found {}: {}>{}".format( searchTask.data, startIndex, len(searchTask.data))) ranges.append((startIndex, startIndex + len(searchTask.data))) if len(ranges) > 0: results.append(SearchResult(target, searchTask, ranges)) return results