Boa noite pessoal, hoje irei postar como monitorar chamadas NET por e-mail, desse modo podemos saber se alguém ligou para nossa casa mesmo estando na rua.

O painel administrativo do modem NET se encontra em 192.168.100.1, em seu painel administrativo contamos com um usuário e uma senha ‘admin’ e ‘motorola’, analisando as requisições da página:

net11

Como visto a requisição é feita por GET e contém redirecionamentos, podemos fazer um cross da página se auto-autenticar e capturar os dados por outra linguagem.

Vendo o form podemos adicionar os values em USER e PASSWORD, chamamos por javascript e redirecionamos depois pelo META do html.

$service apache2 start

$nano web.html

$chmod 755 web.html

net2

<meta http-equiv=”refresh” content=”1; url=http://192.168.100.1/mtaLogsData.htm”>

<FORM action = “http://192.168.100.1/loginData.htm” method = “GET” name=”acesso” id=”acesso” target=”logado” hidden=”hidden”>
<CENTER>
<TABLE align=center border=0 cellPadding=5 cellSpacing=0>
<TBODY>
<TR>
<TH bgColor=”#736b08″ colspan=2><FONT color=”#ffffff”>Login</FONT></TH>
</TR>
<TR>
<TD><B>Username</B></TD>
<TD><INPUT TYPE=TEXT SIZE=20 MAXLENGTH=20 NAME=”loginUsername” value=”admin”></TD>
</TR>
<TR>
<TD><B>Password</B></TD>
<TD><INPUT TYPE=PASSWORD SIZE=20 MAXLENGTH=20 NAME=”loginPassword” value=”motorola”></TD>
</TR>
<TR>
<TD colspan =2><CENTER><INPUT name=LOGIN_BUTTON TYPE=PASSWORD VALUE=”Login”></CENTER></TD>
</TR>
</TBODY>
</TABLE>
</CENTER>

</FORM>
<iframe name=”logado” id=”logado” hidden=”hidden”></iframe>
<h2>Executando cross</h2>
<script>

// autenticando
document.getElementById(‘acesso’).submit();

</script>

*Perceba que em nosso SUBMIT, o type teve que ser alterado para ele entrar na nossa validação por GET juntamente com USER e PASSWORD.

Conferindo pelo Browser, acessamos a página e somos autenticados e redirecionados para onde quisermos de forma automática.

Agora capturamos esses dados e filtramos com python.

$nano motorola.py

$chmod 755 motorola.py

net3

import urllib.request
import json
from pprint import pprint
import string
import requests
url = ‘http://localhost/cgi/web.html’
resp = urllib.request.urlopen(url).read()
url = ‘http://192.168.100.1/mtaLogsData.htm’
resp = urllib.request.urlopen(url).read()
print (resp)

No código pego todo o conteúdo da página em meu servidor, faço a leitura e sobrescrevo a variável.

Agora falta fazermos o filtro de todo conteúdo HTML e realizar testes vendo se o conteúdo da página muda conforme o LOG é gravado no modem.

Utilizando o BASH.

$python3 /var/www/html/cgi/motorola.py > /var/www/html/cgi/saidamotorola.txt && cut -d > -f 117 /var/www/html/cgi/saidamotorola.txt | cut -d -f 2 | cut -d < -f 1 | cut -d : -f 1,2 > /var/www/html/cgi/finalmotorola.txt

Executo o código e começo os cortes nas tags até chegar a uma localização fixa de horário em Horas e Minutos do último Log.

$recebe_hora_motorola=$(cat /var/www/html/cgi/finalmotorola.txt)

//recebo os dados

$recebe_hora_motorola2=$(cat /var/www/html/cgi/finalmotorola2.txt)

//em primeira instância recebe vazio

if test $recebe_hora_motorola != $recebe_hora_motorola2
then
php /var/www/html/cgi/email_motorola.php
recebe_hora_motorola2=$(cat /var/www/html/cgi/finalmotorola.txt > /var/www/html/cgi/finalmotorola2.txt)
echo $recebe_hora_motorola2
else
echo errado
fi

