Получить запрос GET с использованием Python, Selenium и Scapy на сайте HTTPS - PullRequest
0 голосов
/ 02 июля 2018

Это мой первый раз. Я пытаюсь создать инструмент для проверки реализации решения для тегирования в Python.

Прямо сейчас я использую Selenium + webdriver для взаимодействия с сетью и scapy, чтобы прослушивать трафик. На сайтах HTTP я могу видеть информацию о полезной нагрузке пакета, используя это:

 str(bytes(packet[TCP].payload)))
Output:
b'GET /b/ss/xxdeprod/1/JS-2.2.0-D7QN/s5173447115256?AQB=1&ndh=1&pf=1&t=2%2F6%2F2018%2011%3A14%3A41%201%20-120&sdid=699ADD6A6B7CA749-5E0105ECF41B83A5&D=D%3D&mid=16848006205106756570809327525945601030&aamlh=6&ce=UTF-8&ns=xx&pageName=home.html&g=http%3A%2F%2Fwww.xx.de%2F&cc=EUR&ch=home&server=www.xx.de&events=event61%2Cevent4%2Cevent89%3D3%2Cevent233&products=Cars%3BPage%20not%20identified%20with%20any%20car%3B1%3B%3B%3BeVar73%3DPage%20not%20identified%20with%20any%20car%7CeVar56%3DSpecial&aamb=RKhpRz8krg2tLO6pguXWp5olkAcUniQYPHaMWWgdJ3xzPWQmdj0y&h1=home&v11=home.html&v12=home&c13=New&c21=Page%20not%20identified%20with%20any%20car&c22=Page%20not%20identified%20with%20any%20car&c26=No%20informed&v26=No%20informed&c31=horitzontal&v31=D%3Dv0&c34=N%2FA%20or%20Landing%7CN%2FA%20or%20Landing%7CN%2FA%20or%20Landing&v34=11%3A14%3A41%7CMonday%7C2%2F7%2F2018%7CWeekday&c38=Entire%20Site&c39=Direct&c49=3&c50=http%3A%2F%2Fwww.xx.de%2F&v61=D%3Dmid&v63=Direct&s=1920x1080&c=24&j=1.6&v=N&k=Y&bw=1920&bh=925&mcorgid=F050097853468AB40A490D4C%40AdobeOrg&AQE=1 HTTP/1.1\r\nHost: xx.d3.sc.omtrdc.net\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36\r\nDNT: 1\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nReferer: http://www.xx.xx/\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: es,en-US;q=0.9,en;q=0.8\r\n\r\n'

Но на сайтах HTTPS я вижу только байты, например:

str(bytes(packet[TCP].payload)))
Output:
b'\x16\x03\x01\x02\x08\x01\x00\x02\x04\x03\x03%\xe5H\xcb\xe1:\x92\x8a%W\xe7\xc7\x9a\x8f\xa1\x19\x98>\xa5m\xe0\xf7/\x9a\xfd\xad\xd2P(\xa4\x84V \x02\xa6\xf0\n\x8b\xa5\x03\x00C\x7fb\xd3\xac\xcf\xe7t\xa3\te\xb5\xc0\xb6\x15^\xf83|\x85\xc3>\xcbg\x00"\x9a\x9a\x13\x01\x13\x02\x13\x03\xc0+\xc0/\xc0,\xc00\xcc\xa9\xcc\xa8\xc0\x13\xc0\x14\x00\x9c\x00\x9d\x00/\x005\x00\n\x01\x00\x01\x99ZZ\x00\x00\xff\x01\x00\x01\x00\x00\x00\x00\x1c\x00\x1a\x00\x00\x17endesa.d3.sc.omtrdc.net\x00\x17\x00\x00\x00#\x00\xd0ec1d1752-2540-4\x00\x06S\x14\x8a(\xd3\xeb\xab\xcc:\xac\xd0+\xa5\x86[N\x0e\x82\x89\xde\x05\xe4\x98\\/\x0e6\xfd\xc9m_b\x8b*\xdf\xdc\xaf\x83,\xd3\xc1\xf3\xa4@y-\xb9H\x9a\xa2\'7\xfc\x15\x9d4\xd7\xc3|\x15Te\x0bZ\x1c\xd2\x82\x05\xc1\xfc\xc8\xa8\xe5\xf0K\xe7\x91\x92*\xcd\x04\xacG\x97n\x8aT\xf0\xf8\x97gk\xee\x86aQ&\t\xc5Sr\x8eg\x8c\xe3{\xaa\x84\xbe\x82\n\xbdG\xb8d=\xeeN\x94\x87 2\xc1(:0\xa3\xccU:\xec9\x11\xf9r\x87+\xed\xf0z!\xea\x17K`\x98\x1a:\xa6t.^l;^gE\x82\xef&\xe6\xfe\x057\xae\x9ca\x0c&h\xa8\xc7<x\x87z\x80\x06\xea\x1cDw1\x9f6\xd5\xf0S\xeeM\xf9\x00\r\x00\x14\x00\x12\x04\x03\x08\x04\x04\x01\x05\x03\x08\x05\x05\x01\x08\x06\x06\x01\x02\x01\x00\x05\x00\x05\x01\x00\x00\x00\x00\x00\x12\x00\x00\x00\x10\x00\x0e\x00\x0c\x02h2\x08http/1.1uP\x00\x00\x00\x0b\x00\x02\x01\x00\x003\x00+\x00)jj\x00\x01\x00\x00\x1d\x00 f\x8a\x90\x8f0\x9d\xa0\xa4\x06\xb9\xba\x8a\x85<\xff\xa8\xeab6Du\x0bf\x01\xde|hB\x9ct\x80>\x00-\x00\x02\x01\x01\x00+\x00\x0b\n\x1a\x1a\x7f\x17\x03\x03\x03\x02\x03\x01\x00\n\x00\n\x00\x08jj\x00\x1d\x00\x17\x00\x18\xaa\xaa\x00\x01\x00'

Я пробовал библиотеку binascii с методом

binascii.b2a_uu(data)

Но без успешного результата. Есть ли способ декодировать эту полезную нагрузку с сайтов HTTPS? может я иду в неверном направлении? Есть ли способ получить этот запрос без кодировки? Я пытаюсь получить информацию так, как она отображается в инструменте разработчика в браузере.

Network URL Rquest

1 Ответ

0 голосов
/ 02 июля 2018

Вы не сможете декодировать полезную нагрузку https из-за ее шифрования, не имея закрытых ключей. В этом весь смысл HTTPS: сделать контент невидимым для других

Кроме того, если вы хотите увидеть обмен HTTPS TLS, вы можете импортировать модуль tls в scapy, используя load_layer("tls")

Вы не можете получить больше данных, так как все остальное зашифровано. Если у вас есть закрытые ключи сервера (это ваш собственный сервер), вы сможете декодировать его содержимое с помощью любого API RSA / ECDSA, но в противном случае вы этого не сделаете.

...