Screenshot de dashboard vaza chave de API. Print de bug expõe URL com token de sessão. Captura de tela do e-mail do cliente mostra o endereço residencial. Se você já passou por isso, sabe que borrar uma área da imagem não é detalhe estético — é controle de superfície de ataque. Segundo o Eurisko.com.br, o Google começou a distribuir globalmente no Android a ferramenta Redact, integrada ao Markup do Google Photos, e isso muda a forma como devs lidam com privacidade no fluxo de compartilhamento de imagens.
O que é o Redact do Google Photos e por que devs deveriam prestar atenção
O Redact não é uma novidade conceitual — borramento manual existe em qualquer editor desde os anos 2000. O que muda é o contexto: a ferramenta vive dentro do app que você já abriu para conferir a foto, sem exportar, sem editor externo, sem fricção. Para um dev que vive alternando entre Slack, PRs, Loom e stack Overflow, remover três etapas do fluxo significa, na prática, que a redaction vai acontecer. E o que não acontece é o que vaza.
Na minha experiência revisando pull requests e documentações técnicas, vejo três padrões recorrentes de vazamento:
- Tokens e URLs internas aparecem em prints de dashboards, logs e requests do Postman.
- Dados pessoais (CPF, endereço, telefone) vazam em capturas de comprovantes ou contratos.
- Metadados EXIF que revelam GPS, modelo do dispositivo e timestamp — mesmo depois do borramento visual.
O Redact resolve o primeiro e o segundo. O terceiro continua sendo responsabilidade sua.
Na Prática: como usar o Redact passo a passo
- Abra a imagem no Google Photos no Android.
- Toque em Editar e depois em Markup (o ícone de caneta).
- Selecione a ferramenta Redact.
- Desenhe ou marque as áreas que deseja ocultar — você pode adicionar múltiplas regiões.
- Salve uma cópia ou substitua o original.
Detalhe importante que o anúncio não destaca: a versão original não é sobrescrita por padrão. Você sempre gera uma cópia redatada. Isso é uma escolha defensável — caso você borre a região errada, ainda tem o original. Mas significa que compartilhar a cópia errada continua sendo um risco.
O que a maioria esquece: EXIF metadata continua intacto
Aqui mora o verdadeiro problema técnico. Mesmo com a área borrada, o arquivo JPEG carrega nos metadados:
- Coordenadas GPS (se a foto foi tirada com localização ativada).
- Modelo e marca do dispositivo.
- Timestamp exato da captura.
- Miniatura embedded que pode mostrar a imagem original.
O Redact mexe no canvas visual, não no cabeçalho EXIF. Para um dev, isso é o equivalente a fazer git commit --amend sem alterar o author — o problema central continua lá. Em workflows sensíveis, você precisa combinar Redact com uma etapa de sanitização de metadados antes de subir a imagem em qualquer lugar.
Como limpar EXIF no terminal (Linux/macOS)
# Usando exiftool — instalação: brew install exiftool | apt install libimage-exiftool-perl
# Remove TODOS os metadados, mantendo apenas o essencial
exiftool -all= -overwrite_original imagem_redatada.jpg
# Verifica o que sobrou
exiftool imagem_redatada.jpg
# Se quiser apenas remover GPS (manter modelo e timestamp):
exiftool -gps:all= imagem_redatada.jpg
No Windows, o equivalente nativo PowerShell não é confiável para JPEG EXIF — use ExifTool ou libvips. Em pipelines automatizados de documentação, eu rodo exiftool -all= em todo anexo antes de commitar no repo de docs.
Fazendo redaction no código: quando o Google Photos não basta
Existem cenários em que o Redact do Google Photos simplesmente não atende:
- Você precisa automatizar a redaction em lote (CI, scripts de QA).
- Você quer borrar dinamicamente conforme OCR detecta padrões (PII, tokens, e-mails).
- Você precisa de real redaction — não borramento visual reversível.
Borramento Gaussian é reversível em vários cenários. Existem papers que recuperam imagens borradas com mosaic via técnicas de super-resolution. Para compliance sério (LGPD, HIPAA, GDPR), o correto é opaco: pintar a região com cor sólida, ou — no caso de PDFs — substituir pelo stream de caracteres em branco.
Script Python: redação automática com OCR + OpenCV
Esse snippet detecta e-mails e tokens JWT em uma screenshot e pinta um retângulo opaco sobre eles. Útil para pipelines de documentação automatizada.
import cv2
import numpy as np
import pytesseract
import re
from pathlib import Path
# Padrões sensíveis comuns em screenshots de dev
PATTERNS = [
re.compile(r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}'), # e-mail
re.compile(r'eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+'), # JWT
re.compile(r'sk-[A-Za-z0-9]{20,}'), # OpenAI API key
re.compile(r'AKIA[0-9A-Z]{16}'), # AWS Access Key
re.compile(r'\b\d{3}\.?\d{3}\.?\d{3}-?\d{2}\b'), # CPF
]
def is_sensitive(text: str) -> bool:
return any(p.search(text) for p in PATTERNS)
def redact_image(input_path: str, output_path: str) -> int:
img = cv2.imread(input_path)
if img is None:
raise FileNotFoundError(input_path)
# OCR com bounding boxes
data = pytesseract.image_to_data(img, output_type=pytesseract.Output.DICT)
count = 0
n = len(data['text'])
for i in range(n):
word = data['text'][i].strip()
if not word or not is_sensitive(word):
continue
x, y, w, h = data['left'][i], data['top'][i], data['width'][i], data['height'][i]
# Expande um pouco para pegar dígitos adjacentes
pad = 4
x0 = max(0, x - pad)
y0 = max(0, y - pad)
x1 = min(img.shape[1], x + w + pad)
y1 = min(img.shape[0], y + h + pad)
# OPAQUE: pinta com preto sólido, não Gaussian
cv2.rectangle(img, (x0, y0), (x1, y1), (0, 0, 0), thickness=cv2.FILLED)
count += 1
cv2.imwrite(output_path, img)
return count
if __name__ == '__main__':
redacted = redact_image('dashboard.png', 'dashboard_safe.png')
print(f'{redacted} regiões sensíveis opacificadas')
# Próximo passo no pipeline:
# subprocess.run(['exiftool', '-all=', 'dashboard_safe.png'])
Combine isso com exiftool -all= no final e você tem um pipeline de redaction decente para anexar no seu Makefile ou GitHub Actions.
Erros comuns que devs cometem ao redatar imagens
- Borrar e compartilhar imediatamente. Esquecer que o EXIF ainda carrega GPS e timestamp. Em docs internas isso é OK; em prints públicos, é leak gratuito.
- Confiar em Gaussian blur para compliance. Para LGPD/GDPR, blur não é redação válida. Use opaco (preto sólido ou remoção real do conteúdo). Ferramentas profissionais como Adobe Acrobat Pro e Foxit têm “Redact” que substitui o conteúdo subjacente.
- Borrar só o número do cartão. Esquecer que o nome e a validade também são PII. Mapeie todas as colunas sensíveis antes de marcar regiões.
- Esquecer abas e barras do navegador. Prints fullscreen capturam URL bar, extensões e notificações. Capture com janela focada ou recorte antes de compartilhar.
- Redatar em JPEG já comprimido. Borramento sobre JPEG de alta compressão deixa artefatos que podem ser explorados. Prefira PNG para redaction, depois comprima se necessário.
- Compartilhar a versão errada. Sério: já vi incidente onde o dev mandou a versão sem redact por engano. Padronize nomes:
login_redacted.png,login_FINAL.png. Usegit diffvisual se precisar.
Comparativo: Redact vs alternativas para devs
| Ferramenta | Tipo | Melhor para | Limitação |
|---|---|---|---|
| Redact (Google Photos) | Móvel, nativo | 1–5 screenshots por dia, fluxo rápido | Não remove EXIF, só mobile Android |
| Adobe Acrobat Pro Redact | Desktop, PDF-first | Documentos legais, compliance LGPD | Licença cara, overkill para screenshot |
| Skitch / Greenshot | Desktop, blur manual | Workflow rápido no desktop | Mesma fragilidade do borramento visual |
| Pipeline OCR + OpenCV (acima) | Automatizado | CI, docs automatizadas, alto volume | Custo computacional, falsos positivos |
| ShareX (Windows) com plugin | Desktop, extensível | Captura + upload + redact em um atalho | Curva de configuração |
A escolha certa depende de volume. Para um dev solo compartilhando 5 screenshots por semana, o Redact do Google Photos + exiftool -all= resolve. Para um time de 20 engenheiros documentando uma plataforma B2B, automatize.
FAQ — Perguntas que devs realmente fazem
O Redact do Google Photos remove metadados EXIF?
Não. A ferramenta opera apenas sobre o canvas visual. Para remover GPS, modelo e timestamp, use exiftool -all= ou strip no ImageMagick como etapa adicional.
Borramento com Redact é seguro para LGPD/GDPR?
Para compartilhamento informal e mascaramento visual, sim. Para conformidade jurídica formal, prefira redação opaca (preenchimento sólido sem pixels subjacentes) e mantenha trilha de auditoria do que foi removido.
Funciona em iOS?
A distribuição inicial é Android. Se você está no ecossistema Apple, o Markup nativo do iOS ainda não tem equivalente — use app de terceiros (TouchRetouch, Sketchbook) ou pipeline Python descrito acima.
Posso automatizar o Redact no Android?
Não diretamente — não há API pública. Para automação, use a stack OCR + OpenCV que mostrei, ou serviços como Cloud Vision API + Image Processing no GCP, que detecta texto e devolve bounding boxes prontos para mascarar.
O borramento é reversível?
Borramento visual (Gaussian, mosaic) é tecnicamente reversível em vários cenários com modelos modernos de super-resolution. Para redaction real e irreversível, sempre opte por preenchimento opaco com cor sólida — é o padrão de mercado.
Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto — posso expandir o script Python para incluir detecção de QR codes e placas de carro no próximo post.