Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/blacksky-algorithms/atproto
Segurança de Infraestrutura em NuvemAuditoria de ConfiguraçãoDetecção de SegredosGerenciamento de Identidade e Acesso (IAM)AutenticaçãoConfiguração IncorretaSegurança de APISegurança de Banco de DadosAnálise de Logs
GitHubblacksky-algorithms/atproto

atproto

94316há 12 diasRevisado pelo Kitploit

Fork da implementação de referência do AT Protocol com AppView otimizado para desempenho, indexador de firehose baseado em Rust, cache Redis e funcionalidades comunitárias para redes sociais auto-hospedadas em escala.

Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Blacksky AppView

Esta é uma bifurcação (fork) do AT Protocol reference implementation pela Blacksky's, mantida pela Bluesky Social PBC. Ela alimenta a AppView em api.blacksky.community.

Estamos publicando isso por transparência e para que outras comunidades possam se beneficiar do trabalho. Este repositório não aceita contribuições, issues ou PRs. Se você deseja a implementação canônica do atproto, use bluesky-social/atproto.

O que é diferente

Todas as alterações estão em packages/bsky (lógica da AppView), services/bsky (configuração de runtime) e uma migração personalizada. Todo o resto é upstream.

Por que não o consumidor interno de firehose?

O dataplane upstream inclui um consumidor de firehose em TypeScript (subscription.ts) que indexa eventos diretamente. Nós o substituímos por rsky-wintermute, um indexador em Rust, por várias razões:

  • Desempenho em escala: O consumidor TypeScript processa eventos sequencialmente. Em escala de rede (~1.000 eventos/segundo, 18,5 bilhões de registros no total), um backfill completo a ~90 registros/seg levaria 6,5 anos. O Wintermute visa 10.000+ registros/seg com processamento paralelo de filas.
  • Arquitetura de backfill: O Wintermute separa a indexação ao vivo do backfill em filas independentes (firehose_live, firehose_backfill, repo_backfill, labels). Eventos ao vivo nunca são bloqueados pelo trabalho de backfill.
  • Ferramentas operacionais: O Wintermute inclui utilitários para indexação direta de contas específicas, importação em massa do diretório PLC, reprodução de streams de labels, reparo de referências de blobs e gerenciamento de filas – tudo necessário ao inicializar uma AppView do zero.

O dataplane e a appview deste repositório ainda funcionam como estão. Eles leem do banco de dados PostgreSQL que o wintermute escreve. Apenas não iniciamos a assinatura de firehose embutida.

Correções de desempenho e operacionais

Estas são amplamente úteis para qualquer pessoa que esteja auto-hospedando uma AppView em escala.

Otimização de consulta LATERAL JOIN (packages/bsky/src/data-plane/server/routes/feeds.ts)

  • getTimeline e getListFeed foram reescritos com LATERAL JOINs do PostgreSQL para forçar o uso de índice por usuário em vez de varreduras completas de tabela. Melhoria significativa para usuários que seguem milhares de contas.

Camada de cache Redis (packages/bsky/src/data-plane/server/cache/)

  • Perfis de atores (TTL de 60s), registros (5m), contagens de interação (30s), metadados de postagens (5m)
  • Reduz a carga do banco de dados sob tráfego de produção
  • Problema conhecido: O cache de atores tem um bug de serialização de timestamp protobuf onde objetos Timestamp perdem seu método .toDate() após ida e volta JSON pelo Redis, causando hidratação incompleta de perfil em acertos de cache. Atualmente executamos com o cache Redis desabilitado. A correção é serializar timestamps como strings ISO na escrita do cache e reconstruir na leitura.

Aplicação no lado do servidor das preferências de notificação (packages/bsky/src/api/app/bsky/notification/listNotifications.ts)

  • Quando o cliente não especifica reasons, o servidor aplica as preferências de notificação salvas do usuário. Sem isso, as preferências são aplicadas apenas no lado do cliente e não têm efeito.

Correção de chave de assinatura obsoleta no verificador de autenticação (packages/bsky/src/auth-verifier.ts)

  • Na repetição de verificação JWT (forceRefresh), ignora o cache de identidade em memória do dataplane e resolve o documento DID diretamente do diretório PLC. Corrige falhas de autenticação após migração de conta onde a chave de assinatura é rotacionada, mas o cache mantém a chave antiga.

Sanitização JSON (packages/bsky/src/data-plane/server/routes/records.ts)

  • Remove bytes nulos (\u0000) e caracteres de controle dos registros armazenados antes da análise JSON. Estes são válidos de acordo com RFC 8259, mas rejeitados pelo JSON.parse() do Node.js, causando falhas silenciosas de análise rowToRecord no dataplane que se manifestam como postagens ausentes.

Postagens da comunidade (específicas do Blacksky)

Infraestrutura para postagens privadas de comunidade que residem na AppView em vez de PDSes individuais. Específico de como o Blacksky funciona, mas pode servir como referência para outras comunidades.

  • Espaço de nomes de léxico personalizado community.blacksky.feed.* com endpoints para submit, get, delete, timeline e visualizações de thread
  • Tabela separada community_post (migração: 20260202T120000000Z-add-community-post.ts)
  • Controle de adesão (membership) na camada de dataplane e API
  • Integração com getPostThreadV2 para threads mistas de postagens padrão/comunitárias
  • Requer um banco de dados de adesão separado (BLACKSKY_MEMBERSHIP_DB_URL)

Arquitetura

Bluesky Relay (bsky.network)
     |
     v
rsky-wintermute -----> PostgreSQL 17 <----- Palomar
  (indexador Rust)          |                (busca em Go)
  - consumidor firehose     |                     |
  - backfiller              |                     v
  - indexador de labels     |               OpenSearch
  - indexador direto        |
                            v
                    bsky-dataplane (gRPC :2585) <--- Redis (opcional)
                            |
                            v
                    bsky-appview (HTTP :2584)
                            |
                            v
                    Proxy reverso (Caddy/nginx)

Visão geral dos componentes

ComponenteOrigemPropósito
rsky-wintermuteblacksky-algorithms/rskyIndexador de firehose em Rust: consome eventos, faz backfill de repositórios, indexa registros no PostgreSQL
rsky-relayblacksky-algorithms/rskyRelay do AT Protocol para receber labels de moderação de serviços labeler
rsky-videoblacksky-algorithms/rskyServiço de upload de vídeo: transcodifica via Bunny Stream CDN, envia referências de blob para PDSes do usuário
bsky-dataplaneEste repositório (services/bsky)Camada de dados gRPC sobre PostgreSQL
bsky-appviewEste repositório (services/bsky)Servidor HTTP API para endpoints XRPC de app.bsky.*
Palomarblacksky-algorithms/indigoBusca em texto completo: indexa perfis e postagens no OpenSearch com boosting por contagem de seguidores
palomar-syncblacksky-algorithms/rskySincroniza contagens de seguidores e pontuações PageRank do PostgreSQL para o OpenSearch

rsky-wintermute em detalhe

Wintermute é um serviço monolítico em Rust com quatro caminhos de processamento paralelo:

  • Ingester: Conecta-se ao firehose bsky.network via WebSocket, escreve eventos em filas Fjall (armazenamento chave-valor incorporado)
  • Indexador: Lê das filas, analisa registros, escreve no PostgreSQL com ON CONFLICT para idempotência
  • Backfiller: Busca arquivos CAR completos de repositórios dos PDSes, desempacota registros na fila de backfill
  • Indexador de labels: Assina streams WebSocket de labelers, processa eventos de criação/negação de labels
Baixar ferramenta