"Cogito ergo sum"
RSS icon Email icon Home icon
  • Enviar arquivos via XML-RPC em Java.

    Posted on September 17th, 2009 Matheus (X-warrior) Bratfisch No comments

    Olá,

    Hoje o Jorge me perguntou se eu sabia como enviar arquivos via XML-RPC. Pensando no assunto não me recordava como devia ser feito, resolvi dar uma rápida pesquisada para ensina-lo. Acabei me entretendo e resolvi modificar o Cliente e Servidor Java XML-RPC para fazer o mesmo.

    Implementei o mesmo e não foi complexo só olhei a documentação do Apache XML-RPC para ver como eram enviados bytes. Os mesmos eram enviados codificando o array de bytes (byte[]) em Base64. Pesquisei um pouco como fazer isso e achei uma Biblioteca Java de Base64 em dominio publico. Também procurei por como pegar o array de bytes de um arquivo e como criar um novo arquivo apartir de um array de bytes (byte[]).

    Esses sites onde peguei ambos os métodos estão como comentarios no arquivo.

    XML-RPC-Transferencia-De-Arquivo

    Espero que seja útil,
    Matheus

    PS: Da maneira como eu implementei qualquer arquivo do sistema que o Cliente XML-RPC pedir o Servidor irá enviar, isso criaria uma possivel brecha de segurança.

    PS2: Caso deseja que o Cliente envie arquivos para o Servidor, o Cliente deve pegar o array de bytes do Arquivo, codifica-lo em base64 e passa-lo como parametro. O Servidor irá receber este parametro, decodificar após isso manipu-le o array de bytes como você desejar.

  • MD5 “Decrypter”, Java

    Posted on June 23rd, 2009 Matheus (X-warrior) Bratfisch No comments

    Boa noite,

    Nas aulas de programação concorrente o professor passou uma introdução de Programação Distribuida e pediu que nós criassemos algo que utilizasse ela. Então eu sugeri ao meu colega Olav para implementarmos um “quebrador” de senha por força bruta. O mesmo funciona da seguinte maneira, existe um master onde os slaves se conectam, o master informa a string a ser quebrada e qual faixa de caracteres o slave deve tentar. Após terminar aquela faixa caso ele não obtenha sucesso o slave recebe uma nova faixa, caso ele encontre, ele informa o master qual a string utilizada para gerar tal MD5.

    Implementação do “MD5 Decrypter”

    Existem muitas coisas que ainda podem ser aperfeiçoadas nesse programa como:
    - Não precisar um número fixo de Slaves. Aceitar todos que forem se conectando em tempo real.
    - Melhor distribuição de faixas.

    Ele pode ser praticamente o inicio de um programa de Força Bruta Distribuida, que já devem existir vários por ai.

    Espero que goste,
    Matheus

  • Exercício Estacionamento, Java, Programação Concorrente.

    Posted on June 22nd, 2009 Matheus (X-warrior) Bratfisch No comments

    Boa tarde,

    Semana passada fiz a última prova de Programação Concorrente deste semestre. O problema que devia se solucionar era o seguinte:

    O estacionamento de uma universidade possui 30 vagas. Enquanto o mesmo possue vagas, não existe prioridade para quem estaciona. Quando o mesmo está cheio, forma-se uma fila, onde professores possuem a mais alta prioridade, seguido pelos funcionarios e após os alunos. Utilize java com Threads para “simular” este problema. Utilize 10 professores, 15 funcionários, 30 alunos.

    O Professor Mazzucco, disponibilizou uma implementação do mesmo que vou disponibilizar para vocês.

    Implementação problema estacionamento em Java

    Matheus

  • Cliente e Servidor, Java XML-RPC

    Posted on May 16th, 2009 Matheus (X-warrior) Bratfisch 3 comments

    Boa noite,

    Como havia comentado a algum tempo atrás, estava trabalhando com um cliente XML-RPC em Java, durante a fase de desenvolvimento do mesmo tive que criar um servidor XML-RPC hipotetico para testar as funcionalidades do cliente, enquanto o servidor certo ainda não estava disponivel para minha pessoa.

    Resumidamente para você que não conhece XML-RPC ele é um “formato” , um “jeito”, não sei ao certo a palavra certa para definir agora, onde você cria um servidor e o mesmo quando requisitado faz as operações necessarias e retorna um resultado. Um exemplo seria, você tem um código de criptografia que funciona MUITO bem em C, mas seu sistema é todo em Java, você poderia criar um Cliente JAVA e um Servidor C onde o Java faria requisição para Criptografar as coisas. Talvez utilizar XML-RPC de Java para Java possa ser meio estranho, mas quando os serviços estão distantes, pode ser algo util.

    Para começar a mecher com o XML-RPC no Java eu utilizei o apache xml-rpc. Após isso apenas desenvolvi.

    Baixe os exemplos cliente e servidor xml-rpc em java.

    Servidor:

    package xmlrpc;

    import org.apache.xmlrpc.server.PropertyHandlerMapping;
    import org.apache.xmlrpc.server.XmlRpcServer;
    import org.apache.xmlrpc.webserver.WebServer;

    public class ServidorXMLRPCParaTestes {

    private static ServidorXMLRPCParaTestes euMesmo = null;

    private ServidorXMLRPCParaTestes() {
    try {
    WebServer server = new WebServer(8185); // Cria um servidor na porta 8185
    XmlRpcServer servidor = server.getXmlRpcServer(); // Pega o servidor XmlRpc
    PropertyHandlerMapping phm = new PropertyHandlerMapping();
    phm.addHandler(”Calc”, Calculadora.class); // Adiciona um novo “handler” ao PHM
    servidor.setHandlerMapping(phm); // Define o handler no servidor
    server.start(); // inicia o servidor.
    } catch (Exception exception) {
    System.err.println(”JavaServer: ” + exception);
    }
    }

    public static ServidorXMLRPCParaTestes obterInstância() {
    if (euMesmo == null)
    euMesmo = new ServidorXMLRPCParaTestes();
    return euMesmo;
    }
    }

    - Eu utilizeo o obterInstancia para não poder existir mais de um ServidorXMLRPC ;)
    - O handler faz o seguinte, quando for chamado Calc.METODO no servidor ele irá buscar dentro do Calculadora.class

    Read the rest of this entry »