🕸️
JsCrack
  • README
  • 🌱AST
    • JS代码混淆基础
    • AST原理与实现
    • Babel API
    • AST自动化混淆JS
    • AST自动化还原JS
  • 🛠️Tricks
    • 经验之谈
    • 解密定位
    • Cookie加密
    • WebPack混淆
    • 进制流解密
    • RPC调用
    • TLS握手流程
    • JAR3算法
  • 🎬Slider
    • 极验滑块JS逆向
  • 🍖Practice
    • 某查查爬取统一社会信用代码
    • 某安全社区文章爬取
Powered by GitBook
On this page
  • JA3 Intro
  • Ref

Was this helpful?

  1. 🛠️Tricks

JAR3算法

PreviousTLS握手流程Next极验滑块JS逆向

Last updated 1 year ago

Was this helpful?

JA3 Intro

项目地址👉https://github.com/salesforce/ja3

JA3S是服务器的TLS指纹,是通过提取TLS握手协议的一些字段值,再进行md5哈希

JA3是客户端的TLS指纹,和JA3S的生成差不多一样。

The JA3 algorithm takes a collection of settings from the SSL “Client Hello” such as SSL/TLS version, accepted cipher suites, list of extensions, accepted elliptic curves, and elliptic curve formats.

JA3S: MD5(TLS version,Cipher Suite,Ext1-Ext2...)

JA3: md5(TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats)

如这里版本号0x0303对应十进制771,密码套件0xc02f对应十进制49199,以及扩展类型

不同字段的值用,分隔,同一字段的多个值用-分隔,拼接起来刚好是JA3S Fullstring

再经过MD5哈希得到JA3S。

一般不同的客户端这些信息相同的概率都很小(包括顺序),所以服务端可能看某个JA3指纹的客户端高频率请求网站就把它封掉。

可以用这个网站来测试自己的JA3指纹:https://tls.peet.ws/

用无痕浏览器,每次刷新都得到不同的指纹,主要是每次扩展的顺序都变了

使用requests库发包,每次得到的也是相同的ja3指纹

import json

import requests

for i in range(5):
    r = requests.get('https://tls.peet.ws/api/all')
    print(json.loads(r.text)['tls']['ja3_hash'])

Ref

  • https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967/

image-20231007145943590
image-20231007150521673
image-20231007183727047