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
;)
sexta-feira, 6 de novembro de 2009
<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
<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>
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
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 {
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)
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 !!
Assinar:
Postagens (Atom)