Introduction

Les Captchas sont des petits programmes web qui servent à déterminer si leur interlocuteur est un humain ou un robot. Ce n’est généralement pas dérangeant pour les gens normaux mais cela devient ennuyeux pour les développeur qui souhaitent faire du scraping web ou juste se connecter à un service depuis le site-Web. Dans cet article nous allons nous concentrer sur les recaptchas de google et particulièrement ceux en mode Silent en version 2

Alt text

Reconnaissance

Ce type de recaptcha est composé de 2 requêtes : La première étant un GET de cette forme :

https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LcEN9EUAAAAAAuC_ndHLJkvdHXAp-pOYURWOMG5&co=aHR0cHM6Ly93d3cub3JuaWthci5jb206NQQz&hl=fr&v=UrRmT3mBwY326qQxUfVlHR1P&size=invisible&cb=cmpxv7ihx8lo

La seconde , une requête POST :

https://www.google.com/recaptcha/api2/reload?k=6LcEN9EUAAAAAAuC_ndHLJkvdHXAp-pOYURWOMG5

La réponse de cette deuxième requête contient le token captcha qui peut être utilisé pour une requête de connexion.

Exemple

Essayons de nous connecter à Ornikar, un site pour passer le code de la route . Dans le debugger chrome ou sur d’autre logiciel d’analyse réseau, on peut voir la requête.

Ici sur HTTPDebugger :

Alt text

On retrouve :

{"email":"[email protected]","password":"SuperPassword123!","_token":"03AGdBq264jO-H4YYmiUhESUbvqL-Jz7YuFfrWL0qln_OC39lOvHZe_w5Aezgsuo7IdNFvz3XeCfeACXZXBBmQHHH_vOUHQcBCpdl1Zv2-TcSHzBcG1EJEilkzd832oRiKwIxkqzGxqdhNf2Rqw3HfBc5LiFqvuYCkEckICWv_q8O8orbVxkp4-zSL3xk47LEqouiGtkk3cyhr4JLX3EIeP8RvO3klf0p7_eHWwHcobX4HISGCwAxBuA5YJotDSalDuNcAYUDpiAlRgf3HR9qBHLD54nPd_9oJqhiLdv0s5q0ZoEsfjwJkMGIjxoV2LoUIBBqXwF8eG_-V5nzGH26ltXNeEqRi-NJuNX40J-D_JMW3EzTLdQ_7GWlPwZXc-Ag6GYsx2jtwGmGafDb3ugK7eC5upbmHTfjNhftaWj3niQyFERTLqHbW96dYRiyklDfgPVhLbWHCUo7ocCe57mpzLdng1wjAznQ"}

On remarque les 3 paramètres :

  • email
  • password
  • _token

Dans notre cas, on ne peut pas se connecter avec un script car nous n’avons pas la valeur du token. En effet celle-ci est valide une fois par requête .

Il faut donc trouver un moyen de le générer !

Bypass

Ce bypass ne marche que pour les recaptcha Silent V2 , si vous voyer une requète avec https://www.google.com/recaptcha/api2/bframe , ce n’est pas la bonne version et ce n’est pas bypassable !

Reprenons l’exemple précédent. Actualisons la page et récupérons l’url commençant par https://www.google.com/recaptcha/api2/anchor? . . .

On peut extraire de l’url :

  • ar=1
  • k=6LcEN9EUAAAAAAuC_ndHLJkvdHXAp-pOYURWOMG5
  • co=aHR0cHM6Ly93d3cub3JuaWthci5jb206NQQz
  • hl=fr
  • v=UrRmT3mBwY326qQxUfVlHR1P
  • cb=cmpxv7ihx8lo

Puis simulons une connexion et récupérerons le PostData de la requête commençant par https://www.google.com/recaptcha/api2/reload?

On devrait avoir quelque chose comme ca :

YhkYx1k-yvvb8OonJPmOpoJYù03AG ..."ä[13,87,82] !IyWgJWjIAAa- ... OfnIrQUUPxAhAHCdFyD_AjxYvI*-2540174922qBsign_inr(6 ... (Trés grand)

