Ir para o conteúdo

HTTPQL e StreamQL ​

O Ogma usa um subconjunto da linguagem de consultas compatível com Caido para filtrar o histórico HTTP, o tráfego WebSocket, os resultados de Automação e as visualizações relacionadas.

Sintaxe ​

As consultas são compostas por cláusulas unidas por AND e OR.

text
req.host:example.com AND resp.code:200

Os parênteses agrupam expressões:

text
(req.path.cont:"/api/" OR req.path.cont:"/graphql") AND resp.code.gte:400

Há suporte a comentários:

text
// API errors
req.path.cont:"/api/" AND resp.code.gte:500
text
/* focus on login */
req.path.cont:"login"

Operadores ​

OperadorSignificado
:Igualdade ou correspondência padrão, dependendo do tipo de campo
.eq:Igual a
.ne:Diferente de
.cont:Contém, sem diferenciar maiúsculas e minúsculas
.ncont:Não contém, sem diferenciar maiúsculas e minúsculas
.cs.cont:Contém, diferenciando maiúsculas e minúsculas
.cs.ncont:Não contém, diferenciando maiúsculas e minúsculas
.like:Correspondência de padrão do tipo SQL
.nlike:Ausência de correspondência de padrão do tipo SQL
.regex:Correspondência de expressão regular
.nregex:Ausência de correspondência de expressão regular
.lt:Menor que
.lte:Menor ou igual a
.gt:Maior que
.gte:Maior ou igual a
.existsO cabeçalho existe; use req.header["Name"].value.exists ou o equivalente para a resposta

Exemplos HTTP ​

Localize tráfego de API:

text
req.path.cont:"/api/"

Localize erros do servidor:

text
resp.code.gte:500

Localize respostas grandes:

text
resp.len.gt:100000

Localize respostas JSON:

text
resp.header["content-type"].value.cont:"application/json"

Localize requisições com cookies:

text
req.header["cookie"].value.exists

Localize tráfego modificado por Interceptação ou Localizar e substituir:

text
req.modified.eq:true

Localize possíveis caminhos de administração:

text
req.path.cont:"/admin" OR req.path.cont:"/manage"

Localize tráfego de reenvio ou automação:

text
source:replay OR source:automate

Exemplos de streaming ​

O StreamQL aplica o mesmo estilo de consulta às visualizações de WebSocket e de streaming.

Localize mensagens WebSocket que contenham um campo de token:

text
ws.raw.cont:"token"

Localize mensagens do servidor para o cliente:

text
ws.direction.eq:"To Client"

Localize mensagens com aparência de JSON:

text
ws.raw.cont:"{" AND ws.raw.cont:"}"

Filtros salvos práticos ​

NomeConsulta
Erros de APIreq.path.cont:"/api/" AND resp.code.gte:400
Endpoints de autenticaçãoreq.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"
Tráfego JSONresp.header["content-type"].value.cont:"json"
Métodos de interessereq.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE
Possíveis segredosresp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"

Limites ​

Para manter os filtros previsíveis, o Ogma limita a complexidade das consultas:

  • Profundidade máxima de aninhamento de expressões: 16.
  • Número máximo de cláusulas: 64.

Se uma consulta ficar complexa demais, divida-a em filtros salvos ou use Pesquisa para uma investigação mais ampla.

Software proprietário. Todos os direitos reservados.