sexta-feira, 6 de novembro de 2009

Ettercap ( Testes de segurança na rede )

Fala povo ! :D ... seguinte ... estava eu brincando com a rede aki em casa com o vmware ... resolvi testar umas coisas aki, acabei baixando um programinha chamado ettercap e wireshark ...

Tem bastante coisa q da p fazer com ele .. testar segurança da rede inclusive !


Você pode baixar o ettercap em: http://ettercap.sourceforge.net/download.php
EtterCap é um sniffer multi-propósito / Interceptor / Logger para LANs com switches.

Essa ferramenta ai ... suporta dissecação ativa e passiva de protocolos (até os cifrados/encapsulados) e inclui várias várias funcionalidades para análise de rede e de hosts .... tipo

Injeção de caracteres em conexões estabelecidas ,

Suporte ao SSH1... (pode sniffar Usuário e senha, mesmo através de uma conexão criptografada SSH1) ,

Suporte à HTTPS (vc pode sniffar dados http SSL, até mesmo se a conexão for feita por um PROXY) ,

Tráfego remoto através de GRE tunnel ( Você pode sniffar tráfego remoto passando através de um tunel GRE de um roteador Cisco remoto e fazer um ataque mitm (man in the middle) no roteador.)

PPTP broker: Você pode fazer ataques mitm contra dados tunalados por PPTP.

Coletor de password para: TELNET, FTP, POP, RLOGIN, SSH1, ICQ, SMB, MySQL, HTTP, NNTP, X11, NAPSTER, IRC, RIP, BGP, SOCKS 5, IMAP 4, VNC, LDAP, NFS, SNMP, HALF LIFE, QUAKE 3, MSN, YMSG.

Filtro de pacotes / dropador de pacotes: Você pode configurar um filtro de pacotes para procurar uma string em particular (até mesmo hex) no conteúdo dos pacotes TCP e UDP e substituir uma string por uma especificada por você ou simplesmente dropar o pacote todo.

Identificação de Sistema Operacional: Você pode fazer o fingerprint do SO do host vítima ou até mesmo da sua interface de rede.

Terminar uma conexão: A partir de uma lista de conexões, você pode terminal qualquer conexão que você queira.

Scanner passivo da LAN: Você pode conseguir informações sobre: os hosts que estão na LAN, porta abertas, versão de serviços, tipo de host (gateway, roteador ou um host simples) e a distância estimada em hops (saltos).

Checagem de outros atacantes: o ettercap tem a habilidade de, ativa ou passivamente, achar outros atacantes na LAN.

Vou examinar apenas algumas funcionalidades do ettercap, o resto é da sua imaginação.
O laboratório que eu montei tem a seguinte configuração:

o IP 192.168.0.1 é o Gateway padrão. Estarei usando um Cisco Catalyst 2900XL Switch (Ambiente com Switch).

Tem aki um video q mostra como q usa ele ... : http://www.milw0rm.com/video/watch.php?id=43
 e o melhor eim ... tem p windows e linux ....

(Fonte : drkmario.blogspot.com)

Fica ai a dica

;)

<h:inputTextarea> maxlength

É pessoal ... fui usar o tal do
   <h:inputTextarea>
