Posts

Showing posts from 2016

Wildfly 8.2.1 como serviço em Debian-based

1 - Fazer download do Wildfly através do link $ sudo wget http://download.jboss.org/wildfly/8.2.1.Final/wildfly-8.2.1.Final.zip -P /opt/ 2 - Descompactar o Wildfly no /opt/ $ sudo unzip /opt/wildfly-8.2.1.Final.zip -d /opt/ 3 - Criar o link simbolico que o Wildfly irá utilizar no serviço $ sudo ln -s /opt/wildfly-8.2.1.Final /opt/wildfly 4 - Criar usuário que o Wildfly irá utilizar no serviço $ sudo useradd --system --shell /bin/false wildfly 5 - Registrar o wildfly como serviço $ sudo cp /opt/wildfly/bin/init.d/wildfly.conf /etc/default/wildfly.conf $ sudo cp /opt/wildfly/bin/init.d/wildfly-init-debian.sh /etc/init.d/wildfly $ sudo chown root:root /etc/init.d/wildfly $ sudo chmod +x /etc/init.d/wildfly $ sudo update-rc.d wildfly defaults $ sudo update-rc.d wildfly enable $ sudo mkdir -p /var/log/wildfly $ sudo chown -R wildfly:wildfly /opt/wildfly-8.2.1.Final/ $ sudo chown -R wildfly:wildfly /opt/wildfly $ sudo chown -R wildfly:wildfly /var/log/wildfly No arquivo

Hack this Site! - Basic Mission - Level 1(the idiot test)

Image
Conforme a dica dada pelo site para a primeira missão, devemos primeiramente verificar o HTML da pagina. Help! If you have no idea what to do, you must learn HTML. Na imagem abaixo podemos ver que tem um comentário informando a senha para o nível  : d7205f6e   Após inserirmos a senha e clicarmos no botão de submit, temos a seguinte resposta

Hack This Site!

Hack hackthissite.org é um site que tem a seguinte missão: Hack This Site is a free, safe and legal training ground for hackers to test and expand their hacking skills. More than just another hacker wargames site, we are a living, breathing community with many active projects in development, with a vast selection of hacking articles and a huge forum where users can discuss hacking, network security, and just about everything. Tune in to the hacker underground and get involved with the project. Para quem deseja aprender mais sobre o assunto hacker esse site oferece o caminho das pedras.

Definir Final Name Artifact no Maven

Para se definir o final name do artefato é preciso definir a tag <finalName> dentro dos parâmetros de build <project ... > . <build> <finalName>${project.artifactId}</finalName> . </build> </project> Ao utilizar a variável "${project.artifactId}" é definido o mesmo nome do projeto no pom.xml

Como executar comandos git a partir de outro diretorio

Image
Caso você queira executar um comando do git estando em um diretório que não é um repositório git, basta definir o parâmetro "--git-dir" e definir a work tree(em qual ponto do repositório você quer trabalhar) com o parâmetro "--work-tree".  No exemplo abaixo, eu executo um "git status" no meu repositorio, estando em outro diretorio: git --git-dir=/home/Guilherme/workspace/remote-ejb-example/.git --work-tree=/home/Guilherme/workspace/remote-ejb-example/ status Segue a saida do comando:

Consultar sequence no PostgreSQL 9.2 >

Para realizar a consulta da sequence ligada a um campo na tabela deve-se fazer uso da seguinte função: select pg_get_serial_sequence('<schema>.<table_name>', '<column>'); Essa função recebe dois parâmetros, o primeiro é o nome da tabela e o segundo o campo a ser pesquisado, irá retornar o nome da sequence, caso tenha alguma ligada ao campo ou irá retornar null no caso de inexistência.

Maven dependency tree

Image
Para imprimir a arvore de dependências do seu projeto basta executar o comando abaixo e ele irá mostrar todas suas dependências mvn dependency:tree -Dverbose Output:

Erro ao conectar via ssh

Ao tentar conectar via ssh a um servidor, aconteceu o seguinte erro: λ ssh <host> Unable to negotiate with <host>: no matching host key type found. Their offer: ssh-dss O motivo disso, é que a partir da versão 7.0 do OpenSSH as chaves do tipo DSA(Digital Signature Algorithm) são desativadas por padrão, por serem fracas. Lembrando, o uso de chaves DSA é desaconsalhavel. Abaixo segue um workaround para conseguir conectar: echo Host <host> >> ~/.ssh/config echo HostKeyAlgorithms +ssh-dss >> ~/.ssh/config

Query DNS Nslookup (Windows e Linux)

O comando "nslookup" faz queries no DNS, para resolver um nome ou ip informado, retornando assim o DNS utilizado e as informações do domínio buscado. Exemplo nslookup facebook.com Resultado: gbotossi@kalil:~$ nslookup facebook.com Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: facebook.com Address: 66.220.158.68 Informações Extras: Caso não seja informado o servidor DNS, será utilizado o que está definido na maquina(no meu caso o DNS do google) Se for do interesse o uso de outro Servidor DNS deve-se informar dois parâmetros, sendo o primeiro parâmetro informado é domínio ou ip a ser resolvido e o segundo parâmetro é o DNS a ser utilizado Exemplo: gbotossi@kalil:~$ nslookup 66.220.158.68 208.67.222.222 Resultado: C:\Users\Guilherme>nslookup 66.220.158.68 208.67.222.222 Server: resolver1.opendns.com Address: 208.67.222.222 Name: edge-star-mini-shv-07-frc3.facebook.com Address: 66.220.158.68

Converter Minutos do dia em Horario

