core.register_fetches("has_grease", function(txn)
    -- 1. Читаем бинарные данные шифров
    local ciphers = txn.f:ssl_fc_cipherlist_bin()
    
    if ciphers ~= nil and #ciphers >= 2 then
        -- Проходим циклом по 2 байта (размер одного шифра)
        for i = 1, #ciphers - 1, 2 do
            local b1, b2 = string.byte(ciphers, i, i + 1)
            
            -- Проверяем математическое правило GREASE
            -- 0x0A0A (10, 10), 0x1A1A (26, 26), 0x2A2A (42, 42) и т.д.
            if b1 == b2 and (b1 % 16) == 10 then
                return "1" -- GREASE найден в шифрах!
            end
        end
    end

    -- 2. Читаем бинарные данные расширений
    local exts = txn.f:ssl_fc_extlist_bin()
    
    if exts ~= nil and #exts >= 2 then
        for i = 1, #exts - 1, 2 do
            local b1, b2 = string.byte(exts, i, i + 1)
            
            if b1 == b2 and (b1 % 16) == 10 then
                return "1" -- GREASE найден в расширениях!
            end
        end
    end

    -- Если прошли все циклы и не нашли GREASE
    return "0"
end)