[tor-commits] [bridgedb/develop] Fix gimp captcha check

phw at torproject.org phw at torproject.org
Wed Feb 19 18:27:18 UTC 2020


commit 1767e28d61a97afeb3a55bbbe8f0bb3fd7e10e9b
Author: Damian Johnson <atagar at torproject.org>
Date:   Mon Jan 20 16:43:26 2020 -0800

    Fix gimp captcha check
    
    BridgeDB's multiple layers of catch-alls made this take over an hour to solve.
    The surface level exception is...
    
      Traceback (most recent call last):
        File "/home/atagar/Desktop/tor/bridgedb/bridgedb/test/test_distributors_moat_server.py", line 947, in test_render_POST_unexpired_with_qrcode
          self.assertIsNotNone(decoded.get('data'))
        File "/usr/lib/python3.5/unittest/case.py", line 1229, in assertIsNotNone
          self.fail(self._formatMessage(msg, standardMsg))
      twisted.trial.unittest.FailTest: unexpectedly None
    
    ... but multiple layers down the actual error is...
    
      Traceback (most recent call last):
        File "/home/atagar/Desktop/tor/bridgedb/bridgedb/test/test_distributors_moat_server.py", line 691, in test_withoutBlockIn
          self.resource.render(request)
        File "/usr/local/lib/python3.5/dist-packages/twisted/web/resource.py", line 265, in render
          return m(request)
        File "/home/atagar/Desktop/tor/bridgedb/bridgedb/distributors/moat/server.py", line 716, in render_POST
          valid = self.checkSolution(challenge, solution, clientIP)
        File "/home/atagar/Desktop/tor/bridgedb/bridgedb/distributors/moat/server.py", line 631, in checkSolution
          raise impossible
        File "/home/atagar/Desktop/tor/bridgedb/bridgedb/distributors/moat/server.py", line 628, in checkSolution
          self.secretKey, clientHMACKey)
        File "/home/atagar/Desktop/tor/bridgedb/bridgedb/captcha.py", line 293, in check
          timestamp = answerBlob[:12].lstrip('0')
      builtins.TypeError: a bytes-like object is required, not 'str'
    
    Test results changed as follows...
    
      before: FAILED (skips=115, failures=17, successes=852)
      after:  FAILED (skips=115, failures=9, successes=860)
---
 bridgedb/captcha.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/bridgedb/captcha.py b/bridgedb/captcha.py
index fe0b876..6d8e8f7 100644
--- a/bridgedb/captcha.py
+++ b/bridgedb/captcha.py
@@ -289,10 +289,10 @@ class GimpCaptcha(Captcha):
             if hmacIsValid:
                 try:
                     answerBlob = secretKey.decrypt(encBlob)
-                    timestamp = answerBlob[:12].lstrip('0')
+                    timestamp = answerBlob[:12].lstrip(b'0')
                     then = cls.sched.nextIntervalStarts(int(timestamp))
                     now = int(time.time())
-                    answer = answerBlob[12:]
+                    answer = answerBlob[12:].decode('utf-8')
                 except Exception as error:
                     logging.warn(str(error))
                 else:





More information about the tor-commits mailing list