BEM VINDO AO BLOG DO MARCOS CARRARO CRIADOR DO "CARRARO DASHBOARD". MUITO MAIS QUE UM SIMPLES BLOG.

segunda-feira, 28 de abril de 2014

C/C++ Função validar IP faz parte da Rede/Mascara

Buenas,

Segue uma pequena função em C/C++ que valida se o IP x esta na rede Y com a mascara Z.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

//---------------------------------------------------------------------
long ip2long(const char *ip,int mascara, const char *rede){
    int ip_host_long,ip_rede_long,maximo,retorno;

    // Converte o IP do HOST no modo long - clong
    ip_host_long = htonl(inet_addr(ip));
    // Converte o IP da REDE no modo long - min
    ip_rede_long = htonl(inet_addr(rede));

    // Definindo o maximo
    maximo = (ip_rede_long | ((1 << (32 - mascara)) -1));

// Validando
    if(ip_host_long > ip_rede_long && ip_host_long < maximo){
        // Faz parte da rede e da mascara
        retorno = 1;
    } else {
        // Nao faz parte da rede e da mascara
        retorno = 0;
    }

    return retorno;
}


//---------------------------------------------------------------------

int main()
{
    const char *ip;
    int mascara;
    const char *rede;

    mascara = 24;
    rede = "192.168.1.0";
    ip = "192.168.2.3";

    long ip_longo = ip2long(ip,mascara,rede);


    printf("%u\n", ip_longo);


    return 0;
}


Forte abraço
Marcos Carraro
Read More

quarta-feira, 16 de abril de 2014

Centos 6 x64 + php 5.3 + bcompiler Com exemplo de arquivo php

Buenas,

