anúncios

sábado, 16 de janeiro de 2021

Reconhecendo caracteres em imagens com Tesseract

O que é Tesseract?

É um software de reconhecimento ótico de caracteres de código aberto com Licença Apache 2.0, originalmente desenvolvido pela Hewlett-Packard e foi por um tempo mantido pelo Google. Se aplica a imagens em formato tiff com texto puro em uma única coluna, convertendo a saída em um arquivo txt. Não possui mecanismos para reconhecimento de layout, desta forma não é recomendável para textos que possuam imagens, fórmulas ou mais de uma coluna.

Instalando o tesseract-ocr no Debian, Ubuntu e derivados

$ sudo apt install imagemagick graphicsmagick-libmagick-dev-compat exactimage tesseract-ocr

Convertendo um imagem "teste.jpg" para texto

Na imagem deve ter letras, números ou uma combinação de letras e números para o tesseract fazer a leitura e extrair o resultado.

No diretório onde está a imagem com texto, execute o comando abaixo.

# tesseract teste.jpg -psm 8 output.txt

Integrando o tesseract-ocr em um sistema em PHP

Com o ambiente PHP configurado, pode ser adicionado a lib tesseract-ocr via composer.

Após instalar o tesseract-ocr e realizado os testes de captura de texto de uma imagem pelo terminal, execute no diretório do projeto.

$ composer require thiagoalessio/tesseract_ocr

Uso básico na prática com PHP


<?php
require_once "vendor/autoload.php";

use thiagoalessio\TesseractOCR\TesseractOCR;

   echo (new TesseractOCR('imagens/teste.png'))->run();


Demais exemplos de como utilizar a lib TesseractOCR no PHP, use a referência [2].

Referências


[1] https://github.com/tesseract-ocr/tesseract

[2] https://github.com/thiagoalessio/tesseract-ocr-for-php

Feito!

segunda-feira, 11 de janeiro de 2021

Conhecendo o Signal

O que é Signal?

O Signal é um aplicativo de software livre e de código aberto (FOSS) para Android, iOS, e Desktop que faz uso de criptografia de ponta a ponta, permitindo que os usuários enviem mensagens de grupo, texto, imagens, áudio e vídeo, encriptadas de ponta a ponta e que também façam chamadas telefônicas encriptadas entre usuários do Signal. Apesar de o Signal usar números telefônicos como contatos, as chamadas e mensagens criptografas utilizam a conexão de dados de internet, por isso, é preciso que ambos os participantes tenham acesso à internet em seus celulares. É por essa razão que os usuários do Signal não pagam taxas de SMS e MMS. No Android, o Signal pode substituir seu aplicativo padrão de troca de mensagens. Isso significa que ainda é possível enviar mensagens SMS desencriptadas por meio do Signal. No entanto, as mensagens SMS desencriptadas poderão ser cobradas pela operada, tal como definido no seu plano de dados.

Instalando o Signal no smartphone (Android)

  1. No seu smartphone Android, abre o Google Play Store e pesquise por "Signal". Encontre o aplicativo "Signal Private Messenger" e clique em "Instalar". Uma vez instalado, clique em abrir.
  2. Uma vez que o app esteja aberto, o Signal poderá pedir permissão para acessar sua lista de contatos e seus arquivos de mídia. Segue as etapas de permissões solicitadas. Por fim, informe o seu número do celular com código do país (BR - 55+) juntamente o DDD do seu estado e seu número de celular.
  3. Informe o código encaminhado por SMS ou permite que o Signal leia o código automaticamente.
  4. Coloque o seu nome e imagem de perfil

Referências

https://signal.org/

Feito!

terça-feira, 5 de janeiro de 2021

Habilitando o comando sudo no Debian

O que sudo ?

O comando sudo do sistema Linux permite a usuários comuns obter privilégios de outro usuário, em geral o super usuário, para executar tarefas específicas dentro do sistema de maneira segura e controlável pelo administrador.

No Ubuntu o comando sudo já vem habilitado no usuário regular por padrão. No Debian não vem com o comando sudo instalado, no entanto é necessário logar diretamente como root primeiramente para executar tarefas administrativas no terminal, mas quando a máquina é compartilhada com alguns usuários que precisam executar comandos administrativos e você não quer fornecer o password de root, nesse caso entra o sudo, o qual pode configurar os comandos administrativos ao usuário regular.

Instalando o sudo

$ su -
# apt update
# apt install sudo


Habilitar o sudo ao usuário

# adduser seu-usuario -G sudo

Adicionar os usuários e comandos administrativos permitidos aos respectivos usuários.

# vim /etc/sudoers
seu-usuario ALL=(ALL:ALL) ALL
usuario2 ALL=(root) /bin/systemctl restart NetworkManager
usuario3 ALL=(ALL) /bin/systemctl restart apache2
ESC + :x (salvar e sair do editor Vim)

