Skip to content

DXVVAY/hcaptcha-reverse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

hCaptcha studied

Contact . Telegram . hCaptcha Study

String integrity check

This script was used to "encode" somes event data:

- webgl vendor + renderer
- browser performance
- browser timezone

It was used to just encode some data from the events to make sure they arent tampered

But that script is now outdated and there is a new way to encode the data

Stamp

This script is used to generate the stamp value in the fingerprint.

Hashing algo

This script The hashing algo is xxhash with the fixed seed (5575352424011909552)

Rand

Rand is a CRC-32 checksum hash of the whole hsw payload in json format, it's used to check the payload integrity if you edited it from memory etc...

Format: [math.random, crc-32 * 2.3283064365386963e-10]

Example

Payload Encryption

Final payload is encrypted using AES-GCM (256 bits key)

To find the loaction of the key search for i32.const 544 and find this pattern with 4 calls to the same function

location

those 4 calls are calls to hcaptchas memory encryption function which encrypts the key in the memory, but by setting breakpoints in the wasm you can get the bigints before they get encrypted.

Then use this script to form the key using the bigints.

Making a automatic key fetcher that doesn't use any browser environment is a prett hard challenge, but not impossible

key_fetcher_flex

Fingerprint events (fingerprint_blob)

fingerprint_events is parsed output of fingerprinting script, somes data are hashed.

Final output is ecnrypted using AES-CBC (128 bits key).

Here is the blob encryption function seperated from the hsw js code

Keys for the version 7b6e17c04c6d797bfac5dc5382688970e3759da3629a52f9a4317bf71af11e3a: [58, 79, 236, 196, 100, 102, 227, 71, 74, 118, 130, 142, 166, 108, 77, 226]

Payload and Response encryption

The getcaptcha payload and response are both encrypted using different keys in some algo which i wont be publishing, (they are both in wasm)

Credits

  • DEXV - Shit head (retarded) - DEXV - Main Author
  • DCH - Sexy Frenchie - Telegram - Helped me with a lot of stuff
  • Dropout - Cool Guy - Github - Just helpful when i didn't have enc done myself
  • Emrovsky - Turkish fr - Github - Helpful