Vamos botar para quebrar com o Centos minimal 6 atualizado com o php 5.3 (http://www.php.net/manual/pt_BR/book.bcompiler.php) e também vamos compilar o módulo bcompiler (http://pecl.php.net/package/bcompiler) para criar arquivos binários do php.

Instalação

Entrar no diretório
# cd /usr/src/

Baixar o pacote mais atual
# wget http://pecl.php.net/get/bcompiler

Descompactar o arquivo
# tar -xvsf bcompiler

# cd bcompiler-1.0.2/

PHPIZE Prepara o ambiente para a compilação (http://php.net/manual/pt_BR/install.pecl.phpize.php)
# phpize

Procedimentos comuns para a compilação
# ./configure
# make

A propria extensão manda fazer um teste antes de compilar verdadeiramente
# make test
# make install

Feito isso e não teve nenhum erro show de bola terminamos a compilação e a instalação.

Ao terminar a compilação ele retorna a mensagem de concluído, e também o diretório onde foi gravado o arquivo no meu caso "/usr/lib64/php/modules/"

Vamos agora para a ativação da extensão no php.

# cd /etc/php.d/

# vim bcompiler.ini

Cole o seguinte conteudo

; Ativando a extensao do bcompiler
extension=bcompiler.so


Reiniciando o serviço httpd.

# service httpd restart


Exemplos

No meu caso vou estar utilizando os arquivos compilados pelo php para a linha de comando (http://php.net/manual/pt_BR/features.commandline.php), para obter mais desempenho.



<?php

// $fh é o arquivo de destino, onde vai ser gravado a compialação
// repare na extensao do arquivo não é mais php e sim phb
$fh = fopen("arq_src.phb", "w");
bcompiler_write_header($fh);
// $fh é o arquivo de origem onde tem o codigo php cru
bcompiler_write_file($fh, "arq_src.php");
bcompiler_write_footer($fh);
fclose($fh);

?>




Read More

sexta-feira, 11 de abril de 2014

Criando Fluxo em ASCII

Buenas,

Ta aqui uma baita ferramente que fazia falta, criar fluxo em modo texto para usar nos script.

http://asciiflow.com/

A ferramente é baseada na web e é muito fácil de usar, com isso monta-se os fluxos e depois cola no script indicando o que ele deve fazer.

Forte Abraços
Marcos Carraro
Read More

sexta-feira, 4 de abril de 2014

Linux Erro Disco - DRDY ERR UNC e ou {DRDY err}

Buenas,

Situação, um servidor com 6 discos de 1,5tb, do nada da um crash (Os discos estão em RAID para ter mais desempenho).

Ao ligar, imagina o retorno....
  {DRDY err} do sata1....

Um simples fsck não tava resolvendo meu problema, até que veio os velhos tempos do slackware, o dino deixou algumas coisas legais...

Então, nada melhor que rodar o e2fsck

# e2fsck -f -c -v -y /dev/md0

No meu caso o /dev/md0 é o raid, mas pode usar o seu disco /dev/sda1....

Após 19Horas, o servidor voltou a vida a todo vapor.

Boa Sorte se não precisarem ocupar o comando, se tiverem que utilizar tomara que de retorno.

Forte quebra costelas,
Marcos Carraro.
Read More

quinta-feira, 3 de abril de 2014

NMAP vs CONFICKER

É velho, mas ainda existe, e por causa dele, fiquei numa blacklist.

Solução.

#sudo nmap -sC --script=smb-check-vulns --script-args=safe=1 -p445  -d -PN -n -T4  --min-hostgroup 256 --min-parallelism 64  -oA conficker_scan 192.168.1.0-254 > conficker

Na máquina atualizar o XP para o SP3, aplicar os FIX, e também http://brazil.kaspersky.com/recursos/combater-conficker 

O legal do NMAP é que o retorno dele é fácil detectar alguma máquina infectada.

Nmap scan report for 192.168.1.110
Host is up, received arp-response (0.0097s latency).
Scanned at 2014-04-03 16:32:49 BRT for 2s
PORT    STATE SERVICE      REASON
445/tcp open  microsoft-ds syn-ack
MAC Address: 00:1D:1A:03:6E:F8 (OvisLink S.A.)

Host script results:
| smb-check-vulns:
|   MS08-067: CHECK DISABLED (remove 'safe=1' argument to run)
|   Conficker: Likely INFECTED (by Conficker.C or lower)
|   regsvc DoS: CHECK DISABLED (add '--script-args=unsafe=1' to run)
|   SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add '--script-args=unsafe=1' to run)
|   MS06-025: CHECK DISABLED (remove 'safe=1' argument to run)
|_  MS07-029: CHECK DISABLED (remove 'safe=1' argument to run)
Final times for host: srtt: 9730 rttvar: 15146  to: 100000


Marcos Carraro
Read More

Mysql Usando CASE com WHERE com Coluna Virtual - ATUALIZADO

Buenas,

Muitas vezes precisamos montar uma coluna virtual no mysql somente para aquela consulta, onde devemos aplicar um filtro, sem ter que ir para a programação apenas no banco para termos um desempenho melhor.

A situação.

Tabela Dias

Colunas
ID DIA HORA

Precisamos comparar alguns valores se estiverem OK retornar 1 caso contrário retornar 0

select
    ID,
   @DiaValido := (CASE WHEN (DAYOFWEEK(NOW()) = '7' && a.dia = '7')&&(DAYOFWEEK(NOW()) = '7' && b.dia = '1' ) THEN '1'
WHEN (DAYOFWEEK(NOW()) >= a.dia) && (DAYOFWEEK(NOW()) <= b.dia) then '1'
ELSE '0' END) as DiaValido
from
    Dias a,
   Dias b,
where @DiaValido = 1

Desta maneira conseguimos obter melhor desempenho, pois não vamos precisar programar, apenas fazendo a consulta no banco, ganhando assim mais performance.

Atualizando 03/04/2014 - 1058 .
A consulta anterior estava levando 2.15ms para retornar banco pequeno, máquina pequena.

Ao invés de criar uma Coluna Virtual (nome verdadeiro Variável), utilizei o parâmetro HAVING, com isso ganhei 0,20 ms de tempo, pensando em um banco maior, com mais registros....

select
    ID,
(CASE WHEN (DAYOFWEEK(NOW()) = '7' && a.dia = '7')&&(DAYOFWEEK(NOW()) = '7' && b.dia = '1' ) THEN '1'
WHEN (DAYOFWEEK(NOW()) >= a.dia) && (DAYOFWEEK(NOW()) <= b.dia) then '1'
ELSE '0' END) as DiaValido
from
    Dias a,
   Dias b,
HAVING DiaValido = 1

Forte quebra costelas
Marcos Carraro
Read More

terça-feira, 1 de abril de 2014

Site com os principais sites de AD Server (popups de propaganda chatos)

Buenas,

Segue link com uns 300 registros para bloquear no proxy assim melhorando as malditas propagandas.

http://pgl.yoyo.org/adservers/serverlist.php

Abraços
Marcos Carraro.
Read More

Posts que a turma mais esta lendo...

Posts que a turma mais esta lendo...

Marcos Carraro