... e precisava setar o maxlength e me deparei com um problema grave !!! ... não tem maxlength no   <h:inputTextarea> :( .
Pesquisei ... achei uma pancada de coisa falando para usar
   <f:validateLength maximum="4000" />
, mas mesmo assim nao funcionou como o esperado ! Tinha q mexer no arquivo de mensagem .. traduzir ... etc ... etc ... e como diria o tio san : time is money ! Ohhhhh yeah ! foi ai q resolvi usando uma coisa simples ... q a maioria dos desenvolvedores esquecem quando estão usando java ( esquece pq a maioria vai ficando louco com o tempo ! ) e usei o seguinte codigo :
   <h:inputTextarea onkeyup="this.value = this.value.substring(0, 4000);" />
funcionou tao bem q ate me escorreu uma lagrima de alegria ! hauehuaeh ...

então fica ai a dica ...
:D

Sistema com ambientes para o usuario usar como desktop

Pessoal .. outro dia estava me perguntando ... pq nao criar um sistema .. como c fosse um desktop online ... e a resposta foi : PQ EH MTO DIFICIL ! aaaa ... e eu ando meio sem tempo hauehusahaue ... mas blz ... enfim ... surgiu a oportunidade aki na empresa onde eu trabalho para estudar e criar um prototipo para servir de base para outros sistemas ... e eu ñ pude deixar de aproveitar a oportunidade ... e brincar um pouco ! auehuaehuae ...
Ai eu fiz um esquema para o usuario utilizar o sistema como c fosse akeles ambientes q o linux tem ... ( Usuarios windows ñ tao acostumados ... mas quebra um galhão !! )... estou postando o codigo .. fiz em flex , mais p frente eu posto o prototipo q eu fiz ... com Java( Hibernate )+Flex ! vlw !!!

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical"
    creationComplete="init();"
    horizontalAlign="center"
    verticalAlign="top"
    width="100%"
    height="100%"
    paddingLeft="0" paddingRight="0" paddingBottom="0" paddingTop="0"
    xmlns:flexmdi="flexmdi.containers.*"
    backgroundImage="@Embed('./imagens/abstract2.jpg')"
    >
    <mx:Script>
        <![CDATA[
            import view.configuracao.cadastros.cadastrodaclassedeequipamento.CadastroClasseEquipamento;
            import model.Usuario;
            import mx.events.CloseEvent;
            import mx.managers.PopUpManager;
            import view.login.Login;
            import view.configuracao.administrativo.cadastrodeusuario.CadastroUsuario;
            import view.configuracao.administrativo.cadastrodetipodeusuario.CadastroTipoUsuario;
            import flexmdi.managers.MDIManager;
            import flash.utils.getTimer;
            import mx.controls.Label;
            import view.configuracao.administrativo.cadastrodeusuario.CadastroUsuario;
            import view.configuracao.administrativo.cadastrodetipodeusuario.CadastroTipoUsuario;
            import flexmdi.effects.effectsLib.MDIVistaEffects;
            import flexmdi.containers.MDIWindow;
            import mx.events.MenuEvent;
            import flexmdi.containers.MDICanvas;
            import mx.controls.TextInput;
            import mx.controls.Text;
            import mx.controls.Alert;
            import mx.controls.Button;
            import mx.collections.ArrayCollection;
            import mx.controls.List;
            import mx.containers.Canvas;
   
            private const MIN_MASK:String = "00";
            private const SEC_MASK:String = "00";
            private const HR_MASK:String = "00";
       
            private var ambienteAtual:MDICanvas;
            private var qtdeAmbientes:int;
            private var prefixoIdCanvas:String = "canvas";
            private var prefixoIdBotao:String = "BTN_AMBIENTE";
            public var iniciar:Class = Imagens.iniciar;
           
            private var baseTimer:int;

            private var timer:Timer = null;

            private var LBL_HORA:Label = new Label();
       
            public var usuarioLogado:Usuario = null;
       
            private function init():void{
                var login:Login = PopUpManager.createPopUp(this , Login , true) as Login;
                disableAplicacao();
                login.addEventListener(CloseEvent.CLOSE,loginCloseEvent,false,0,false);
                PopUpManager.centerPopUp(login);
            }
           
            public function loginCloseEvent(evt:CloseEvent):void{
                var login:Login = evt.currentTarget as Login;
                this.usuarioLogado = login.usuarioLogado;
                if (this.usuarioLogado != null){
                    initAfterLoginOk();
                    enableAplicacao();
                }
            }
           
            private function disableAplicacao():void{
                this.ACB_TASKBAR.visible = false;
                this.canvasAmbientes.visible = false;
            }
           
            private function enableAplicacao():void{
                this.ACB_TASKBAR.visible = true;
                this.canvasAmbientes.visible = true;
            }
           
            private function initAfterLoginOk():void{
                qtdeAmbientes = 1;
                criaAmbientes();
                ativaCanvas(1);
                timer = new Timer(10);
                timer.addEventListener(TimerEvent.TIMER, updateTimer);
                timer.start();
            }
           
            public function updateTimer(event:TimerEvent):void {
                var d:Date = new Date();
                var min:String = (MIN_MASK + d.minutes).substr(-MIN_MASK.length);
                var sec:String = (SEC_MASK + d.seconds).substr(-SEC_MASK.length);
                var hr:String = (HR_MASK + d.hours).substr(-HR_MASK.length);
                LBL_HORA.text = String(hr + ":" +min + ":" + sec );
            }
           
            private function criaAmbientes():void{
                for(var indice:int = 1 ; indice <= qtdeAmbientes ; indice++ ){
                    var canvasNovo:MDICanvas = new MDICanvas();
                    var botaoAmbiente:Button = new Button();
                    var stringIndice:String = String(indice);
                    if (qtdeAmbientes > 1){
                        botaoAmbiente.id=prefixoIdBotao+stringIndice;
                        botaoAmbiente.label = stringIndice;
                        botaoAmbiente.addEventListener(MouseEvent.CLICK,onBtnAmbienteClick,false,0,false);
                        ACB_TASKBAR.addChild(botaoAmbiente);
                    }
                    canvasNovo.setVisible(false);
                    canvasNovo.id = prefixoIdCanvas+stringIndice;
                    canvasNovo.percentWidth = 100;
                    canvasNovo.percentHeight = 100;
                    canvasNovo.effectsLib = MDIVistaEffects;
                    canvasAmbientes.addChild(canvasNovo);
                }
                LBL_HORA.setStyle("color","#FFFFFF");
                LBL_HORA.text = "00:00:00";
                ACB_TASKBAR.addChild(LBL_HORA);
            }
                      
            private function addTelaAmbienteSelecionado(objeto:DisplayObject):void{
                var objetoProcurado:MDIWindow = MDIWindow(objeto);
                var objetoLocalizado:MDIWindow = null;
                for (var obj:Object in ambienteAtual.getChildren()){
                    var objMDI:MDIWindow = MDIWindow(ambienteAtual.getChildAt(int(obj)));
                    if (objetoProcurado.title == objMDI.title){
                        objetoLocalizado = objMDI;
                    }
                }
                if (objetoLocalizado == null){
                    ambienteAtual.windowManager.add(MDIWindow(objeto));
                }else{
                    if (objetoLocalizado.minimized){
                        objetoLocalizado.restore();
                        objetoLocalizado.showControls = true;
                    }else{
                        objetoLocalizado.getFocus();
                    }
                }
            }
           
            private function getCanvasById(id:String):MDICanvas{
                for each (var childAtual:Object in canvasAmbientes.getChildren()){
                    if (MDICanvas(childAtual).id == id){
                        return MDICanvas(childAtual);
                    }
                }
                return null;
            }
           
            private function ativaCanvas(indice:int):void{
                var canvasSelecionado:MDICanvas = getCanvasById(prefixoIdCanvas+String(indice));
                if (canvasSelecionado != null){
                    for each (var canvasIndice:MDICanvas in canvasAmbientes.getChildren()){
                        if (canvasIndice.id != canvasSelecionado.id){
                            canvasIndice.setVisible(false);
                        }else{
                            ambienteAtual = canvasSelecionado;
                            canvasIndice.setVisible(true);
                        }
                    }
                }
            }
           
            private function onBtnAmbienteClick(evt:Event):void{
                var botaoClicado:Button = evt.currentTarget as Button;
                var ambienteSelecionado:int = int(botaoClicado.id.replace(prefixoIdBotao,""));
                ativaCanvas(ambienteSelecionado);
            }
           
            private function menuBarItemClick(event:MenuEvent):void
            {
                if (event.item.@data == "confAdmCadTipoUsuario"){
                    addTelaAmbienteSelecionado(new CadastroTipoUsuario());
                }else if (event.item.@data == "confAdmCadUsuario"){
                    addTelaAmbienteSelecionado(new CadastroUsuario());
                }else if (event.item.@data == "confCadCadClasseEquip"){
                    addTelaAmbienteSelecionado(new CadastroClasseEquipamento());
                }
            }
           
        ]]>
    </mx:Script>
    <mx:XMLList id="menuList">
        <menuitem icon="iniciar" label="">
            <menuitem label="Configuração">
                <menuitem label="Administrativo">
                    <menuitem label="Cadastro de Usuários"  data="confAdmCadUsuario"/>
                </menuitem>
            </menuitem>
        </menuitem>
    </mx:XMLList>
    <mx:ApplicationControlBar id="ACB_TASKBAR" height="0%" width="100%">
        <mx:MenuBar id="MB_MENU"
            labelField="@label"
            iconField="@icon"
            cornerRadius="20"
            dataProvider="{menuList}"
            itemClick="menuBarItemClick(event);"
            >
        </mx:MenuBar>
        <mx:Spacer width="100%" />
        <mx:Image click="ambienteAtual.windowManager.tile(true)" source="imagens/titleiconpqn.png" scaleContent="true" autoLoad="true"/>
        <mx:Image click="ambienteAtual.windowManager.cascade()" width="27" height="26.25" source="imagens/cascatapqn.png" scaleContent="true" autoLoad="true"/>
    </mx:ApplicationControlBar>
    <flexmdi:MDICanvas id="canvasAmbientes" height="100%" width="100%">
    </flexmdi:MDICanvas>
</mx:Application>

quinta-feira, 5 de novembro de 2009

Java - Para quem usa TOPLINK ( JPA )

Bom .. estou postando uma framework de codigo fonte aberto q eu criei aqui p vcs ! ... segue o link :

http://jpautil.googlecode.com

Chama-se : JPAUtil ... é uma biblioteca que auxilia a criação de HQL de forma dinâmica, passando um exemplo de objeto populado ( Como o Example do Hibernate ), porém essa biblioteca leva em consideração os sub objetos.
Ajuda o desenvolvedor a instanciar objetos de forma dinâmica.

Tem aki alguns exemplos do que ela faz :


public class Main {
public static void main(String[] args){

JPAUtil jpaUtil = new JPAUtil();
Util util = new Util();

Grupo grupoVazio = new Grupo(); //Funcao para instanciar todos os metodos util.instanciaOsSubCamposVazios(grupoVazio);
grupoVazio.setNome("testeGrupo"); grupoVazio.getUsuario().setNome("caio"); grupoVazio.getUsuario().getEndereco().setNomeDaRua("teste"); grupoVazio.getUsuario().getEndereco().setNumero(10); grupoVazio.getUsuario().getMenu().setDescricao("Menu teste"); grupoVazio.getUsuario().getMenu().setCodigoPermissao("01010041"); grupoVazio.getUsuario().getMenu().setNumeroTeste(50);

util.setaNullNosCamposObjetoVazios(grupoVazio);
System.out.println(jpaUtil.getHQLByExample(grupoVazio));
}
} Resultado :
SELECT objPrincipal FROM Grupo objPrincipal WHERE (objPrincipal.nome = 'testeGrupo' ) AND (objPrincipal.usuario.nome = 'caio' AND objPrincipal.usuario.endereco.nomeDaRua = 'teste' AND objPrincipal.usuario.endereco.numero = 10 AND objPrincipal.usuario.menu.descricao = 'Menu teste' AND objPrincipal.usuario.menu.codigoPermissao = '01010041' AND objPrincipal.usuario.menu.numeroTeste = 50)

O Inicio

Bom pessoal, estou começando meu blog agora e espero q vcs gostem ... gostaria q todos ajudassem dando dicas sobre codigos postados ... ou codigos criados !!