On peut se rendre compte que le contenu est sérialisé avec protobuff . Grâce à des plugins de fiddler/BurpSuite; j’ai décodé et j’en ai crée une Template pour créer un post data pour chaque recaptcha

Magie Magie : v=()&reason=q&c=<TOKEN>&k=()&co=()&hl=en&size=invisible&chr=()&vh=()&bg=()

A partir du premier url on a déjà :

  • Le V
  • Le k
  • Le co

Dans le postdata on peut extraire la variable chr.
Il faut URL encoder la partie qui ressemble à ca : [XX,XX,XX] Dans nôtre exemple de post-data ci-dessus , on aurait :[13,87,82] qui deviendra : %5B13%2C87%2C82%5D

le vh correspond au nombre à la fin du post-data ; ici : -2540174922 (attention à ne pas oublier le - parfois)

Enfin le BG et la partie qui commence par ! juste après le CHR et qui finit par * avant le vh

Finalement on a :

v=UrRmT3mBwY326qQxUfVlHR1P&reason=q&c=<token>&k=6LcEN9EUAAAAAAuC_ndHLJkvdHXAp-pOYURWOMG5&co=aHR0cHM6Ly93d3cub3JuaWthci5jb206NQQz&hl=en&size=invisible&chr=%5B13%2C87%2C82%5D&vh=-2540174922&bg=!IyWgJWjIAAa-OPf7vjhHcCY0RQRzbZk-ACkAIwj8RmjdaFTc0dhDJhieNXGLwJ0e8aBgHQxVNWMSkAxkTNl9AUafuQcAAAC5VwAAAAdtAQecC_cGglx_68zIYp4cbqolrYvI6AmQqOOdrDkvEbirXRRExYfwRNjMaM5zeaFz8zT1BcVrogw2iM2xsFWoDtyg_oAYo0fTVjAO3tBT7-SspdT9ls-my9vzXQcDmyTXERnvClNzlYUnWJW9IpvFlB8sJ6gVVFkPflBftE6olMNeiL7P7thblpaZI-P1jMY3aEVAksn5nhivDIVrM7hnqEPHEfPo3ZIxYLuzkrZ6f79AWb2DMxRI4IwYvdwKHkba2mE9JcfKUTuXIXU0AYbHcyXTnJo_9LUiVeIwsjMrtFD2LeL8FpmICacs8pA1PvNpeOdc_e992xv_b27v7XncL5CfitoMFdagC8br26VLnc0lo7Py7pRXijXj2lchYELIpae86HZULiZN59F1BubDN20EipvN58rUAuLhdERenyXQDv91CLLrzewDHXDzyq6CUCeRerGI5Ga7howOJgRqVH5l4jkvulgA51ARMUQs4hGHRylhFPs5Llz3l-MD4xFAh-GIV3USuBleRO6b3mxrmO2KOYvIfzQpuVTK4kl6356Oziz-BUlQR9jQhkMOv7gyBYNoOlDWNdkN_S_iQ2BzKeJjqfjmuFGQv0UwBbtEsm3ZMido5ulabhbxvJWsfeyARPiieT4F6V9yLzIR4hyBFO6hoXZEpYdaYnWCZRSLmx0hLtUSUzZZq8_Bf99b0BDqvzWa3ukW_0_LC3fhqW5tjGq8Wuwr4dgA1B4SxQpIp4veBp9EB4uA2dCmpu2tHJjSX4Ob77mqdC66U2q_jNnFplRH1tSUXRn0hGaydyMmJJiJhWi91CrydUBZmKl28I-mIHYdLrIxWuJQVQAyZyK4fMKkyNlCaZZEyoaWZkxCxP_Is4tgmjFv3iaOCBwDj9FqwGApbONbd4taeof6AHBllxwf_ODd9e4WKajPsGQyGBvodGGJCPuvNb65w003VK6WDH4Sflzy8rkDH8ktdeCJ3ruhOJ3yCytPtsiC6dzmzV_CZPqervCY9Nfl6MTAAz0NXC6knMnImdqKXxqB3n04qs16naF_2VrUCyc8SH7gHzp0CmLhhYAi91OhZ0lnMmbOdIE9hJFcWDG14uK-8__OSqEGz694sghNGILC689xwPqOJ8PGAtxgMtZOvUjkM6InpZ2KLcsWex1Id9zTtELc-6Eb5mzJpsjKxPkJQ7LZeEpzJmfq8XWh-ZyTVqkQdHklo8Q67kjg75fxf-ICwDAd7tTVr1pX2cA01oGSf3ILPhCgYYCw7r0OYgZyi0G0iBNsZxHdioI4ywAkUxDCJObxFCa3sZrBzt5ZAuoAj2oqnKAz6Pgx8zygnThA1pIhR7qLJ5TnrDAv8sVKVFjTA3eOz3r6BDX9r0GkAnpt_8TQtNR93IvLVKjhSexX9HfKdH0TL97_NdqMwREsxGKF_MtPSHocU7jvg3f1v0SwhF2CrpNmKG2hiUewZ-dpd4jPQlxMgyBYeKtB5XbDExmsQ7wB-1OcLaDpPMp1QiyhpJr5eVuxMD7nTHZY33ysaVWWckLG7vy2fU0Fh5LRMrniLNbblD3mdZxSEHzAYIt_K2dxHSme5TAfhCcd_UznZFEoQ6xhCDEAWO-ILohm8no2eWh4RUkwNst-ei648FHpYQgyWH751-DYtoabXmW6VJF2e6KyUh2fVPISls0fIDC3AKZHmSFBBKIV8900c0Mm5QUe4WT6OuvfD3vfVQCkg811X-iExaismz3YM0LtwkAtoIgfQTrBLSsUCJoL92B8Fk0GYoYw52FWn2TdimUYpR55EDg93onfh20aJgLGRtrSr1crWdsvueM-THylGYl_u8CqW08ipjCYB-YOpnvXQWomqWGBaUX9FNLFt3kDw423k8iL4kFrEM6Fe1K0-dlbcWDuq3qcAwtTLrQyGIgyvCC4IV_nnk-NMzvAV_9WrCohtgxOCtTAUNzmKm15RZ9gd4z7HDx6bYHCNOajVgfE-rYNsWKyEm6OMj37_QeW6WeS4M_1Kdt8fi1LmYOA41v0Zf1ao0q_mYCZt_cPfKph9hFIr8H1Pl6PUXcHZPHInxkQegNMRl3eeCqZPQSLQKudM0l_AH4LTuuy0FvPj7FTg3vHb9YdR_IIM4mLhq3Pg8cmvyFZg0IlS-FyjvSDtgDRIUhSx0Dlu5zCKRhlt9mdllacoKpREdoxtya7fbHzT8QDi1_0ffRmvFogI-KeMNiDqom_pNIWCgnDug-FOuqTPBazUDcz6s3qcYnNwL7KeP0KOe4Sv5cfSI7NZnhmPaYWUSL70QY-ru2sPhOokSSM_GZCaML0x7WZZpToHzDhvt-qX53ozdKOn3Q3hN89c_p8nYmKoANX0oNtcpBH3UXXnGI2JKTp1K0adreZofiSHOUoOWt-rofbz09xlfPxyBaROBagHh9A76xBqN-hc9XX13Iz3Ay07wRpo4g0-glQfefYqw4XWlwT05W86JlEtXhrjVL4wyiXB5lGNRhIIn60a5KAPAHuBPozJ-_9cRZVV2fEt6RGWKg4ZoqIKaI86FpJ4vu0LwBfWN-8tXMgITy7RIftIchmiOvKHiJ_wvOyX_eINSM7yDqkIBOhennKxDXxvBTFosQmJhXnQ2N2PpVE6ItVyEpsY8OjlPGRkeBQnQXHt33UQWjTxN2AqaMq8obP61aIJoHB48wl4MZ2YggLdUrmjd_6_tOBZUco1b7usTatiapSd55iNffk-jVidx7GxokqO7J6QDzPTaA42ZenHeKq95jGDJodg7VDKzrKaQdw1ohbtNEMpMm7ByodbLbNnTyGFqOJ33cdzp_VDx61z2tTeMFen9m4WVCRVsC-P_1At0amRo892yUR1G3xYdFoOhDzfiqTTGmJJsZM4bPqRXcA5MY0_YgQzvs_QoFPL1peN7mfNEmxRTgWb4eTMUcXmdU8zaKvmDYB8D9J5ghTCcOsCU2u5voKhIn9hJwX3VoHXg5FXZPoQkePR89nEX0krYZfSdqqOK73mcE6TP2Cin657wdXgNKsMjuN6XVax1xJx6q_Oc04cFhimFBq32WqEEyLt0cFiNrsmjn3Vf03Nkg_nKkoJirg0oHuAUu9rLrJJxaR5oroNAcg0EFZfjUMbllgCdyhZYK-Rr8s0T4xB6uGTNEZLYY3xAvHXZfDGdJuIL_S_saP8iPbbPfVgNnbsJfIBljmPQdKbS395612WAGOEZwclLWKIx9mQdswD43soevg5vmal4hXHwMyuQ7ttuRt1pgdx_Bwx-a0KVBaGNzomwUpi2-olwPgDOry6HzrXArItJJNjRAmvKo2V5w645EZJF_PlXClr-_Y_4rbhFlrh1XBZYpp2VPuoCDmi_gE61FDR7boslW7oSnNroQt1qAVjnjArV6O0eE9ECIJEz83T34ZVnJPusB6KZE46lYg6ouGEE_d_o857tJc2zqmCshHl0H54kg-DJgxBs0_w6aHQgbDVT-bfBiTT5EyuyrWGDpdima5z2jQQP1pIgYnDToB1cNFsri7qUsJXNOLMU6AlfF04LtuXeyt274gTl_sFg_7XWqjjOoGrfILx4j1YOoZsoTZClqoSz_J-juscokSExbA9gPvAY4Evj_manobc0eLPcWI_1ixnTTgBJXJ6tkCA09BTHdgmChW_LZoGcwk8fTauiAsP3Cae8YL9OtCSkU8Tq0clm4WFTBKq7z563xV1GSUZiPqfXvm3zCEcBQfsMtmGN2A8dMym32RJL-91ICysucjlVcgFyoREmEfFFQBi3UJBxxwkJxLjhs3LDPIoR2PeN3kLRQu_7u46NsBDVnNM04_q1re2uAflfvQeyQXhYcV6iWWZN2nqFzwkSIqaI8z50MW1hx-KL6aPYtZ6D3Y7N7K6BB2LX8gpRMeCOAtFMVLgTZMapczkNhE_9Kf_9CR0cVV6lVdRNqNCtB9sKts3_2BKJASTcOfnIrPDmmXjTpC80VBtiFJGBcuxsFCK3_zesjyF-swb7ySc18dOLzpwK91eFK6lqfYVj6dO4ckI0ruH_bPThcvnpRAkxMc95gZnlFPqFzMayZCyI0hiRJyWP4F_aGRPkaqoAFodLQUUPxAhAHCdFyD_AjxYvI*

