Monday, 14 January 2013

Quick Command Line Tip

This is really just for me in case I forget but it should be helpful to others. The 'notify-send' can be used to send desktop notifications when your program has finished running. This is quite handy for long running commands that you might forget about like dding images or what not.


Friday, 11 January 2013

My Raspberry Pi Cluster :)

So my final year project is to make a cluster of raspberry pi micro computers to crack encrypted office documents and here is my pi cluster :)


The distributed document cracker is based on John the Ripper which I've already started to contribute to
I have a prototype for distributing John already built and while its not ready for public release everything made as part of this project will be open source once I feel the code is ready. (Probably under the MIT license)

Below is a gallery of how it got to this state. Sorry about the blurry images, I'm not a great photographer.































Tuesday, 8 January 2013

What I've been upto ... U1, JB & John the Ripper

So I haven't posted here in a while not because I haven't done any development but I haven't really had the time. The reason for this is quite simply, it's my final year of college and there's a lot of work to do especially to do with my final year project. I thought I'd do a quick post detailing some of the open source development I've been doing over the last little while.

Ubuntu One KDE Plugin:

I've added a few more languages contributed by the community, specifically Russian & Brazilian Portuguese. Brazilian Portuguese being a little bit tricky since it doesn't have a standard 2 letter language code like all the other languages added so it took a bit of trial and error to figure out the code KDE wanted. For future reference for anyone googling this because they have the problem its:


pt_BR

Also while I haven't added it to the installer inside of dolphin yet. A new branch has been created at thebehest of a user using dolphin with Ubuntu's unity. It removes the program's reliance on klipper, kde's clipboard manager, using xclip & autocutsel in its place.

https://github.com/ShaneQful/u1-dolphin/tree/without_kde



Jupiter Broadcasting:

 I've contributed to https://github.com/rikai/JBAR-Firefox but only in a very minor way. I've done some minor bug fixes on the android app and there's a bug that I still need to fix in the Java ME but considering it has a user base of me and like one other person I'm taking my sweet time getting around to it. I was contributing to https://github.com/dominickm/jupiter_broadcasting_mobile_community, a HTML5 mobile app but that project now seems dead. Hopefully some one will pick it up or I might jump back into it after college. I still have commit access to the repo and am willing to merge any pull request sent so if anyone wants to give it a go don't be shy.

Final Year Project:

I don't want to say to much on this in case some idiotic piece of academic software accuses me of plagiarizing myself but I'm writing a system to perform the distributed cracking of office documents(MSOffice, PDFs, ODFs) on a network of raspberry pi computers


John the Ripper:

I'm using John the Ripper as the base cracker for my final year project. Unfortunately I didn't discover it could crack documents until I'd already nearly finished some ODF cracking software. Actually the only thing left to do is finish the AES encryption which would be nearly pointless since all the lastest releases of OpenOffice & LibreOffice use Blowfish for encryption but I digress. This was more than a little irritating as it was thought that I might have to expand the project but for now helping John's development with a focus on office documents should hopefully be more than enough. You know along with a system to allowing for it to be distributed over a network with a really pretty web UI. So far I've created this https://github.com/ShaneQful/npdf2john_ruby. A PDF parser which takes out the necessary information from a PDF for decryption and passes it to John in the format in needs. Which lead to my first bit of code actually in John :) 


but more importantly it was the last thing they needed to get rid of the older pdf format which only supported up to PDF specification 1.4 and move to the newer format which supports all PDF's ie. up to 1.7.  I would like to point out at this stage that obviously most of the work on the newer PDF format was not done by me but by Dhiru. Who was amazingly helpful along with everyone else on John's mailing list when I asked about how things worked and what I should focus on in order to improve John. In fact I really think John is a great example of a project which is really easy to get involved in with and has what seems like a really nice development community.

Others:

There were other things but I think I've yammered on log enough. Anything else will probably be on my github page.


Tuesday, 11 September 2012

Quick Update to the Jupiter Broadcasting Android App

So I have replaced the parser with a variant of my parser from my JavaME app. I have also replaced the GUI from the RSS reader and will be implementing a download feature as well as the stream and go to web page features currently available. I have just replaced version on the market with the new version and will wait a few days before implementing the download feature as this will require a permission change and I want people to auto update to the latest UI before I ask anyone to update which I will have to do if I change the permission settings.

Android app on Google Play




The code is now on github here under the MIT License so if anyone wants to help out feel free and don't just the code to harshly as I originally wrote most of this app a year or so ago, while overly caffeinated watching a live episode of techsnap.

