anúncios

segunda-feira, 1 de fevereiro de 2021

Configurando servidor de arquivos com Python

O que é HTTP Server?

HTTP HypertText Transfer Protocol. Vamos pensar em um protocolo como um idioma qualquer de lingua nativa do seu país de origem ou secundário. Cada idioma tem um conjunto de regras e vocabulário. Portanto, se duas ou mais pessoas entender as regras e o vocabulário de um idioma, pode-se comunicar no idioma de maneira eficaz.

Assim como os seres humanos, os dispositivos eletrônicos tambémm se comunicam entre si. Eles, portanto, precisam de um "conjunto de regras e vocabulário" para transmitir e receber ativamente informações uns dos outros.

Um protocolo é um conjunto padrão de regras que facilita a comunicação bem-sucessida entre dispositivos eletrônicos. Esses conjuntos de regras mutuamente aceitas e implementas incluem os comandos usados para iniciar o envio e a recepção de dados, os tipos de dados a serem transmitidos entre os dispositivos, como detectar erros nos cabos, como as transferências de dados bem-sucessidas são confirmadas e muito mais.

Por exemplo, quando você executa uma pesquisa simples usando um navegador, há dois sisemas essenciais envolvidos. O cliente HTTP e o servidor HTTP.

O cliente, comumente referido como navegador, como Google Chrome ou Firefox, mas também pode ser tão simples quanto um aplicativo CLI. O cliente envia sua solicitação ao servidor, que processa as solicitações HTTP e fornece uma resposta ao cliente. No caso de navegadores, a resposta normalmente é uma página HTML.

Módulo SimpleHTTPServer do Python

Quando você precisa de um servidor web rápido em execução, configurar um servidor de nível de produção é uum exagero.

O módulo SimpleHTTPServer do Python é uma ferramenta de economia de trabalho que você pode aproveitar para transformar qualquer diretório em seu sistema em um servidor web descomplicado. Ele vem com uum servidor HTTP simples que oferece manipuladores de solicitação GET e HEAD padrão.

Com um servidor HTTP embutido, você não precisa instalar ou configurar nada para ter seu servidor web instalado e funcionando.

OBS: O módulo Python SimpleHTTPServer foi incorporado ao módulo http.server em Python 3, mas se você estiver usando Python 2, pode trocar http.server por SimpleHTTPServer e funciona de ambos os casos.

Inicializar o HTTPServer no Python

A maneira mais simples de iniciar um servidor web que atende ao diretório no qual o comando é executado, simplesmente acesse até o diretório onde tem os arquivos e execute no terminal:

Python 2
$ python -m SimpleHTTPServer 8000

Python 3
$ python3 -m http.server 8000

No browser na máquina local acesse http://localhost:8000

Para acessar de outra máquina da rede interna http://IPSERVIDOR:8000

Conclusão

A linguagem Python nos fornece o módulo SimpleHTTPServer que pode ser usado para servir arquivos de forma rápida e fácil de um diretório local via HTTP. Isso pode ser usado para tarefas internas, mas não recomendado utilizar em ambiente de produção.

Feito!

segunda-feira, 18 de janeiro de 2021

Monitorando a temperatura do processador no Linux

Se quiser monitorar a temperatura do processador no Linux, devido o barulho feito pela ventoinha da CPU. Nesse howto é apresentado uma ferramenta que permite monitorar a temperatura do processador e outros componentes do computador com o lm-sensors.

Instalando e utilizando o lm-sensors no Debian e derivados (Ubuntu)

$ sudo apt update
$ sudo apt install lm-sensors

Com o lm-sensors instalado, precisa configurar respondendo algumas perguntas sobre o que você gostaria de monitorar. Se optar pelo padrão, tecle ENTER nas perguntas solicitadas.

$ sudo sensors-detect

Após o passo anterior, execute o comando a seguir para exibir as informações sobre a temperatura de saída no formato Celsius.

$ sudo sensors

Caso queira obter leitura de temperatura em Fahrenheit, execute o comando a seguir.

$ sudo sensors -f

Para não precisar ficar executando o comando toda vez que queira obter temperatura, mas sim em tempo real, execute o comando a seguir.

$ sudo watch sensors

Também é possível fazer o monitoramento da temperatura do processador por meio da interface gráfica. Para isso, instale o Psensor.

$ sudo apt install psensor

Feito!

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!