Performance Analysis of Logs (PAL) Tool

Performance Analysis of Logs (PAL) Tool

Para quem quer efetuar uma análise de Performance, ótima ferramenta.

Versões do Eclipse

Sempre me esqueço quais foram as versões do Eclipse e sua cronologia… E sempre tenho que procurar… fica a referência:

Codename Date Platform version Projects
N/A 21 June 2004 3.0[14]
N/A 28 June 2005 3.1
Callisto 30 June 2006 3.2 Callisto projects
Europa 29 June 2007 3.3 Europa projects
Ganymede 25 June 2008 3.4 Ganymede projects
Galileo 24 June 2009 3.5 Galileo projects
Helios 23 June 2010 3.6 Helios projects
Indigo 22 June 2011 3.7[Notes 1] Indigo projects
Juno 27 June 2012 4.2[15] Juno projects
Kepler 26 June 2013 4.3 Kepler projects
Luna 25 June 2014 (planned) 4.4 Luna projects
CategoriasJAVA Tags:,

Reverse engineering my bank’s security token

This document, was written by Thiago Valverde and was initially published at [http://blog.valverde.me/2014/01/03/reverse-engineering-my-bank's-security-token/] but for some “unknown” reason it disappeared from there…

The point is, the work/demonstration done by Thiago was truly a very good/amazing work of Reverse engineering and also it offers a service to the community, so it must be free and available.

[http://dcon.com.br/jd.comment/Reverse_Engineering_My_Banks_Security_Token.pdf] (Thx Ygor and Robertux for the pdf)

More details can be found here [https://showyou.com/v/y-k87vSrfhof4/bank-token-implemented-with-an-arduinoclone-ti-stellaris?t=Security%20token&via_user=vegbrasil]

CategoriasSegurança Tags:,

Alterar proprierades de usuário do AD com c++

dezembro 16, 2013 2 comentários

Segue um código que deve ser adaptado, o mesmo serve para alterar as propriedades de um usuário do AD com c++.

Enjoy!

<br />try{<br />String^ __path = "LDAP://Adatum.com/CN=USERS,DC=Adatum,DC=com";<br />DirectoryEntry^ parentEntry = gcnew    DirectoryEntry(__path );<br />DirectorySearcher^ search = gcnew DirectorySearcher(parentEntry);<br />search-&gt;Filter = "(SAMAccountName=fulano)";<br />SearchResult^ result = search-&gt;FindOne();<br />DirectoryEntry^ user = result-&gt;GetDirectoryEntry();<br />user-&gt;Properties["userAccountControl"]-&gt;Value = "514";<br />user-&gt;CommitChanges();<br /><br />} catch (Exception ^err) {<br />//(err-&gt;Message);<br />}<br />
Categorias.net, C#, C++ Tags:, , ,

Rodando um comando PowerShell com Visual C++

novembro 22, 2013 1 comentário

Segue um código que pode ser útil, efetuando adaptações necessárias:

try{
this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + "\nHabilitando mailbox para " + this-&gt;userTxt-&gt;Text;
			
RunspaceConfiguration ^runspaceConfig = RunspaceConfiguration::Create();
Runspace ^runspace = RunspaceFactory::CreateRunspace(runspaceConfig);
// open it
runspace-&gt;Open();

Pipeline ^pipeline = runspace-&gt;CreatePipeline();
// este é o script que vou executar, repare que é um do Exchange
String ^scriptText2007 = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\PowerShell.exe -command \". 'C:\\Program Files\\Microsoft\\Exchange Server\\V14\\bin\\RemoteExchange.ps1'; Connect-ExchangeServer -auto; Enable-Mailbox -Identity 'corprd.bradesco.com.br/Users/" + this-&gt;userTxt-&gt;Text + "' -Alias '" + this-&gt;userTxt-&gt;Text + "'\"";
//String ^scriptText2007 = C:\\bats\\teste2.ps1;

pipeline-&gt;Commands-&gt;AddScript(scriptText2007);

Collection ^results = pipeline-&gt;Invoke();
			
runspace-&gt;Close();

StringBuilder^ stringBuilder = gcnew StringBuilder(); 
for (int i = 0; i Count; i++ ) { 
    stringBuilder-&gt;AppendLine(results[i]-&gt;ToString());
}
this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + "\nParseou resultados";
IntPtr result = Marshal::StringToBSTR(results-&gt;ToString());
String ^answer= stringBuilder-&gt;ToString(); 
IntPtr ptr = Runtime::InteropServices::Marshal::StringToBSTR(answer);
this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + answer;

} catch (Exception ^err) {
			this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + "\nERRO Habilitar MailBox";
			IntPtr msg = Marshal::StringToBSTR(err-&gt;Message);
			this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + err-&gt;Message;
}

Enjoy!

CategoriasC++, PowerShell, Windows Tags:,

Verificando a versão do PowerShell

Para verificar a versão do PowerShell instalada em sua máquina, basta efetuar os comandos abaixo:
Get-Host
e
$PSVersionTable

Exemplo:
Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. All rights reserved.

PS C:\Users\Kim_Akers> Get-Host
Name : ConsoleHost
Version : 3.0
InstanceId : 06e6c494-3f7b-4771-ad2f-4d7e4f649d3c
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace

PS C:\Users\Kim_Akers> $PSVersionTable
Name Value
—- —–
WSManStackVersion 3.0
PSCompatibleVersions {1.0, 2.0, 3.0}
SerializationVersion 1.1.0.1
BuildVersion 6.2.9200.16398
PSVersion 3.0
CLRVersion 4.0.30319.1
PSRemotingProtocolVersion 2.2

PS C:\Users\Kim_Akers>

Enjoy

Criando um projeto Java que conecta no Derby

Segue um breve tutorial sobre como criar uma aplicação Java que se conecta no Derby e o manipula.

1- Baixe a versão mais recende do Derby em http://db.apache.org/derby/derby_downloads.html
Existe a distribuição binária (bin distribution) que além das bibliotecas requeridas, tras documentação, exemplos, etc. Eu costumo baixar a Lib distribution, que contem somente os JARS necessários.

2- Descompacte o arquivo baixado. Veja que existe um diretório LIB nele. Lá estarão as bibliotecas que utilizaremos em seguida.

3- É opcional, mas eu prefiro criar uma pasta em meu projeto chamada Derby e copiar os arquivos do Derby para dentro da mesma, assim, ao levar o projeto para outras máquinas, o banco vai junto. Criada a pasta, os dois arquivos necessários são:

  • derby.jar
  • derbytools.jar

4- Adicione os dois Jars copiados em seu ClassPath, para isso, clique com o botão direito no projeto e vá em propriedades, então em Java Build Path, e na Aba Libraries, clique em Add Jars e apontar o local onde estão os dois arquivos.

Feito isso, vamos para o código. Criei uma classe chamada TesteDerby no pacote br.com.tix11.programs , ele foi baseado na documentação oficial do Derby. A classe tenta se conectar num banco Derby, vê se o db ESCOLA existe, caso não exista o cria e popula e faz um select simples. Segue o conteúdo:

Feito isso, vamos para o código. Criei uma classe chamada TesteDerby no pacote br.com.tix11.programs , ele foi baseado na documentação oficial do Derby. A classe tenta se conectar num banco Derby, vê se o db ESCOLA existe, caso não exista o cria e popula e faz um select simples. Segue o conteúdo:

package br.com.tix11.programs;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import org.apache.derby.tools.ij;

public class TestDerby {

	private static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
	private static String protocol = "jdbc:derby:";

	public static void main(String args[]) {
		if (checkDB())
		{
			System.out.println("BANCO ESTA PRONTO PARA O USO.");
		} else
		{
			System.out.println("BANCO NAO ESTÁ OPERACIONAL.");
		}
	}

	public static boolean checkDB() {
		boolean retorno = false;
		loadDriver();
		Connection conn = null;

		ArrayList statements = new ArrayList(); // list of Statements,
												// PreparedStatements
		Statement s = null;
		ResultSet rs = null;
		try
		{
			String dbName = "ESCOLA"; // the name of the database
			// caso DB não exista, ele cria
			conn = DriverManager.getConnection(protocol + dbName + ";create=true");
			System.out.println("Connected to and created database " + dbName);

			// Imprimindo o conteudo da tabela disciplina
			s = conn.createStatement();
			rs = s.executeQuery("SELECT * FROM ESCOLA.discipline");
			while (rs.next()){
				System.out.println(rs.getInt(1) + " - " + rs.getString(2));
			}
			

			// Efetuando shutdown no DERBY
			try
			{
				DriverManager.getConnection("jdbc:derby:;shutdown=true");
			} catch (SQLException se)
			{
				if (((se.getErrorCode() == 50000) && ("XJ015".equals(se.getSQLState()))))
				{
					System.out.println("Derby shut down normally");
				} else
				{
					System.err.println("Derby did not shut down normally");
					printSQLException(se);
				}
			}

		} catch (SQLException sqle)
		{
			// Caso eu nao encontre o banco ou a tabela, eu os crio. Deve passar aqui somente na primeira execussao
			printSQLException(sqle);
			if  ( ( sqle.getMessage().equalsIgnoreCase("Table/View 'ESCOLA.discipline' does not exist.")) || (sqle.getMessage().equalsIgnoreCase("Schema 'ESCOLA' does not exist")) )
			{
				System.out.println("Ill create the database.");
				if (createDB(conn))
				{
					System.out.println("Banco Criado");
					System.out.println("Populando Banco");
					if (populateDB(conn))
					{
						System.out.println("Banco nao pode ser populado");
					} else
					{
						System.out.println("Banco populado");
						retorno = true;
					}
				} else
				{
					System.out.println("Banco não pode ser criado");
				}

			}
		} finally
		{
			// release all open resources to avoid unnecessary memory usage
			try
			{
				if (rs != null)
				{
					rs.close();
					rs = null;
				}
			} catch (SQLException sqle)
			{
				printSQLException(sqle);

			}

			// Statements and PreparedStatements
			int i = 0;
			while (!statements.isEmpty())
			{
				// PreparedStatement extend Statement
				Statement st = (Statement) statements.remove(i);
				try
				{
					if (st != null)
					{
						st.close();
						st = null;
					}
				} catch (SQLException sqle)
				{
					printSQLException(sqle);
				}
			}

			// Connection
			try
			{
				if (conn != null)
				{
					conn.close();
					conn = null;
				}
			} catch (SQLException sqle)
			{
				printSQLException(sqle);
			}
		}
		return retorno;
	}

	/**
	 * Cria a tabela
	 * @param conn
	 * @return
	 */
	private static boolean createDB(Connection conn) {
		FileInputStream fileStream = null;
		try
		{
			fileStream = new FileInputStream("./scripts/create.sql");
			int result = ij.runScript(conn, fileStream, "UTF-8", System.out, "UTF-8");
			System.out.println("Result code is: " + result);
			if (result == 1)
			{
				return true;
			} else
			{
				return false;
			}
		} catch (FileNotFoundException e)
		{
			return false;
		} catch (UnsupportedEncodingException e)
		{
			return false;
		} finally
		{
			if (fileStream != null)
			{
				try
				{
					fileStream.close();
				} catch (IOException e)
				{
				}
			}
		}
	}

	/**
	 * Popula a tabela
	 * @param conn
	 * @return
	 */
	private static boolean populateDB(Connection conn) {
		FileInputStream fileStream = null;
		try
		{
			fileStream = new FileInputStream("./scripts/populate.sql");
			int result = ij.runScript(conn, fileStream, "UTF-8", System.out, "UTF-8");
			System.out.println("Result code is: " + result);
			if (result == 1)
			{
				return true;
			} else
			{
				return false;
			}
		} catch (FileNotFoundException e)
		{
			return false;
		} catch (UnsupportedEncodingException e)
		{
			return false;
		} finally
		{
			if (fileStream != null)
			{
				try
				{
					fileStream.close();
				} catch (IOException e)
				{
				}
			}
		}
	}

	private static void loadDriver() {
		try
		{
			Class.forName(driver).newInstance();
			System.out.println("Loaded the appropriate driver");
		} catch (ClassNotFoundException cnfe)
		{
			System.err.println("\nUnable to load the JDBC driver " + driver);
			System.err.println("Please check your CLASSPATH.");
			cnfe.printStackTrace(System.err);
		} catch (InstantiationException ie)
		{
			System.err.println("\nUnable to instantiate the JDBC driver " + driver);
			ie.printStackTrace(System.err);
		} catch (IllegalAccessException iae)
		{
			System.err.println("\nNot allowed to access the JDBC driver " + driver);
			iae.printStackTrace(System.err);
		}
	}

	private static void reportFailure(String message) {
		System.err.println('\t' + message);
	}

	public static void printSQLException(SQLException e) {
		while (e != null)
		{
			System.err.println("\n----- SQLException -----");
			System.err.println("  SQL State:  " + e.getSQLState());
			System.err.println("  Error Code: " + e.getErrorCode());
			System.err.println("  Message:    " + e.getMessage());
			e = e.getNextException();
		}
	}

}

Repare que eu criei dois scripts SQL, um que cria a tabela que utilizaremos para teste e outro que a popula. Então, no exemplo JAVA você verá dois métodos sendo invocados caso necessário, para chamar respectivamente os scripts que criam e populam a tabela. Dentro do projeto tem uma pasta chamada scripts, e nela, os dois scripts.

create.sql

CREATE TABLE "ESCOLA".discipline
(
  id numeric(10) NOT NULL,
  "NAME" character varying(100) NOT NULL
);

populate.sql

INSERT INTO "ESCOLA".discipline (id, name) VALUES (1, 'Module 1');
INSERT INTO "ESCOLA".discipline (id, name) VALUES (2, 'Module 2');
INSERT INTO "ESCOLA".discipline (id, name) VALUES (3, 'Module 3');
CategoriasJAVA Tags:, , , ,
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 149 outros seguidores