//por essa lógica ao final da captura, o outro arquivo recebe o valor passado pelo primeiro.

net4

Final do nosso bash onde o Cron vai dar conta, juntei todos os cortes pro código ficar mais visual.

#!/bin/bash
python3 /var/www/html/cgi/motorola.py > /var/www/html/cgi/saidamotorola.txt && cut -d ‘>’ -f 117 /var/www/html/cgi/saidamotorola.txt | cut -d ‘ ‘ -f 2 | cut -d ‘<‘ -f 1 | cut -d ‘:’ -f 1,2 > /var/www/html/cgi/finalmotorola.txt
recebe_hora_motorola=$(cat /var/www/html/cgi/finalmotorola.txt)
recebe_hora_motorola2=$(cat /var/www/html/cgi/finalmotorola2.txt)
echo $recebe_hora_motorola
echo $recebe_hora_motorola2
if test $recebe_hora_motorola != $recebe_hora_motorola2
then
php /var/www/html/cgi/email_motorola.php
recebe_hora_motorola2=$(cat /var/www/html/cgi/finalmotorola.txt > /var/www/html/cgi/finalmotorola2.txt)
echo $recebe_hora_motorola2
else
echo “errado”
fi

Agora instalando o ssmtp para podermos ativar a tag mail() do php e por linha de comando chama-lo.

$apt-get install ssmtp

$whereis ssmtp

Confira a linha: ssmtp: /usr/sbin/ssmtp /etc/ssmtp /usr/share/man/man8/ssmtp.8.gz

$nano /etc/ssmtp/ssmtp.conf

Config file for sSMTP sendmail
#
# The person who gets all mail for userids &lt; 1000
# Make this empty to disable rewriting.
root=SEU_ENDERECO_GMAIL
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
hostname= SEU_ENDERECO_GMAIL# Are users allowed to set their own From: address?
# YES – Allow the user to specify their own From: address
# NO – Use the system generated From: address
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser= SEU_ENDERECO_GMAIL
AuthPass= SEU_PASSWORD_GMAIL

$grep -ni sendmail_path /etc/php5/apache2/php.ini

$nano /etc/php5/apache2/php.ini
*Adicionar em sendmail_path da seguinte forma
sendmail_path = /usr/sbin/ssmtp –t

$service apache2 restart

Agora criamos um php para podermos mandar e-mail já que em python tem que ser liberação manual pelo e-mail alvo.

$nano email_motorola.php

$chmod 755 email_motorola.php

<?php
$to = “SEU EMAIL”;
$subject = “Telefone tocou em sua casa”;
$message = “Vc recebeu uma liga&ccedil;&atilde;o telefonica NET em sua casa “.date(DATE_RFC822).”<body><br>:)</br></body>”;
$header .= “Content-type: text/html; charset=iso-8859-1\n”;
//$header .= “From: Administrador3”;
mail($to,$subject,$message,$header);
echo “mensagem enviada”;
?>

Pronto, agora só adicionamos no cron, qualquer problema só alterando as permissões pra +x e ver nos logs.

Dica: Ultilize 2 e-mails diferentes, o de envio provavelmente receberá emails pelo ssmtp pelo cron.

$crontab -e

Adicionamos pra 5 em 5 minutos:

*/5 * * * * /var/www/html/cgi/motorola.sh

Resultado, toda vez que alguém ligar pra seu telefone NET, você recebe um e-mail.

cell

Link dos Códigos

Rodolfo

Rodolfo

Rodolfo Cr é Engenheiro da Computação, especialista em Pentester em aplicações e Proteção em Servidores Linux e programador em algumas Linguagens. Membro da Roothc com intuito de divulgar e acrescentar conhecimento na área da computação com foco em segurança da informação.
Rodolfo

Latest posts by Rodolfo (see all)

  • Romulo_Ctba

    Orra, que maneiro isso, eu vou tentar na casa de alguém hehe

  • cliente

    Rodolfo, sabe informar se esta situação seria possível caso o modem fosse o Cisco DPC3928S? Estou interessado em gerar um log das ligações realizadas/recebidas e respectivas durações, mas aqui o aparelho é este Cisco. Obrigado.