Notre template de postdata est prête. On peut maintenant à chaque requête le token qu’on récupère dans la réponse du GET (recaptcha-token)

Alt text

Et voila ! On récupère un recaptcha vérifié automatiquement (rresp)

Alt text

Voici un script python pour se connecter à Ornikar :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import requests
import urllib.parse
from bs4 import BeautifulSoup
import re

##Urls
urlGET = "https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LcEU9EUAAAAAAuC_ndHLJkvdHXAp-pOYURWOMG5&co=aHR0cHM6Ly93d3cub3JuaWthci5jb206NDQz&hl=fr&v=YhkYx1k-yvvb8OonJPmOpoJY&size=invisible&cb=ctd9gmy8wd8u"
urlPOST = "https://www.google.com/recaptcha/api2/reload?k=6LcEU9EUAAAAAAuC_ndHLJkvdHXAp-pOYURWOMG5"
urlORNIKAR = "https://auth.ornikar.com/api/v1/sign-in?app=learner-webapp"

##Variables constantes
k = "6LcEU9EUAAAAAAuC_ndHLJkvdHXAp-pOYURWOMG5"
co = "aHR0cHM6Ly93d3cub3JuaWthci5jb206NDQz"
v = "YhkYx1k-yvvb8OonJPmOpoJY"
_chr = urllib.parse.quote_plus("[30,85,0]")
vh = "12637701362"
bg = "!b2mgaSTIAAa-OPf7vjhH6qbB86JcZaQ-ACkAIwj8Rqwi-LZJH1mmOtPmiT8KKX94556Z0uUSOdyGXSMDWTujzROSuAcAAAEDVwAAAAVtAQecDRWmBBNdfn3Ady3IUrxZ6Ble-zzWoqrvYnPyRXBK_BTjJa65hFj1QhQaP_ocZu8QVh7SIsxfi3IN3DVkfWU0EvtqMUfIqz7tZ_IFtoomS3JlgW-z9sDf7O--vMnAVvnNYZDHDO9AuHB3ld9vZvld2MpTOUPFRJPSdZKDVWvSVuT5bqXq79jYHIwwfbLPoy_-90G4kR1NzVK9WFl_7GQ5ZcAMyoFCaEiDmyir1C8RaCTBOGw8cyI24zZs_4x-qalA8tCbiYfV7-WsH7JWix53_A0VQc1R6NhnCJRD16Ro3jlC9T91BZCwxtx9DL9b8gz6mpwV0LYOsTT8wCnh2AR5c3vTQ3pELYI7EqzEkxNvpi3FiocA7xwMjeUEGCEtiG1ICiEv-PmwdfEaWPwCPfNXOOjM5hT12uYlJBfLZycvQ0DehmeMCDjySXyH2YH-tQ-riwHEeBO8PjI2Yf2SlKuSNoY-Ci4LyGVPrqj4Rh4n51jhzEz0QQ44_AXl89mQcZFKbQAW9vnVGsIL45WFpag0uvlRs3j0dK2ZMWVyCIuOdetZ0G-SNotcixAbrpS9RwTeYfUOigaY6iTOvYGRRSHF5pdnqSPWIfLz2fDZtGWtSbLA2uFhT1BAfBAqKswkZNBBY3kQqDDIm8Bk_b4TRxwpnEGq3fMphWFkZejbcu2BGK7CjAolV7whs-kPE285inOf1yXzjETr4p8TiFTd5IPiZyKCLks4DQiMegA0cOYaEGDRfSP9snTZSMrOYtIdOZcU8K3hV3vaqqdEKlczlhb1fpb0ac52TUFFWN8MWaF7GGzE0v_9aLQnWDxUHsOfCNg0Q08_3ZO-dDNZV7UjU8G9IrwuAS7153boUP_R8ZiBOdCn9IkM2fUBkKrVM_XKTJ8DxAos6bw9JcU4bufblOWkxo2Wrn-swVhfuIKS86MxY0NwkFTnwv9tSX6kcK-NbVoFfS_z25j4jDIfLmcOxHX3BRb7YAeGOB_6Ry7KNDEU782jts0NaPbvJIEgb5mCdB6eeaqPIEm-uZiOlxz-J4QMNHyxqe_bHbCuTMNYir39WWJ--Wtz1Zev0VsmCEtmDSWBefGhgi3fdOt8CG-kBROGph4rdLmb4EZ1M1hazm933qOcQGAwZS1qRSVMr_YtulAIcjsFfGZPxQtI_ZLzJwGACYJznVlvkfDzkvL6PUo4tuIgY98MLmHJ7WBTzXKysRJy7d5H5dvQCi5hTQITDh5UuBznHEf65pbZ8DkWfSzw9iqTMFdX7FecfCDTRoPFsA5Shpmi9HHvDcV5JTi1h_4qQPQhmAWO6GLc_tjwo3UZGwXQdeP1dsnIgHmbbVkz39mY1tT5OfDzgeQkDfn11kLYccyC7iDAXeZ-tyXMZ-_QQB3YIQ0p0XWKjpVrLlOchGjSXyolaP6zvrFgf5r47zXIJrE8zRhZw07jwxl-FBDWXiFYiXQcRcOE1gQjC80EwTusghjfjtxW_oRrVRV9te1R2medk5nkLDylBSPXsU4c7LtDRtoFA16kwfFcfJY0IbmwCJRXkCvAW4o1xJVA1ZVNWxcGI4_IOSdVHgCFI8VEZ9fcb_NpezU4VOt0wGz_OJjkMkTrmfqnfpXSDBw4zSjOikz-vapJCKLhrhE7TPBkutHKF-f_4AjM7o52KW-Cwb0nWx28BTminpxiyHomUPO1f17kHHRfgkxOdbhM_qA9Yz5_xHwER63NTsk5082IPGAv41jrYTjnawD0PPBe8Pzjzlkn0EvakutCPu2pNz4fFMRgjaTzrh-aFIVzDdzLHiUI2OTWtJYYZS7iPl5IFM26Ca341u5LotOVRKidG4pBfdY257ZVLHJp5LqKgMw4jRZ5vtroPnYT_G6zgQ1VubnHKJHClBJrbcWr06UHsMjEl2CSCzhT5sQ3wAD0Qv7uJLoAq7mFliwLEaQynunyvYOo3QgPHhQkada7vV7dCqv7XvTOqqmpBPk1yzILAPvGEJ3UwtEFYgSb2QEw31R2pmmiYYAvR8JUiddkVZabreguWDb3UNHiC4kyT8LO9v5cnTEGcbzpCxELSpWS3GIEAr_sfukhpy8SauDGT0PR3uApJ8UM5nLsMDMIN7Oi-G1n0oaca0nRVcobOrPqAPQayk13UoDSO1r0K9Wf8ttKAB12tuyDIn4e6DGyZkDg_21yXezFGEM8EXpUafUVqzoLglwUBcsp3p_4iTZuhcr5OxLZGdubzuGnXFctm_EakPF9zjYWAZ1eUzXs3dofYP12qBetvpVjKfyXj__tVFxVYuN1pJMGdZ0LCL55qZ6T3oaPy40JnadzGowsoEUwEeQGxG-1A5vjYuXaTOvL4YzKptUmcN_b-oqvEW8eBhLL0ek_1hJ3ZAbiVFPdlPFiurMCIvqR2BCyBZjqi5I8QWwp2KlcQp8Dzf76d_X821tSSHTDCndOB91txj1wU_ZOj4BJks2wu09v6T90nxZDwV9QzxEcxCivzRVv62osFjDv2Y_7_y-A-sAy08eDc80uLTYfA4zdSKTB_A5QIZn6WnT3mpyWLQ9bmFGEeJ_rJELY9mOo2cuAaJSNp7slsn0QN7wgoer-GPZSJ60JcW_UdHw0tFPuMTpZBZAGbaIWq7gkk8hAw0ifcaJA1HJcDwrVPCs705tGa5dW0c7rsWVNUIGVzJkvKy8WBz8ZGxlz6X0nMbuxIHVz5JGqcj1aQv_1BLnK62zjSndRNFGe8GsbgdO2i93zC_t2Nzd0IP9H3qSbcChKwAT8KYAcfPYbl9mT1LaGakczgRwoLh5HKb47ouMm_BkEhCaJ2t4jMK415POfPzPVsMBTqNfAlW61pgKtGBZAj6vJyecotQSC4yg-xAnm2EOnmv1Gv636z3d7KzyCI-McD3UE_iK2sfpXE2ePNGvJN06y0QgodGEPWWN46gQ6AmRRdAXC_3JM8BkiBASeaaN4L0kgiR9g9eaDaz57wdZCzdVWJbfvvlpRk_EqrEXK786OMTJ_4lGPoPNliHtmESsd5YDtwuf3d6rkqcOYde7mpC1yO6djhbJooVwwwR6w0c1TFA0IPFIojXe5-zoZfIhIM-1gQyfGLaWOf37rNhdwZEqkjG1itXgtHoknPsX_lO5F_VnCqYys6Zt_x_HlBQGm1U6jUnBzSBs2MbrszNhPVgSV5Aai9O3Lg2hTVdz8VVksYikWpslq_rnmgr4NniK1UUZE-nQqtr_PG8T5-NwXt9l0sQRDB3OPV7Da7A5gfYv_8iSMDwHs8AjQZ3WXxxcEkFGAD1_O4f8kyLDvbv5TLJz_JAOzx17HL6VPh_SCbPU77EnPkNH4uLsXdx58LXiB-7Vglx_RAmVNPttogge6rEoQgkavefKvaC1tTwkFzwjT1RqefrNUvvVBT4aEshtBeO41a9XAvaudBKYctfduPNQf31NdHLntiOnuEsatCDE1ILrmQK0SdlonKEYrQw3HeMAQdazsUO760WJ5wxHy1AWWNfje7rRiYprKk_B1seFIwhiBk9_ajJiVGW6MXYKZo3pPPXq9Texu89bscvhDR5H0-sl0yOoW8MonMT-OPINN11RwJqexjRwbJ-iajXuIzxS0u1zIikcWJAhaf4ZdYeG5IDG8Ql7A370ud3p5_pviDXiuGXrN3mC9uyNJVILQiDbNLklGSOfWPm5B1cO6X_7VZkglvUKUlk-_Q0jAishk8Hh65M9KtvPRJl0yuHo5nD4Z01AdRhCFTbWlkDVwwPTBG8Jo3QcVD8SgfyKr11vt1zkchqBi2Ml0EvWF_NZqksu4_Smh1eWj_a7M2_B5h3cMKnb6n8-BWoWQ8g39n7lNp_v5sG5uohUlLNBenKGXbZWN7zrsGjz9pgez4XRlwX-b6qva1Utz4KkSi3Au7j0YKe2PU2Lo4RNBcMRWOjqz9IMDYdSfpDG3AOUenRqft0yg8cPma9a5iJBFfBLjUR7YCgJJ0thHUHKFHUI1VhCCAno_haOTpB2aaeV8-bPl5GhU7fyIZ62Woo9ElL2rbYCe8YbfYysGygxFpzjJjfB3BvXXTIbGlZ1On_Ag73nyacfbuuR889k6xG2j7FEVs4yACuqfqjmcxA9mUqXSkXy-zCEx6IPQkmC9UddYszqm4oMJUdLPPm5Ve80wTZVF5FpPLMQT9vrM4OvTlTEfqcVbh_ephS4ql7vyoUFfQlUD8JNizOMExUXW4VkkW9bfHImFW3Z-EX9dR2NdW1_eqvF4W0-ABwzz_u1_LMm6C6ya7gdg638abQ6nzX4vspEXOOujuj00m6kZQq-jf6ak4mqAiG4Te9hXYZ0QQ6spEakSSz8SKmPPxwbfjkuumwCYyoBoJiarszJwgaAYB68VT4gCICKi3VdaMoEzff4R__axLPyFn_o7C5InJY4-HlftGLa2iISStuo6iQqgdQFVGflv6lDcbTAtCSW2MP_W-qZBgLezU4lrw6amFUH2dzxUhHIsmg5iqqiWHTKc*"

## Token Variable
r1 = requests.get(urlGET).text
token = BeautifulSoup(r1, 'html.parser').input["value"]
print("TOKEN :"+token+"\n")

postdata = {
	"v":v,
	"reason":"q",
	"c":token,
	"k":k,
	"co":co,
	"hl":"en",
	"size":"invisible",
	"chr":_chr,
	"vh":vh,
	"bg":bg
	}

## Token Recaptcha Final
r2 = requests.post(urlPOST , data=postdata).text
recaptcha = re.search(r'\[\"rresp\",\"(.*?)\",null,120', r2).group(1)
print("RECAPCHA-TOKEN :"+recaptcha+"\n")

## Login Ornikar

postOrnikar = {
	"email":"[email protected]",
	"password":"SuperPassword123!",
	"_token":recaptcha
	}

r3 = requests.post(urlORNIKAR,json=postOrnikar).text
print("RESPONSE :"+r3+"\n")

Disponbible ici

Et le résultat :

Alt text

Bypassed !

Alt text