SWT fix for Java Protocol Analyzer

Hello Folks,

I am currently working on some reverse engineering of wireless protocols of home automation systems, and sooner or later you encounter the point where you need some kind of protocol analyzer to understand what the devices are exchanging in their communication. More infos on that will follow some time later, but now I would like to share a short advice/fix for a tool I found. It is called “Protocol Analyzer” and right, it can be used to understand the signals the devices are exchanging.

Continue reading

Advertisements

call python script from Java app

Hello readers,

in this post I wanna give you a brief description how you can call python code from with a java program. For that purpose we will use two very simple “Hello World” programs, one in python, one for java.

First the python script. Create a new file “~/python/helloPython.py” with the following content:

import os
from stat import *

print "Hello World from python"

Now fire up your eclipse and create a default java application. Create a new java class named “PythonCaller”. The content of this new file will look like this:

package org.norbert;

import java.io.*;

public class PythonCaller {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// set up the command and parameter
String pythonScriptPath = "/home/norbert/python/helloPython.py";
String[] cmd = new String[2];
cmd[0] = "python"; // check version of installed python: python -V
cmd[1] = pythonScriptPath;

// create runtime to execute external command
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);

// retrieve output from python script
BufferedReader bfr = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = "";
while((line = bfr.readLine()) != null) {
// display each output line form python script
System.out.println(line);
}
}
}

So what is this doing? Basically we execute the python script by envoking python2.6 and provide the path to the script as parameter, as you would normally do it if you exec the script in a terminal/bash.
The output generated by the script is then read line by line with a BufferedReader and displayed in the terminal where we execute the java application.

You can execute the java program in eclipse by click on the green run button or compile and exec it in a terminal with:

cd workspace/JavaPythonCall/src/org/norbert
javac PythonCaller.java
cd ../..
java org.norbert.PythonCaller

result:

Hello World from python

Sweet ^_^ yeah 😉 This was a quick one, but I hope this helps.
cheers
norbert