+ Responder ao Tópico



  1. #1

    Padrão capiturar pagina do clientes e conferir(mac, ip e etc)

    Bom dia pessoal!


    Trabalhamos em dois provedores de internet Wireless.

    Estamos migrando o gerenciamento dos cientes para php+mysql.

    (Gerenciamentos do php+mysql)

    • Iptables.
    • Capitura de pagina inicial (login e senha no BD mysql)
    • Redirecionamentos de pagina de inadimplentes.
    • Pagamentos.



    Estamos querendo pegar alem do IP do cliente, (cadastrado em nosso Gatware junto com a MAC), também outras informações se possível (HD ou Nº Bios, etc).

    Estamos já incrementando os seguintes script para pegar a mec e o ip do arp e coferir com BD jonto com login:

    Caso alguém queira avalia.

    teste.php
    .........................................................................................................
    <?php
    $ip = $_SERVER['REMOTE_ADDR'];

    if ($ip){
    $saida = trim(shell_exec("sudo arp -n | grep $ip | awk '{print $3}'"));

    echo "$ip";
    echo "$saida";
    }
    else {
    echo "Erro";
    }
    ?>


    Exemplo imprimido: 00:02:02:02:AF:3E

    .......................................................................................................

    Lembramos que, tem que ter permissões para esses aplicativos no linux.


    apache ALL=NOPASSWD:/usr/sbin/iptables, /bin/sed, /sbin/arping, /usr/bin/awk, /s
    bin/arp, /usr/bin/grep
    nobody ALL=NOPASSWD:/usr/sbin/iptables, /bin/sed, /usr/bin/awk, /usr/bin/awk, /s
    bin/arp, /usr/bin/grep

    É possível nos pegar outras informações do clientes em nosso gatware com php?

  2. #2

  3. #3

    Padrão Já fiz isso Francisco

    Mas a questão de pegar o Serial do HD por exemplo vc vai precisar de um programa para poder enviar isso.
    Existe uma forma de vc dah um ARP e ver se o cliente está somente conectado, transmitido ou se está lento.
    Na tabela do MySql vc visualiza os status e fica até melhor de vc se basear de como estão os seus clientes.

  4. #4

    Padrão

    Citação Postado originalmente por Logica Ver Post
    Mas a questão de pegar o Serial do HD por exemplo vc vai precisar de um programa para poder enviar isso.
    Existe uma forma de vc dah um ARP e ver se o cliente está somente conectado, transmitido ou se está lento.
    Na tabela do MySql vc visualiza os status e fica até melhor de vc se basear de como estão os seus clientes.

    ja estou com esse script funcionado.
    ele verifica se o (ip, mac) que está na placa do cliente confere com o do cadastros.
    <?php
    $UserName = $_POST['login'];
    $Value = $_POST['senha'];
    include("conf.php");
    $db = mysql_connect ($host, $login_db, $senha_db);
    $basedados = mysql_select_db($database);
    $resultado = mysql_query("SELECT * FROM radreply WHERE UserName='$UserName'") or print (mysql_error());
    while($linha = mysql_fetch_array($resultado)){
    $idbanco = $linha["id"];
    $UserNamebanco = $linha["UserName"];
    $Valuebanco = $linha["Value"];
    $ipbanco = $linha["ip"];
    $macbanco = $linha["mac"];
    $etherbanco = $linha["ether"];
    $bandabanco = $linha["banda"];
    }
    if($UserNamebanco == $UserName AND $Valuebanco == $Value){
    // echo "próximo passo, conferir mac do sistema com mac do arp";
    }
    else{
    echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login2.php'><script type=\"text/javascript\">alert(\"Erro: Usuário ou senha
    inválidos!\");</script>";
    }
    $ippc = $_SERVER['REMOTE_ADDR'];
    if($UserNane = 1){
    $macpc = trim(shell_exec("sudo arp -n | grep $ippc | awk '{print $3}'"));
    }
    if($ipbanco == $ippc AND $macbanco == $macpc){
    echo "confere <br>";
    echo "Seu Ip: $ipbanco<br>";
    echo "$macbanco";
    }
    else {
    echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login2.php'><script type=\"text/javascript\">alert(\"Erro: Seu ip ou mac que es
    tá na placa não confere, suporte: 3423-3939 \");</script>";
    }

    ?>

    vou agora criar o arquivo para execultar as regras de IPTABLES.

  5. #5

    Padrão

    Lembre-se nas regras vc vai ter que exibir as 3 mensagens a Anatel quer.
    Vc não pode simplesmente negar a autenticação.

    Dica: Crie regras dinamicas, não re-escreva as regras totalmente. Eu re-escrevia todas as regras antes, quando o provedor tem poucos assinantes funciona blz, mas quando vc está contabilizando tráfego, regras particulares para bloqueio de sites, horas que o assinante pode conectar e mais uma porrada de coisa ai fica lento pra dedeu a recarga

  6. #6

    Padrão

    Citação Postado originalmente por Logica Ver Post
    Lembre-se nas regras vc vai ter que exibir as 3 mensagens a Anatel quer.
    Vc não pode simplesmente negar a autenticação.

    Dica: Crie regras dinamicas, não re-escreva as regras totalmente. Eu re-escrevia todas as regras antes, quando o provedor tem poucos assinantes funciona blz, mas quando vc está contabilizando tráfego, regras particulares para bloqueio de sites, horas que o assinante pode conectar e mais uma porrada de coisa ai fica lento pra dedeu a recarga

    então será melhor eu levantar todas as regras dos clientes com redirecionar.
    ex.: " iptables -t nat -A PREROUTING -p tcp -s $ippc --dport 80 -j DNAT --to-destination 10.110.5.1:82 "

    Ai quando o cliente se logar, retira a regras com (D) no iptables.


    #################################
    <?php

    // script criado por: Soares silva
    // email: [email protected]
    // tipo: auteticação
    //ver.: 1.0
    //

    $UserName = $_POST['login'];
    $Value = $_POST['senha'];

    include("conf.php");

    $db = mysql_connect ($host, $login_db, $senha_db);
    $basedados = mysql_select_db($database);

    $resultado = mysql_query("SELECT * FROM radreply WHERE UserName='$UserName'") or print (mysql_error());
    while($linha = mysql_fetch_array($resultado)){
    $idbanco = $linha["id"];
    $UserNamebanco = $linha["UserName"];
    $Valuebanco = $linha["Value"];
    $ipbanco = $linha["ip"];
    $macbanco = $linha["mac"];
    $etherbanco = $linha["ether"];
    $bandabanco = $linha["banda"];
    }
    if($UserNamebanco == $UserName AND $Valuebanco == $Value){
    // echo "próximo passo, conferir mac do sistema com mac do arp";
    }
    else{
    echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login2.php'><script type=\"text/javascript\">alert(\"Erro: Usuário ou senh
    a inválidos!\");</script>";
    }
    $ippc = $_SERVER['REMOTE_ADDR'];
    if($UserNane = 1){
    $macpc = trim(shell_exec("sudo arp -n | grep $ippc | awk '{print $3}'"));
    }

    if($ipbanco == $ippc AND $macbanco == $macpc){
    //libera o redirecionamento
    shell_exec("sudo /usr/sbin/iptables -t nat -D PREROUTING -p tcp -s $ippc --dport 80 -j DNAT --to-destination 10.110.5.1:82");
    }
    else {
    echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=login2.php'><script type=\"text/javascript\">alert(\"Erro: Seu ip: $ippc ou mac: $macpc que está na placa não confere, suporte: 3423-3939 \");</script>";
    }

    ###################################