Utilizando a classe TimeUnit podemos fazer a conversão dos minutos em hora, minuto e segundo. A constante MINUTES é utilizada para denominar que estamos trabalhando com minutos e os métodos toHours, toMinutes, toSeconds recebem a quantidade de minutos a ser convertida. Segue o exemplo de utilização Long minutesOfDay = Long.valueOf(10L); String format = "%02d:%02d:%02d"; Long hour = TimeUnit.MINUTES.toHours(minutesOfDay); Long minutes = TimeUnit.MINUTES.toMinutes(minutesOfDay) - TimeUnit.HOURS.toMinutes(hour); Long seconds = TimeUnit.MINUTES.toSeconds(minutesOfDay) - TimeUnit.MINUTES.toSeconds(minutes); String time = String.format(format,hour, minutes, seconds);

Split de uma string a cada N-caracteres

Considerando o codigo abaixo, o método split recebe uma regex. String str = "2018192515"; String[] arrStr = str.split("(?<=\\G.{2})"); System.out.println(Arrays.toString(arrStr)); O resultado será [20, 18, 19, 25, 15] A regex  consiste de : Operador Descrição () faz um grouping ?<= Positive Lookbehind \G RegEx boundary character . Ocorrência de qualquer caractere {2} 2 vezes a ocorrência do operador anterior RegEx boundary character : define o final da ultima String encontrada e faz a busca a partir desse ponto

Design de Segurança - Defense in Depth

Image
Esse é um design de origem militar e  que foi migrado para área de segurança da informação. Ele consiste no uso de camadas de proteção e de redundância de mecanismos de segurança. Este modelo usa da interação entre Software, Hardware  e Policies, conforme imagem abaixo: Explicação das camadas: Data :  Normalmente é a parte de interesse do atacante Application : O Software  que tem por função realizar alguma tarefa com os dados Host : A maquina onde os softwares estão instalados e sendo executados Internal Network : Infraestrutura interna de rede, que não é visível da internet  Perimeter :  A parte da rede interna que se comunica com a rede externa Physical :  A parte física do computador Policies :  Políticas e procedimentos Ou seja, caso um mecanismo de segurança falhe, ou a redundância entra em ação ou o atacante irá encontrar uma próxima camada. Tendo em mente que não é todo tipo de sistema que se beneficia desse modelo e também que implementar esse modelo , será

Alterar o layout do teclado no Debian 7 (Wheezy)

Para iniciar a troca do layout basta executar o comando abaixo: dpkg-reconfigure keyboard-configuration Após a definição da configurações solicitadas é preciso reiniciar o serviço responsável pelo teclado: service keyboard-setup restart Após isso é possível testar o novo layout definido.

Verificar se uma data sem Timestemp é igual/anterior/posterior à outra data

Para fazer essa verificação vamos utilizar a API de Data e Timestamp do Java, a classe Calendar: Consideremos o código abaixo, ele recupera uma instância com o método "Calendar.getIntance()" e utilizamos o método clear para remover os valores do timestamp, informado cada uma das informações separadamente. Essa instância contem a data atual. Calendar cal = Calendar.getInstance(); cal.clear(Calendar.HOUR_OF_DAY); cal.clear(Calendar.AM_PM); cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); O trecho de código abaixo, tem praticamente a mesma função do trecho acima, porem ao invés de ele trabalhar com a data atual, nos fazemos um set da data a ser comparada com o método "cal1.setTime(data)". Calendar cal1 = Calendar.getInstance(); cal1.setTime(data);//Data a ser comparada cal1.clear(Calendar.HOUR_OF_DAY); cal1.clear(Calendar.AM_PM); cal1.clear(Calendar.MINUTE); cal1.clear(Calendar.SECOND); cal1.clear(Calendar.MILLISECON

Extrair o PFX de um JKS

Para realizar a extração de um PFX a partir de um JKS, é preciso executar o comando abaixo keytool -importkeystore -srckeystore jksKeysotre.jks -srcstoretype JKS -destkeystore pfxKeystore.pfx -deststoretype PKCS12 Executar o código sem as quebras de linha Os parametros informados : "-importkeystore" = Informa ao Keytool qual o tipo de operação será realizada, neste caso é de importar um keystore "-srckeystore" = O keystore que será a origem dos dados "-srcstoretype" = Qual o tipo do arquivo de origem "-destkeystore" = O Keystore de Destino "-deststoretype" = O tipo do keystore de destino O significado das Siglas PFX - Personal Information Exchange JKS - Java KeyStore Keytool - é uma ferramenta forncida pelo Java para lidar com certificado, chaves e afins.

Como recuperar o SessionFactory a partir de um EntityManager na JPA 1.0

Para recuperar o SessionFactory a partir do EntityManager, é preciso executar o metodo getDelegate(), que tem por função retornar o JPA Provider, nesse caso é o Hibenate. Segue o exemplo: import org.hibernate.Session; import org.hibernate.SessionFactory; Session session = (Session) getEntityManager().getDelegate(); SessionFactory sf = session.getSessionFactory();

SVNException ao fazer o build no Jenkins

Image
Eu criei um job no Jenkins que faz checkout de múltiplos repositórios, porem ao fazer o build, o erro abaixo ocorre: ERROR: Failed to parse svn info for https://<endereco_svn>/<repositorio> org.tmatesoft.svn.core.SVNException: svn: E200005: '<caminho_do_repositorio_no_jenkins>' is not under version control Esse problema ocorre, pois o Jenkins se perde ao fazer o checkout de pastas diferentes no mesmo workspace, para corrigir isso basta ao definir os módulos, separar os projetos por repositórios. Eis a imagem abaixo do local da configuração, selecionado em vermelho. Ps: caso o workspace não seja definido, o Jenkins coloca todos os projetos no mesmo lugar.