Feito!

segunda-feira, 4 de janeiro de 2021

Configurando Port Knocking no SSH

Mesmo ter alterado a porta default do SSH. Ainda é possível facilmente fazer a varredura de intervalos de portas para descobrir essa porta, mas com Port Knocking, você pode enganar os scanners de porta. Assim antes de conectar via SSH é necessário antes conectar a uma sequência de portas para poder desbloquear a porta especifica utilizada no SSH, que permite a conexão. Dessa forma é mais seguro e simples de implementar, com isso protege o seu servidor de tentativas de conexão SSH não autorizadas.

O objetivo deste howto é explicar a configuração do Port Knocking na distro Debian, mas pode ser feita no Ubuntu também.

Instalando os pacotes necessários

$ sudo apt update
$ sudo apt install openssh-server
$ sudo apt install knockd

Configurando a regra Iptables na porta SSH e Port Knocking

bloqueia-port-ssh.sh
#!/bin/bash
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP

$ chmod +x bloqueia-port-ssh.sh
# ./bloqueia-port-ssh

Configurar o Port Knocking

# vim /etc/knockd.conf
[openSSH]
sequence = 7001,8001,9001
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn

Nesta seção, voce pode alterar a sequência de portas que precisam ser acionadas. Para esse exemplo, foi utilizado as portas 7001, 8001, 9001. Altere o seq_timeout = 5 para seq_timeout = 10, e para a seção cloneSSH, faça o mesmo para a linha seq_timout. Também há uma linha de sequência na seção closeSSH que você também precisa modificar.

Habilitar e inicializar o serviço knockd

# vim /etc/default/knockd

Altere de 0 na seção START_KNOCKD para 1

Iniciliza o serviço knockd

# service knockd start

Muito bem está instalado e configurado o Port Knocking. Agora para conectar no SSH, é necessário enviar pacotes nas portas definidas, nesse caso 7001,8001 e 9001.

$ telnet IPSERVIDOR 7001
$ telnet IPSERVIDOR 8001
$ telnet IPSERVIDOR 9001

Por fim, conecte no SSH

$ ssh usuario@ipservidor -p port

Para fechar o SSH, execute:

$ telnet IPSERVIDOR 9001
$ telnet IPSERVIDOR 8001
$ telnet IPSERVIDOR 7001

Feito!

domingo, 3 de janeiro de 2021

Conhecendo o FFmpeg

O que é FFmpeg?

FFmpeg é uma ferramenta de linha de comando gratuita e de código aberto para transcodificar arquivos multimídia. Incluindo o conjunto de bibliotecas compartilhadas de áudio e vídeo, como libavcodec, libavformat e libavutil. Com o FFmpeg, você pode converter formatos de vídeo e áudio, definir taxas de amostragem e redimencionar vídeos.

O presente tuturial explica como instalar o FFmpeg na distro Debian e serve também para os derivados do Debian, como o Ubuntu, e exemplos para converter arquivos de áudio e vídeo.

Instalando o FFmpeg no Debian e derivados

Primeiramente, atualizar a lista de repositório do sistema

$ sudo apt update

Próxima etapa é instalar via gerenciador de pacotes do Debian e derivados

$ sudo apt install ffmpeg

Verificar a versão do FFMpeg instalada

$ ffmpeg -version

Para exibir os encoders e decoders do FFmpeg

$ ffmpeg -encoders
$ ffmpeg -decoders

Convertendo arquivo de áudio e vídeo

Após instalar o FFmpeg, veremos alguns exemplos para converter arquivos de vídeo e áudio.

Ao converter arquivo de áudio e vídeo com FFmpeg, você não precisa especificar os formatos de entrada e saída. O formato do arquivo de entrada é detectado automaticamente e o formato de saída é calculado a partir da extensão do arquivo.

Converter um arquivo de vídeo .mp4 para .webm

$ ffmpeg -i input-file.mp4 output-file.webm

Converter um arquivo de áudio .mp3 para .ogg

$ ffmpeg -i input-file.mp3 output-file.ogg

Especificando codecs

Ao converter arquivos, você pode especificar os codecs que deseja usar com a opção -c. O codec pode ser o nome de qualquer decodificador ou codificador compatível ou uma cópia de valor especial que simplesmente copia o fluxo de entrada.

Convertendo um arquivo de áudio .mp4 para .webm usando o codec de vídeo libvpx e codec de áudio libvorbis

$ ffmpeg -i input-file.mp4 -c:v libvpx -c:a libvorbis output-file.webm

Convertendo um arquivo de áudio .mp3 para .ogg codificado com o codec libopus

$ ffmpeg -i input-file.mp4 -c:a libopus output-file.ogg

Convertendo URL RTSP Live stream para HLS