On another note, the app now has a competitor Callisto. Frankly its awesome and choice is always good also since both the apps are free and open source its hardly that much of a competition as either of us could take each others code whenever we pleased. Although I think my license is more compatible with that sort of behavior. Its still in alpha but I recommend you check it out and see which one you like better. I quite liked the in built IRC client in Callisto. Another awesome thing about Callisto is that it supports from android 1.6 up which means it supports older phone that my app doesn't. Unfortunately it also means supporting the live video stream for Callisto is probably not going to happen. However the creation of Callisto might give me the opportunity to change the API version of my app to 3.0 to support the HLS video stream rather than the RTSP stream with the knowledge that my users have somewhere to turn in Callisto. Anyway best of luck to Callisto and its developer, who I have to give mad props to doing this in Android 1.6 as I personally wouldn't have creating my Jupiter Broadcasting app with out the Media API that came in 2.2.


Thursday, 6 September 2012

Java ME Permissions Suck and another Jupiter Broadcasting App

So I decided on the development platform and the app, I was going to write for the new/old phone the Sony Ericsson P1i. I would write the app for JavaME because at least then other people can use it. There are supposed to be more JavaME enabled phone in the world than androids. Therefore this way it won't be completely useless to others.

Getting setup up for development wasn't very difficult. I downloaded NetBeans with the JavaME plugin. (Note in order for JavaME to work you'll also need the JavaEE plugin. Its a bug :( ) I also downloaded the Visual Designer Plugin which is a really nice bit of kit to help with both the flow of your application and GUI design. I felt it really helped me to keep most of the back end code abstracted from the GUI.

The application I decided to write was a Jupiter broadcasting app because the default RSS reader on my P1i can't handle the feeds from the Jupiter broadcasting properly. I didn't port my android app instead I decided to do a complete re-write. Although I'm very tempted to swap out some of the old android app's parser with the new one from this app. Deciding I wanted a videos feed and a MP3 feed. I sat down a wrote an xml parser using the java sax library.

What's interesting about programming in JavaME isn't not what it can do but what it can't. I had to forgo the use of many features of Java that I'm very used too. The lack of generics and "for each" loops especially made me cringe but I persevered. The only major issue I came across was the permissions for JavaME Mid-lets. They are, to put it lightly, the most annoying thing I have ever seen on a phone(including crazy frog) and without a certificate, from Verisign or Thawte (Very Pricey), they don't go away. I mean every time a platform request or access to anything outside the app is made it asks the user about permissions and then doesn't save that as a setting !!!

I'll have to say some nice things about JavaME after that rant.

  • Its looks and feels for the most part native. (Which isn't something you can usually say about a java app)
  • Even though its all Java. It was much easier to pick up than I remember android being.
  • Its on a lot of devices. It even over took android, for while at the start of this year.

Anyway for those Jupiter broadcasting fans who have JavaME enabled phones.

Source code is on git hub
or
Download the jar to you phone.

It's still in active development(beta) so if you have any bugs let me know. I'm currently looking at new features like a
  • Live stream
  • Categorized show feeds (Done)
  • A file browser for previous downloads
 I'm probably going to MIT license it.

Here are a few more screenshots for those interesting. I think my phone's theme lends a lot to them but you have to admit the app looks a hell of a lot prettier than than my android version:

Thursday, 23 August 2012

A Bit of a warning

To all those who read this for interesting pieces of software to use. I have a sad announcement I just bought a new phone or to be more specific an old phone. The Sony Ericsson p1i to be exact , much better than the IPhones and Androids of it's day and in my opinion still better at some things. (Hand writing recognition and UI) This means that I may end up writing a quite a bit of software which you won't be able to use, sorry. Unless of course you have a Symbian phone or I use a more cross platform development platform.

Currently the platforms I'm looking into are:

  • SDL/C++ 
    • My God they ported SDL to everything
  • UIQ3/C++ 
    • Probably not going to use this unless I can find a way of making use of the UIQ 2 OpenQub GUI builder
  • Java ME (Midlets)
  • HTML/JavaScript
    • This will be interesting as I will only be able to use a fraction of the API that I'm used to having
  • PhoneGap
    • Apparently early versions of this can run on UIQ
  • PyUIQ
    • Looks good for prototyping but not sure if it will be very useful
  • QT/C++
    • Basically QT only relies on the core part of the Symbian OS that both UIQ and S60 symbian phones have in common. So if I get it compiling I should be able to jump into QT creator and develop a nice QT app. Albeit with an older version of QT.
  • Emulators
    • The P1i has an impressive display of emulators which can all be developed for
      • Sega Mega Drive
      • Game Boy
      • Dos
      • C64
    • Obviously some of these aren't practical but then again some might be.
Anyway maybe something useful for others will come out of the server side stuff or there's a couple of people who still love UIQ devices out there who will see this post.