Se você quer exibir uma live RTSP para um browser, você pode fazê-lo transcodificando-o para HLS. Você pode usar o FFmpeg para fazer isso.

$ ffmpeg -fflags nobuffer \
-rtsp_transport tcp \
-i <sua URL RTSP> \
-vsync 0 \
-copyts \
-vcodec copy \
-movflags frag_keyframe+empty_moov \
-an \
-hls_flags delete_segments+append_list \
-f segment \
-segment_list_flags live \
-segment_time 0.5 \
-segment_list_size 1 \
-segment_format mpegts \ -segment_list <diretório-destino>/index.m3u8 \
-segment_list_type m3u8 \
-segment_list_entry_prefix <diretorio-destino>/ \
<diretorio-destino>/%3d.ts

Depois de executar este comando, você encontrará o arquivo index.m3u8 junto com vários .ts (arquivos de segmento) no diretório destino que especificou no comando. O index.m3u8 é o arquivo playlist e os arquivos .ts são os fragmentos. Você precisa servir esses arquivos usando um servidor HTTP (Apache, Nginx ou qualquer outro). Para exibir este vídeo em um navegador, você precisa incluir este arquivo index.m3u8 na tag de vídeo em sua página HTML, conforme o exemplo abaixo.

<video id="video-player" controls preload="none"> <source src="/diretorio-destino/index.m3u8" type="application/x-mpegURL"> </video>

Uma vez feito isso, acesse até a página HTML do seu navegador, você será capaz de ver a transmissão ao vivo no Windows, Linux e macOS, sem nenhum plugin.

No diretorio-destino é o DocumentRoot que corresponde o diretório do servidor HTTP, no caso do Apache e Nginx, o DocumentRoot default é /var/www/html. Caso tenha diversos vídeos a ser transmitidos ao vivo para os usuários (clientes) acessarem no navegador, uma sugestão é criar dois diretórios a partir do DocumentRoot default, o primeiro sendo lives e o segundo sendo o titulo da live correspondente.

Ex: /var/www/html/lives/titulolive. Esse seria o diretório destino que poderia especificar no comando para converter RTSP para HLS. Assim no navegador, os usuários (clientes) podem acessar: https://dominio.com/lives/titulolive

Conclusão

Você instalou com sucesso o FFmpeg no Debian ou Ubuntu. Agora você pode acessar a página de documentação oficial do FFmpeg e aprender como usar o FFmpeg para converter seus arquivo de vídeo e áudio.

Como bônus aprendeu como converter URL RTSP para HLS usando FFmpeg e exibir na página web.

Feito!

quarta-feira, 16 de dezembro de 2020

Conhecendo o xrandr

O que é xrandr?

O xrandr é uma ferramenta de linha de comando para configuração de resoluções do monitor com base da placa de vídeo que tiver instalado no computador com Linux (Debian/Ubuntu).

Uso do xrandr

Para listar as resoluções permitidas que a placa de vídeo suporta

$ xrandr

Para poder utilizar uma resolução que não está listada no resultado do comando anterior. Antes precisa informar ao xrandr que é necessário calcular as coordenadas da tela e passar mais informações para criar o novo modo.

$ cvt 1920 1080 60

Aqui foi informado que pretende as informações para a resulão de 1280 horizontal, 800 vertical a 60hz.

1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

Para habilitar automaticamente

$ xrandr --auto

Para adicionar uma resolução com base do cvt

Após adicionar a resolução não listada no cvt, pode-se adicionar esse modo de resolução ao xrandr. A parte que interessa para o xrandr é a que vem após o "Modeline".

$ xrandr --newmode "1280x800_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

Não deve retornar nenhuma mensagem no terminal, caso esteja correto. Se retornar, reveja os procedimentos anteriores.

Para adicionar uma resolução

$ xrandr --addmode LVDS-1 1920x1080_60.00

Para alterar uma resolução

$ xrand --mode 1280x768

$ xrandr --output LVDS-1 --mode 1920x1080_60.00

Feito!

sexta-feira, 11 de dezembro de 2020

Conhecendo o Inxi

O que é Inxi?

Inxi é uma ferramenta que mostra informações de hardware,incluindo fornecedor, configuração de drivers, etc do computador com sistema operacional Linux.

Instalação do Inxi

Debian/Ubuntu

$ sudo apt install inxi

Algumas opções do inxi

  • -A: informações sobre áudio.
  • -b: informações básicas sobre o sistema.
  • -d: exibe lista dos drives ópticos (leitor e gravador de CD, DVD por exemplo).
  • -D: exibe informações sobre detalhes do HD, como modelo e capacidade.
  • -F: informações mais detalhadas sobre o sistema.
  • -G: informações sobre vídeo.
  • -n: informações sobre as interfaces de rede.
  • -p: informações sobre as partições do HD.

Com o inxi instalado, utilize uma das opções mencionadas.

$ inxi -F

Feito!