<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chirashi Security</title>
	<atom:link href="http://chirashi.zenconsult.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://chirashi.zenconsult.net</link>
	<description>Scattered Thoughts on Security</description>
	<lastBuildDate>Mon, 25 Nov 2013 08:08:32 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8.1</generator>
	<item>
		<title>Custom Authentication with Google Cloud Endpoints using App Engine Java</title>
		<link>http://chirashi.zenconsult.net/2013/07/custom-authentication-with-google-cloud-endpoints-using-app-engine-java/</link>
		<comments>http://chirashi.zenconsult.net/2013/07/custom-authentication-with-google-cloud-endpoints-using-app-engine-java/#comments</comments>
		<pubDate>Thu, 25 Jul 2013 17:14:12 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[HOWTO]]></category>

		<guid isPermaLink="false">http://chirashi.zenconsult.net/?p=704</guid>
		<description><![CDATA[How&#8217;s THAT for a title? I am enamoured with all things Google. Especially the new Google Cloud Endpoints that run on Google App Engine for Java. Its magnificent. All I need to do is write my Entities and then write my end point classes that simply contain a get, insert, update or remove method. App [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>How&#8217;s THAT for a title?</p>
<p>I am enamoured with all things Google. Especially the new <a href="https://developers.google.com/appengine/docs/java/endpoints/" target="_blank">Google Cloud Endpoints</a> that run on <a href="https://developers.google.com/appengine/docs/java/" target="_blank">Google App Engine for Java</a>. Its magnificent. All I need to do is write my Entities and then write my end point classes that simply contain a get, insert, update or remove method. App Engine Cloud Endpoints does the heavy lifting and routing to give me a REST API that responds in JSON. I find it ideal when I am on a project and have a hard time recruiting Java developers.</p>
<p>I write the back end myself on GAE/J using Cloud Endpoints. Then I document my API in as close a look and feel to the Twitter API documentation. Then I ask search for skilled developers who have coded Twitter or Facebook apps who are familiar with using the respective REST API. For authentication, I can easily use OAuth2 and the <a href="https://developers.google.com/appengine/docs/java/users/" target="_blank">GAE Users Service</a>. This approach is great to build apps quickly and to not have to worry about handling and storing credentials. My users simply need a Gmail account or an OpenID account. But what of those times when you want to give your end-users a bigger choice? What if you DO want to handle and store user credentials? Well, then you&#8217;re kinda out of luck because there is still no support for handling custom authentication with GAE/J and Cloud Endpoints. You can, however, write your own authentication mechanism. This post is an attempt to get you started on this path.</p>
<p>Looking at the Java Source of Cloud Endpoints you will notice that your API method will receive the raw HTTPServletRequest object. This is a great start. With this, you can grab a hold of HTTP_COOKIE header variables.</p><pre class="crayon-plain-tag">public Food getFood(@Named("name") String name, HttpServletRequest req){
    Cookie[] cookies = req.getCookies();
}</pre><p>It would be so awesome if we had access to the <pre class="crayon-plain-tag">req.getSession()</pre>  but alas we don&#8217;t. So my idea was to build a Session object that I would persist in the DataStore. I use <a href="https://code.google.com/p/objectify-appengine/" target="_blank">Objectify</a> for this. Objectify is awesome. You should use it. Inside this Session object, I&#8217;d be able to set various attributes very similar to the HTTPSession object. I would then use these attributes to figure out whether my user was logged in or not. Then, at each endpoint, I would write a custom routine to handle the HTTPServletRequest&#8217;s cookies. The Session object looks a bit like this:</p><pre class="crayon-plain-tag">package net.zenconsult.server.model;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import lombok.Data;
import lombok.Getter;

import org.apache.commons.codec.binary.Hex;

import com.googlecode.objectify.annotation.Cache;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Index;
import com.googlecode.objectify.annotation.Serialize;

@Entity
@Cache
@Data
public class Session {
	private long expirySeconds = 5 * 60 * 1000;
	@Id @Getter String id;

	@Index
	@Getter
	Date created;

	@Index
	@Getter
	Date expiry;

	@Getter
	@Serialize List&lt;Attribute&gt; attributes = new ArrayList&lt;Attribute&gt;();

	public Session(){
		try {
			MessageDigest md = MessageDigest.getInstance("SHA");
			SecureRandom rnd = new SecureRandom();
			byte bytes[] = new byte[20];
			rnd.nextBytes(bytes);
			md.update(bytes);
			String id = Hex.encodeHexString(md.digest());
			this.id = id;
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		this.created = new Date();
		this.expiry =  new Date( created.getTime() + expirySeconds );
	}

	public void setAttribute(String name, Object value){
		if(!this.isExpired()){
			attributes.add(new Attribute(name, value));
		}
	}

	public Object getAttribute(String name){
		if(!this.isExpired()){
			for(int x=0; x &lt; attributes.size(); ++x){
				if(name.equals(attributes.get(x).getName())){
					return attributes.get(x).getValue();
				}
			}
		}
		return null;
	}

	public boolean isExpired(){
		return (new Date().after(expiry));
	}
}</pre><p>Note that I&#8217;m using <a href="http://projectlombok.org/" target="_blank">Project Lombok</a> to handle the Getter and Setter creation for my Session object. Now to create a Session, I will need to first authenticate against something. At this time, I&#8217;m using a very simple User object of my own that stores a user password in plaintext. You should ideally just want to store a hash of the password so that even if compromised, your user passwords are safe. I&#8217;ll leave that up to you to figure out. My User object looks a bit like this:</p><pre class="crayon-plain-tag">package net.zenconsult.server.model;

import java.util.Date;

import lombok.Data;
import lombok.Getter;

import com.googlecode.objectify.Key;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Index;

@Entity
@Data
public class Customer {
	public static Key&lt;Customer&gt; key(String email) {
		return Key.create(Customer.class, email);
	}

	@Id @Getter String email;

	@Index @Getter
	String name;

	@Getter
	String phone;

	@Index @Getter
	Date created;

	@Getter
	String password;

}</pre><p>I write a simple HTTPServlet to handle my login authentication like so:</p><pre class="crayon-plain-tag">public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws IOException {

		// Le horrible parameter fetching with NO validation
		String email = req.getParameter("email");
		String pass = req.getParameter("pass");

		Customer cust = ofy.load().key(Key.create(Customer.class, email)).now();

		if(cust != null &amp;&amp; cust.getPassword().equals(pass)) {
			Session a = new Session();
			a.setAttribute("user", cust.getEmail());
			a.setAttribute("time",new Date());
			Key&lt;Session&gt; sess = ofy.save().entity(a).now();
			resp.addCookie(new Cookie("cookeh",a.getId()));

			resp.sendRedirect("/loggedin.html");

		} else {
			resp.setContentType("text/plain");
			resp.getWriter().println("Failed to login");
		}</pre><p>For the love of God, please make your version better than mine. Ok, so now we&#8217;ve got to the point where we&#8217;ve validated our end user and have set an HTTP_COOKIE header called &#8220;cookeh&#8221;. The browser should do the rest, sending this cookie with each subsequent request that is made. All that&#8217;s left to do is to handle the requests made to our endpoints. I would do it something like this:</p><pre class="crayon-plain-tag">public Food getFood(@Named("email") String email, HttpServletRequest req){
		Food food = null;
		Cookie authCookie = getAuthCookie(req.getCookies());
		if(authCookie != null){
			Session sess = ofy.load().key(Key.create(Session.class,authCookie.getValue())).now();
			if(!sess.isExpired()){
				System.out.println(sess.getAttribute("user"));
				food = ofy.load().key(Key.create(Food.class, email)).now();
			}
		}		
		return food;
	}

	private Cookie getAuthCookie(Cookie[] cookies){
		for(int x=0; x &lt; cookies.length; ++x){
			if(cookies[x].getName().equals("cookeh"))
				return cookies[x];
		}
		return null;
	}</pre><p>That&#8217;s pretty much it. I now have my own Session management in place that I can use to provide my own custom authentication scheme when using Cloud Endpoints. One thing you may want to do is to kill the Session object when a user logs out. Also, you may want to remove stale cookies that have expired using a scavenger process that is setup to run periodically by using <a href="https://developers.google.com/appengine/docs/java/config/cron" target="_blank">GAE&#8217;s Cron Service</a>. I guess you would write something like this:</p><pre class="crayon-plain-tag">package net.zenconsult.server.servlets;

import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.zenconsult.server.model.OfyService;
import net.zenconsult.server.model.Session;

import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;

@SuppressWarnings("serial")
public class ScavengerServlet extends HttpServlet{
	private static final Objectify ofy = OfyService.ofy();

	public void doGet(HttpServletRequest req, HttpServletResponse resp){
		Date now = new Date();
		List&lt;Session&gt; sessions = ofy.load().type(Session.class).filter("expiry &lt;", now).list();
		for(int x=0; x &lt; sessions.size(); ++x){
			ofy.delete().key(Key.create(Session.class,sessions.get(x).getId())).now();
		}
	}
}</pre><p>That&#8217;s it. This is obviously my first attempt at this and I will be polishing it off as much as possible. Once I do, I&#8217;ll most likely upload the code to github; unless the folks at Cloud Endpoints hook up the HTTPSession object and my code is no longer needed. Until then, happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2013/07/custom-authentication-with-google-cloud-endpoints-using-app-engine-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhoneSnoop was NEVER available for SALE</title>
		<link>http://chirashi.zenconsult.net/2013/04/phonesnoop-was-never-available-for-sale/</link>
		<comments>http://chirashi.zenconsult.net/2013/04/phonesnoop-was-never-available-for-sale/#comments</comments>
		<pubDate>Wed, 03 Apr 2013 16:46:22 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://chirashi.zenconsult.net/?p=701</guid>
		<description><![CDATA[I have been receiving countless emails from people asking me for the download location of PhoneSnoop. This is after they had paid money to some. The most recent person that emailed me paid as much as $137 for it. Please note that I have NEVER meant for PhoneSnoop to be an application that was for [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I have been receiving countless emails from people asking me for the download location of PhoneSnoop. This is after they had paid money to some. The most recent person that emailed me paid as much as $137 for it. Please note that I have NEVER meant for PhoneSnoop to be an application that was for sale NOR was it even a fully functional app. It was simply a Proof of Concept. If you have paid for PhoneSnoop, then you have been scammed. I advise you to immediately enact a Credit Card chargeback on your transaction or reversal if you made payment through PayPal or other similar site. Also, I highly recommend that you email me and let me know which site is selling PhoneSnoop so I can appropriately report them to the authorities.</p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2013/04/phonesnoop-was-never-available-for-sale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Official Site for Android Apps Security</title>
		<link>http://chirashi.zenconsult.net/2012/09/official-site-for-android-apps-security/</link>
		<comments>http://chirashi.zenconsult.net/2012/09/official-site-for-android-apps-security/#comments</comments>
		<pubDate>Thu, 20 Sep 2012 19:20:49 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://chirashi.zenconsult.net/?p=690</guid>
		<description><![CDATA[As promised, I&#8217;ve setup a page for my book, Android Apps Security. You can download the Table of Contents, buy the book through Amazon and get sample chapters (coming soon). And now, without further ado, here is the site for my book, Android Apps Security: http://www.androidappssecurity.com/]]></description>
				<content:encoded><![CDATA[<p>As promised, I&#8217;ve setup a page for my book, Android Apps Security. You can download the Table of Contents, buy the book through Amazon and get sample chapters (coming soon). And now, without further ado, here is the site for my book, Android Apps Security: <a href="http://www.androidappssecurity.com/">http://www.androidappssecurity.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2012/09/official-site-for-android-apps-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My book is out!</title>
		<link>http://chirashi.zenconsult.net/2012/09/my-book-is-out/</link>
		<comments>http://chirashi.zenconsult.net/2012/09/my-book-is-out/#comments</comments>
		<pubDate>Fri, 14 Sep 2012 15:33:20 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://chirashi.zenconsult.net/?p=683</guid>
		<description><![CDATA[After a long delay, mostly caused by me, my book on Android Apps Security is out! You can grab a copy on Amazon. I&#8217;m also setting up a site where you can comment or send in any errata on the book if you&#8217;ve read it. I&#8217;ll announce that in the coming days.]]></description>
				<content:encoded><![CDATA[<p>After a long delay, mostly caused by me, my book on <a href="http://bit.ly/R33eel" target="_blank">Android Apps Security</a> is out! You can grab a copy on Amazon. I&#8217;m also setting up a site where you can comment or send in any errata on the book if you&#8217;ve read it. I&#8217;ll announce that in the coming days.</p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2012/09/my-book-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puttering around with BlackBerry forensics &#8212; Part 2</title>
		<link>http://chirashi.zenconsult.net/2011/09/puttering-around-with-blackberry-forensics-part-2/</link>
		<comments>http://chirashi.zenconsult.net/2011/09/puttering-around-with-blackberry-forensics-part-2/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 14:53:29 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Forensics]]></category>

		<guid isPermaLink="false">http://chirashi.zenconsult.net/?p=637</guid>
		<description><![CDATA[Okay then. It apparently takes me a while between posts. I&#8217;ve been keeping a bit busy with several projects and it has been difficult to find the time to conduct much research or write blog posts. I do have an upcoming white-paper that I will release somewhere in November. It includes source code to the toolkit that [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Okay then. It apparently takes me a while between posts. I&#8217;ve been keeping a bit busy with several projects and it has been difficult to find the time to conduct much research or write blog posts. I do have an upcoming white-paper that I will release somewhere in November. It includes source code to the toolkit that I will release as well. The topic is loosely based on BlackBerry forensics and malware. In this case, however, it won&#8217;t be on how to find data, but will instead focus on how you can destroy or introduce large quantities of misleading data to frustrate and annoy malware controllers and forensic analysts. Probably not going to win many friends in certain circles with this, but at least I can force everyone to change their analysis methods.</p>
<p>Today, girls and boys, we&#8217;re going to look at the second utility I released that helps with analyzing BlackBerry data. Behold! <a href="https://github.com/sheran/ConParse">ConParse</a>!</p>
<h2>ConParse</h2>
<p>ConParse is a utility that helps you take a look inside a BlackBerry .con file. The .con file is generated when you choose to backup your BBM contacts on your device. These days, RIM allows you to back your BlackBerry Messenger (5 and above) contacts up to some remote location that we will henceforth refer to as the cloud. But if you fancied, you could also back up your BBM contact list to your device memory or SD Card. I present the obligatory screenshots below, thereby providing you with both hands and a flashlight. Access the screens by selecting Options from your BlackBerry messenger application.</p>
<p><a href="http://chirashi.zenconsult.net/wp-content/uploads/2011/09/mgmt.png"><img class="alignnone size-medium wp-image-642" style="border-width: 1px; border-color: black; border-style: solid;" title="mgmt" src="http://chirashi.zenconsult.net/wp-content/uploads/2011/09/mgmt-225x300.png" alt="" width="225" height="300" /></a>      <a href="http://chirashi.zenconsult.net/wp-content/uploads/2011/09/backup.png"><img class="alignnone size-medium wp-image-641" style="border-width: 1px; border-color: black; border-style: solid;" title="backup" src="http://chirashi.zenconsult.net/wp-content/uploads/2011/09/backup-225x300.png" alt="" width="225" height="300" /></a></p>
<p>Now then. If we take a quick peek inside the .con file it looks a right mess of randomly placed hexadecimal characters and readable text, much like most other binary files. Since not everyone is able to grok raw hex data when they look at it and because no prior documentation existed for it, I set out to make sense of this beast. If prior documentation did exist, then will the person who wrote it please speak with their SEO provider? Because you&#8217;re getting ripped off big time. If you care to dig through my source code, you may find some details on the file structure itself. If looking at badly written source code gives you hives, then I will try to explain it here.</p>
<p>The .con file header is interesting. The first byte tells you the size of a unique string of bytes to follow. So far it has always been 32 bytes. This 32 byte string is a signature or hash of your .con file. Its sole purpose is to ensure that you do not import .con files belonging to other devices. I haven&#8217;t bothered <a href="http://chirashi.zenconsult.net/2010/07/everything-can-be-reversed-everything/">reverse engineering</a> the .cod files yet to see what they use to generate this signature. In the tests I did, however, it is evident that the signature differs each time you generate a backup file and swapping signatures from other devices will render your backup file invalid.</p><pre class="crayon-plain-tag">20 C3DCA86024DCCC531A96199327B7F4E7224EF4FF52E7C0978C02C9E5F347D87F 7F80 00 00 70 05</pre><p>In the byte sequence above (all hex), the first byte indicates the size of the signature (32 bytes), then the signature of 32 bytes follows.</p>
<p>Now that the signature is out of the way, the actual file header begins. The bytes 0x7F 0&#215;80 indicate the start of the .con file. After this, the next 4 bytes indicate the size of the remaining data in the file. In this case it is 28677 bytes.</p>
<p>Immediately after this, the records start. You can find some of the following types of records in a .con file:</p>
<ul>
<li>Your name and device PIN</li>
<li>All your contacts and groups (their PINS, names, custom names you&#8217;ve chosen for them, status messages, etc)</li>
<li>Your profile picture</li>
<li>Timezone and Country flag image filename</li>
<li>Base64 Code and Hex Code (Haven&#8217;t looked at these extensively yet, but could have something to do with an authorization code and/or the string used to generate your <a href="http://chirashi.zenconsult.net/2009/10/blackberry-qrcodes-a-look-inside/">QR Code</a>)</li>
</ul>
<div>I&#8217;m not going to break down each record here, but will just give you the basic structure which is quite simple:</div>
<p></p><pre class="crayon-plain-tag">00 08 0A 32 31 30 30 30 30 41</pre><p>The record above is a device PIN record. The first two bytes indicate the size of the record, then third byte indicates the record type and the remaining bytes (up to the record size) contain the data. RIM follows the same principle of storing size and type before data as it did in the IPD databases.</p>
<p>That&#8217;s it. You&#8217;re now a .con file expert. Go forth and dissect the crap out of the file. Use ConParse as a guideline or just use it to parse out .con files at your next party &#8212; guaranteed to get you laid.</p>
<p>Here&#8217;s another screenshot of the type of output you can expect from ConParse. Admittedly, it is just a couple of steps away from raw hex.</p>
<p><a href="http://chirashi.zenconsult.net/wp-content/uploads/2011/09/theshizz.png"><img class="alignnone size-medium wp-image-646" style="border-width: 1px; border-color: black; border-style: solid;" title="theshizz" src="http://chirashi.zenconsult.net/wp-content/uploads/2011/09/theshizz-300x151.png" alt="" width="300" height="151" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2011/09/puttering-around-with-blackberry-forensics-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puttering around with BlackBerry forensics &#8212; Part 1</title>
		<link>http://chirashi.zenconsult.net/2011/07/puttering-around-with-blackberry-forensics-part-1/</link>
		<comments>http://chirashi.zenconsult.net/2011/07/puttering-around-with-blackberry-forensics-part-1/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 16:29:38 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Forensics]]></category>
		<category><![CDATA[bbt]]></category>
		<category><![CDATA[conparse]]></category>
		<category><![CDATA[event logs]]></category>
		<category><![CDATA[evt2sqlite]]></category>

		<guid isPermaLink="false">http://chirashi.zenconsult.net/?p=603</guid>
		<description><![CDATA[I&#8217;m guilty of sitting on source code which I should have released a long time ago.  I make excuses to myself that I didn&#8217;t release any of it because I was waiting for someone to come along and prove to me that there was a better way of doing things.  I guess the bottom line [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m guilty of sitting on source code which I should have released a long time ago.  I make excuses to myself that I didn&#8217;t release any of it because I was waiting for someone to come along and prove to me that there was a better way of doing things.  I guess the bottom line was that I was just lazy and procrastinating.</p>
<p>Today, I&#8217;m releasing source code to three of my projects that I&#8217;ve been incubating.  1) <a href="https://github.com/sheran/bbt">bbt</a> 2) <a href="https://github.com/sheran/evt2sqlite">evt2sqlite</a>  3) <a href="https://github.com/sheran/ConParse">ConParse</a> Take! Build! Enjoy! <del>At some point or another, I may just split them up into their own repos.  For now, they all live in the <a href="https://github.com/sheran/bb-tools">bb-tools</a> repository down at github.</del> <strong>Update:</strong><em> I&#8217;ve split them up now</em></p>
<p>In today&#8217;s post, I&#8217;ll cover the first tool, bbt.</p>
<h3>bbt</h3>
<p>bbt is a python script that analyzes the thumbnail cache from a BlackBerry.  The purpose of a thumbnail cache in any system, is generally to speed up the browsing of large numbers of graphic or video files.  Instead of presenting a static icon to the user, a small thumbnail of the picture or frame of the video file is shown.  Apparently this is a good thing, because  you can see an icon of the image that you&#8217;re clicking on and will hopefully be able to find the file you&#8217;re looking for quicker.  Typically, the Operating System will find and shrink pictures found in directories of the filesystem.  These shrunk pictures will then be placed inside the thumbnail cache.</p>
<p>When conducting a digital forensics analysis of a computer, looking for these thumbnail caches often provide clues as to what files may have existed before they were deleted off the file system.  The thumbnail cache is important enough to warrant its <a href="http://www.forensicswiki.org/wiki/Thumbs.db">own entry</a> on the Forensics Wiki (albeit only the Windows thumbnail cache is spoken about).  The principle generally remains the same when extended to the BlackBerry device as well.  So, bottom line: being able to analyze this file is useful.</p>
<p>bbt will do just that for thumbnail cache files found on BlackBerry devices.  There are two types of thumbnail caches on the BlackBerry device: 1) BBThumbs.dat format 2) key/dat format.</p>
<p>Format 1 is pre OS 5.0 and the key/dat format is post OS 5.0  The key/dat combination is interesting because it uses two files to keep track of thumbnails.  They look something like thumbs86x86.key and thumbs86x86.dat (the 86&#215;86 indicates the size of the thumbnail &#8211; 86 pixels by 86 pixels).  I&#8217;ve noticed quite a few interesting things in these files and no doubt, you will too after you look through the source or play around with them long enough:</p>
<ol>
<li>The BBThumbs.dat header is 0&#215;24052003 (which is a hex number)</li>
<li>The thumbs.dat file header is 0&#215;22062009 (hex again)</li>
<li>The thumbs.key file header is 0&#215;08062009 (hex)</li>
</ol>
<p>This is pure speculation, but if you took those hexadecimal representations and looked at just the numbers, don&#8217;t they look like dates?</p>
<ul>
<li>0&#215;24052003 &#8211;&gt; 24 05 2003</li>
<li>0&#215;22062009 &#8211;&gt; 22 06 2009</li>
<li>0&#215;08062009 &#8211;&gt; 08 06 2009</li>
</ul>
<p>Maybe birth dates of the file format itself or someone significant to someone who wrote it? Dunno.</p>
<p>Another interesting observation of the key/dat thumbnail cache is that it not only stores image thumbnails, but also stores details of all types of media including &#8216;wav&#8217;, &#8216;mp3&#8242;, and &#8216;mid&#8217;.  It doesn&#8217;t store any content inside it though.  The only content stored inside the files is image data.</p>
<p>I&#8217;m not actually going to tell you what is found inside the thumbs files in this post, but instead, I am going to tell you how to run bbt.  bbt is a python script and as such will require that you have python installed on your system.  I&#8217;d always recommend cloning my <a href="https://github.com/sheran/bb-tools">repository on github</a> so that you can easily pull any updates.  You may also want to sign up for a <a href="http://github.com">github</a> account and watch the repository so that you will be notified of any commits I make.  You could also fork the project and get to work on it yourself.</p><pre class="crayon-plain-tag">azazel:Device sheran$ ~/github/bb-tools/bbt/bbt.py
Usage: bbt.py [options]
  -h, --help: This cruft
  -k, --key &amp;lt;bbthumbs key file&amp;gt;: Process post OS5 thumbs.key file (requires thumbs.dat file in same directory)
  -b, --bbthumbs &amp;lt;old bbthumbs file&amp;gt;: Process pre OS5 BBThumbs.dat file
  -x, --extract: Extracts the thumbnails into directory specified by -o
  -o, --output &amp;lt;output directory&amp;gt;: Directory to extract thumbs to (used only with -x)
azazel:Device sheran$</pre><p>The output above is what you will receive if you run bbt without options.  As of the latest release (0.3b), the most magical thing you can do with this tool is to extract the thumbs into a specific output directory.  Additionally, bbt will parse out information about 1) What thumbnails are stored in the file (filename) for BBThumbs.dat files or 2) Where at what offset in a &#8216;dat&#8217; file a specific record id is stored.  Here&#8217;s some example output when parsing a key/dat pair:</p><pre class="crayon-plain-tag">azazel:Device sheran$ ~/github/bb-tools/bbt/bbt.py -k thumbs116x116.key -x -o out
*** Processing thumbs116x116.key on 2011-07-22 21:50:48.156899
Record ID C620B80A is at offset 7 in 'dat' file // [1306132653179.jpeg]
Record ID DB0B7CA3 is at offset 25930 in 'dat' file // [1306492410606.jpeg]
Record ID D2EC23E3 is at offset 52123 in 'dat' file // [1306732433796.jpeg]
*** thumbs116x116.key has 9 records
*** Processed 3 records
azazel:Device sheran$</pre><p>When you parse a key/dat file combination, you need to make sure that both the &#8216;key&#8217; and &#8216;dat&#8217; file are in the same directory.  When you run bbt, you will point it to the location of the &#8216;key&#8217; file.  From the output above, you can see that it has discovered 3 records, corresponding record ids and offsets where they are stored in the &#8216;dat&#8217; file.  Also, the filename of the thumbnail is provided.  What do the offsets mean?  Well, if you were to take the numbers and open up the &#8216;dat&#8217; file in a hex editor, then you would land on the location where that specific record began.  This is what it looks like:</p>
<p><a href="http://chirashi.zenconsult.net/wp-content/uploads/2011/07/Screen-shot-2011-07-22-at-9.51.50-PM.png"><img class="alignnone size-medium wp-image-617" title="inside the dat file" src="http://chirashi.zenconsult.net/wp-content/uploads/2011/07/Screen-shot-2011-07-22-at-9.51.50-PM-300x154.png" alt="" width="300" height="154" /></a></p>
<p>The highlighted portion is the first part of the record with the correct starting offset.  You may also notice that the &#8216;key&#8217; file supposedly has 9 records but only 3 were processed.  This happens because the &#8216;key&#8217; file holds 9 record ids and 9 offsets, but only 3 of those actually match up in the &#8216;dat&#8217; file.  One assumption that can be made is that the files were deleted from the &#8216;dat&#8217; file, but the ids and offsets still remained in the &#8216;key&#8217; file.</p>
<p>bbt also has the &#8216;-x&#8217; option which allows you to extract the thumbnails that are inside either the BBThumbs.dat file or the key/dat files.  You do this by specifying the &#8216;-x&#8217; option along with the &#8216;-o&#8217; option to tell bbt where to extract the thumbnails to.  You will need to make sure that the output directory specified by the &#8216;-o&#8217; option does not already exist.</p>
<p>For now, that&#8217;s as much as you&#8217;re going to get out of bbt.  Some features that are planned in the roadmap for bbt are:</p>
<ul>
<li>HTML Reporting</li>
<li>Identification of Exif data within thumbnails</li>
<li>Completely parsing some of the header and record bytes that are as yet unknown</li>
</ul>
<p>I&#8217;ll cover the other tools in subsequent posts.  For now, though, the tools are all live in the github repository.  All of the tools contain a basic README doc that tells you how to get started with each of the tools.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2011/07/puttering-around-with-blackberry-forensics-part-1/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Comparing JTR compiled on GCC and Clang</title>
		<link>http://chirashi.zenconsult.net/2011/07/comparing-jtr-compiled-on-gcc-and-clang/</link>
		<comments>http://chirashi.zenconsult.net/2011/07/comparing-jtr-compiled-on-gcc-and-clang/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 14:50:58 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Non Security]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Blowfish]]></category>
		<category><![CDATA[Clang]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[John the Ripper]]></category>
		<category><![CDATA[JtR]]></category>
		<category><![CDATA[LLVM]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://chirashi.zensay.com/?p=562</guid>
		<description><![CDATA[I bought the new XCode 4 recently and it is a pretty awesome IDE. I only recently got into Objective-C coding, but I have VERY quickly fallen in love with the language and the IDE.  I generally regarded my language of choice to be Java and my all time favorite IDE has been Eclipse, but [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I bought the new <a href="http://developer.apple.com/xcode/">XCode</a> 4 recently and it is a pretty awesome IDE. I only recently got into Objective-C coding, but I have VERY quickly fallen in love with the language and the IDE.  I generally regarded my language of choice to be Java and my all time favorite IDE has been Eclipse, but I&#8217;d have to say XCode and Objective C comes very very close to dethroning the Java/Eclipse combo.</p>
<p>Having said this, though, adapting to XCode 4 is a bit of a challenge after using XCode 3 for a while.  Have a look at this <a href="http://fireballed.org/linked/2011/03/09/xcode-pilkington/">awesome review</a> of XCode 4.  It helped me make some sense of the new features and how to wrap my head around using this magnificent beast.  As of this post, the one major point that I absolutely hated about XCode 4 is the actual purchase/download process.  It took me about 10 hours to download its gargantuan 4.5GB on a 6Mbit line.</p>
<p>Now that that&#8217;s out of the way, I wanted to get down to one of the front-page features of XCode 4: <a href="http://llvm.org/">LLVM</a>.  The Apple XCode <a href="http://developer.apple.com/technologies/tools/">page</a> states:</p>
<p><em>&#8220;Apple’s next generation compiler technology, the Apple LLVM compiler, does more than build your app. Apple LLVM technology is integrated into the entire development experience. The same parser used to build C/C++ and Objective-C powers Xcode’s indexing engine, providing incredibly accurate code completions. As you work, Apple LLVM is constantly evaluating what you type, identifying coding mistakes that Xcode shows as Live Issues, and thinking ahead for ways to Fix-it for you. Other compilers can tell you what is wrong &#8212; Apple LLVM can make it right.&#8221;</em></p>
<p>Being the curious type, I thought I&#8217;d give LLVM, or more specifically <a href="http://clang.llvm.org/">Clang</a>, a try.  I figured the best way to do this is to compare a program compiled with Clang against the same one compiled with the venerable GCC compiler.  While there are benchmarks that were done in 2010 (<a href="http://www.phoronix.com/scan.php?page=article&amp;item=gcc_llvm_clang&amp;num=1">here</a> and <a href="http://www.phoronix.com/scan.php?page=article&amp;item=llvm_gcc_dragonegg28&amp;num=1">here</a>), I wanted to verify how the latest version of Clang would perform.</p>
<h3>My test environment:</h3>
<ol>
<li>OS X 10.6.8 running on a Core 2 Duo 13&#8243; MacBook</li>
<li>Clang version 2.0 based on LLVM 2.9svn</li>
<li>GCC version 4.2.1 build 5666</li>
<li>John the Ripper 1.7.8 Jumbo 2 from <a href="http://www.openwall.com/john/">source</a></li>
</ol>
<p>To start off, I thought I&#8217;d test how long each compiler would take to build JTR.  I made two copies of the JTR source under &#8220;john-llvm&#8221; and &#8220;john-gcc&#8221;.  Then I edited the &#8220;john-llvm&#8221; Makefile and changed the &#8220;CC&#8221; parameter to &#8220;clang&#8221; from the default value of &#8220;gcc&#8221;.  I ran &#8220;make macosx-x86-64&#8243; on both directories after that.  Here are the respective build times (I used &#8220;time&#8221; to time the builds):</p>
<p><strong>Clang:</strong></p>
<ol>
<li>real 0m41.382s</li>
<li>user 0m37.316s</li>
<li>sys 0m2.648s</li>
</ol>
<p><strong>GCC:</strong></p>
<ol>
<li>real 0m38.721s</li>
<li>user 0m34.067s</li>
<li>sys 0m3.540s</li>
</ol>
<p>I then ran &#8220;john &#8211;test&#8221; on each build.  Here are the results for the &#8220;OpenBSD Blowfish (x32) [32/64 X2]&#8221; test:</p>
<p><strong>Clang:</strong></p>
<p>260 c/s real, 257 c/s virtual</p>
<p><strong>GCC:</strong></p>
<p>410 c/s real, 410 c/s virtual</p>
<h3>Conclusion</h3>
<p>Admittedly, I haven&#8217;t used any sophisticated test frameworks, and I&#8217;ve done more or less a &#8220;layman&#8217;s&#8221; set of tests.  But the results are clear: JTR compiled with GCC will crack your Blowfish password in half the time it would take for JTR compiled with Clang to do so.  It also takes less time to build JTR using GCC than it does to build it with Clang.</p>
<p>Obviously the hardware has a lot to do with test results and also the OS.  It would be interesting to see what the results look like when Lion is released this month.</p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2011/07/comparing-jtr-compiled-on-gcc-and-clang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQLite Data Recovery</title>
		<link>http://chirashi.zenconsult.net/2010/11/recover-deleted-data-from-sqlite-databases/</link>
		<comments>http://chirashi.zenconsult.net/2010/11/recover-deleted-data-from-sqlite-databases/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 06:50:43 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Forensics]]></category>
		<category><![CDATA[recovery]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[undelete]]></category>

		<guid isPermaLink="false">http://chirashi.zensay.com/?p=542</guid>
		<description><![CDATA[Recovering data from an SQLite database has many uses.  Why you ask? One main reason is that SQLite has increased in popularity to epic proportions.  It is the most ideal candidate for use in a resource constrained environment.  Like where you ask?  The industry most benefiting from SQLite at the moment is the mobile phone [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Recovering data from an SQLite database has many uses.  Why you ask? One main reason is that SQLite has increased in popularity to epic proportions.  It is the most ideal candidate for use in a resource constrained environment.  Like where you ask?  The industry most benefiting from SQLite at the moment is the mobile phone one.  The BlackBerry, Android and iPhone platforms rely on SQLite.  As a matter of fact, a large portion of the iPhone&#8217;s data storage, like Address Book or SMS Messages are stored in SQLite databases.  Google Chrome and Firefox store it&#8217;s history and bookmarks in SQLite Databases.  The WhatsApp application on a BlackBerry phone stores information on an SQLite Database.  It&#8217;s everywhere.</p>
<p>With all this popularity, the inner workings of SQLite have held a sense of mystery and intrigue.  But not anymore.  We&#8217;ve cracked the internals of how an SQLite database stores and handles its data.  We know where your unreferenced data hides and we know how to recover it.  So the next best thing? Write a tool for it.  Thus this post serves to introduce our new tool &#8211; SQLUn, or simply the SQLite Undeleter.  The tool is very ideally suited to Forensics Analysts and investigators who focus on smartphones &#8211; most notably iPhones.</p>
<p><a href="http://chirashi.zenconsult.net/wp-content/uploads/2010/11/sqlun_beta.png"><img class="alignnone size-medium wp-image-549" title="sqlun_beta" src="http://chirashi.zenconsult.net/wp-content/uploads/2010/11/sqlun_beta-300x269.png" alt="" width="300" height="269" /></a></p>
<p>SQLUn successfully recovers data from not only unreferenced areas of the database, but also from the slack space of referenced records.  In this manner, a Forensic Analyst is certain that data is recovered from every nook and cranny of the database and no area is left unturned.  To aid Law Enforcement analysts, SQLUn also has the ability to manage information based on a specific case number.  Additionally, data integrity is maintained by conducting SHA1 hashes of all relevant records and databases.  Data is further protected by disabling writes to the database and working off a duplicate copy rather than the database file itself.  This feature is added to ensure that the database remains intact even if the operator forgets to take a backup.</p>
<p>By now, I&#8217;m pretty sure that you&#8217;re dying to get your hands on this little gem and I don&#8217;t blame you.  If you want to become a beta tester for the application, email us at sql-beta@zenconsult.net and we will take it from there.  Please provide some details about yourself including where you work and why we should consider you for beta testing the product.  If you work in the Law Enforcement industry, please mail us from your agency email address for expedited handling of your beta tester request.</p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2010/11/recover-deleted-data-from-sqlite-databases/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Everything can be reversed.  Everything.</title>
		<link>http://chirashi.zenconsult.net/2010/07/everything-can-be-reversed-everything/</link>
		<comments>http://chirashi.zenconsult.net/2010/07/everything-can-be-reversed-everything/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 05:25:30 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[decompiler]]></category>
		<category><![CDATA[disassembler]]></category>
		<category><![CDATA[license keys]]></category>
		<category><![CDATA[registration keygen]]></category>

		<guid isPermaLink="false">http://chirashi.zensay.com/?p=533</guid>
		<description><![CDATA[I recently started reverse engineering BlackBerry applications.  I have done it before, but this time around, I focused a lot more effort and energy on it.  In short, BlackBerry apps can be decompiled; enough to the point where you can begin to write keygens for them.  Yes, much like back in the good old days. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I recently started reverse engineering BlackBerry applications.  I have done it before, but this time around, I focused a lot more effort and energy on it.  In short, BlackBerry apps can be decompiled; enough to the point where you can begin to write keygens for them.  Yes, much like back in the good old days.  I&#8217;ll spare everyone the details suffice it to say that I took the BlackBerry compiler that converts .java files to .cod files and I made it reverse its core task and spit out the BlackBerty bytecode instead of .cod files.  Bytecode that runs on the BlackBerry specific JVM.</p>
<p>The fundamental thing about reverse engineering is that you absolutely need to know how things work in forward first.  You cannot reverse without knowing how things go forwards.  So I studied the compilation process in depth and discovered that the compilation is a three-step process.  The BlackBerry compile process is not, in actuality, something magical.  It first runs javac on a plain old .java file.  The resulting .class file is then <a href="http://docs.blackberry.com/en/developers/deliverables/5580/Preverifying_BB_java_applications_447176_11.jsp" target="_blank">preverified</a> (a process by which you alter the class file in a way that you save the device JVM significant processing time).  After this, the BlackBerry compiler (rapc.jar) is executed to covert the .class file into a .cod file.  This .cod file is significantly smaller than the .class file.  It also appears to be compressed.  It is not a simple task to reverse this process.  Primarily because rapc.jar is obfuscated like a mofo and you need to spend countless hours refactoring and getting things to play well together.  But you don&#8217;t want to hear that do you?  No, instead you want to hear that I am able to reverse .cod files to the point at which I have pristine .java source code, right?  Well, yes.  I can do that.</p>
<p>As I often need to appease my evil personality, I did what most anyone else in my position would do.  I looked at a few programs out there to see if I can bypass their license key requirements.  The result?  Can you say &#8220;Shooting fish in a barrel&#8221;?  Ordinarily, I would take this moment to chide all the developers out there to use better protection, I am not going to do this today.  These days, any capable person with a laptop can write and sell applications for the iPhone or the BlackBerry.  Gone are the days where you see only larger software houses publishing commercial applications.  Now just about anyone can do it.  What each individual is willing to lose to piracy and the amount of effort they wish to spend on writing software protection is entirely up to them.  All I&#8217;m going to do today is say this: Everything can be reversed.  Everything.</p>
<p>Don&#8217;t be lulled into a false sense of security that when you write an app for the BlackBerry, your code is safe; it is not.  Your commercial protections CAN and WILL be broken.  Unless you want to lose money to this problem, the only suggestion I can offer is to consider spending more effort in designing better protections.  If not, then just forget it and go about your business as you normally would.  But be aware that an increasing number of people have the means to reverse your code.  It will only be a matter of time before sites will pop up with real working keygens that you can run on your BlackBerry device.  It will be like the second coming of the PC era where good old DOS games had keygens and keygenning groups flourished.  For those interested, what would good protection consist of?</p>
<ul>
<li>Don&#8217;t do any calculations within your app that you can compare to.</li>
<li>Consider activating your app over the internet.</li>
<li>When activating your app over the internet, use SSL, and more important, VERIFY your server certificate.</li>
<li>If you need to offer trials, write two separate programs: 1 less functional trial and 1 full featured version.</li>
</ul>
<p>To sum up, make sure that you protect what is important to you.  If your application generates revenue for you, then you will want to protect it.  Spend a little extra effort on designing a better software protection framework.  To everyone those who don&#8217;t know where to start, the company I work for offers consulting on this subject.  Get in touch with me if you&#8217;re serious about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2010/07/everything-can-be-reversed-everything/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ligatt&#8217;s Lawsuits</title>
		<link>http://chirashi.zenconsult.net/2010/07/ligatts-lawsuits/</link>
		<comments>http://chirashi.zenconsult.net/2010/07/ligatts-lawsuits/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 03:09:51 +0000</pubDate>
		<dc:creator><![CDATA[chopstick]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Lawsuit]]></category>
		<category><![CDATA[Ligatt]]></category>

		<guid isPermaLink="false">http://chirashi.zensay.com/?p=509</guid>
		<description><![CDATA[I usually follow the Ligatt saga from afar and typically take on the role of a partially interested observer.  This latest development, however, has made me want to do a little research myself. So what&#8217;s the deal?  It appears that Greg Evans and Ligatt are suing a number of people for &#8220;stock bashing&#8221;.  The blog [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I usually follow the Ligatt saga from afar and typically take on the role of a partially interested observer.  This <a href="http://www.ligattsecurity.com/lawsuit/" target="_blank">latest development</a>, however, has made me want to do a little research myself.</p>
<p>So what&#8217;s the deal?  It appears that Greg Evans and Ligatt are suing a number of people for &#8220;stock bashing&#8221;.  The blog post goes on to detail that a group of people have posted comments on various investor websites in the hopes of influencing the Ligatt stock price.  Apparently, they were doing this for &#8220;their own personal reasons&#8221;.  Among the people who engaged in this activity are Chris Riley, Nisha Kappor, Ben Rothke, Randolph Morris.  On the blog post, a tiny image of the document filed in courts is provided.  While the document is indeed small, it was easy to make out the case number: <a href="http://www.gwinnettcourts.com/#casedetail/case:10%2da%2d06012%2d5/" target="_blank">10-A-06012-5</a>.  Further, the post says that the suit was filed in the Gwinnet Courts of Georgia.  A quick run to <a href="http://www.gwinnettcourts.com" target="_blank">http://www.gwinnettcourts.com</a> and a search for the case number reveals a bit more information.</p>
<p>The defendants in this case are filed as John Doe 1-25 and Grey McKenzie.  The John Doe&#8217;s are presumably to indicate that the real name of the defendant is unknown.  It would be likely though, that they use aliases or a.k.a&#8217;s in the court document.</p>
<p>Ligatt&#8217;s retained attorney is also from Georgia &#8211; John A. Moore from <a href="http://moorelawllc.com/" target="_blank">The Moore Law Group LLC</a>.  Mr. Moore represents Ligatt in most of its cases in Gwinnet Courts.</p>
<p>What is most interesting to me is the <a href="http://www.gwinnettcourts.com/#partycasesearch/pnamelast:ligatt/qfields:8199/pcsform:1/" target="_blank">other cases</a> that come up when searching the court records.  The categories include &#8220;General Civil-Other&#8221;, &#8220;Small Claims General Civil&#8221; and &#8220;Contract&#8221;.  Looking at the cases, 1 has been filed in 2008, 4 in 2009 and 2 in 2010.  The cases for 2010 include the recent one against 25 John Doe&#8217;s and Grey McKenzie and another interesting case:  One against LaKesha Wilson.  Why interesting?  <a href="http://www.gwinnettcourts.com/#casedetail/case:10%2da%2d05335%2d2/" target="_blank">LaKesha Wilson</a> was the President &amp; COO of Ligatt Security International and <a href="http://www.youtube.com/no1hacker#p/u/19/YnzLf-0Doy4" target="_blank">posted an investor video blog</a> on YouTube.  Guess what? Lakesha had already filed a case of her own against Gregory D Evans for <a href="http://www.gwinnettcourts.com/#casedetail/case:09w%2d27056%2d00/" target="_blank">Stalking</a>.  Search through the cases with first name Gregory and last name Evans for some more fun.</p>
<p>Other people Ligatt has filed cases against include: <a href="http://www.gwinnettcourts.com/#casedetail/case:08%2dc%2d15100%2ds4/" target="_blank">John Doe</a> in 2008, <a href="http://www.gwinnettcourts.com/#casedetail/case:09%2dc%2d03896%2ds5/" target="_blank">Joseph Nemetz</a>, <a href="http://www.gwinnettcourts.com/#casedetail/case:09%2dc%2d03897%2ds5/" target="_blank">Paul S Radich</a>, <a href="http://www.gwinnettcourts.com/#casedetail/case:09%2dc%2d00425%2ds6/" target="_blank">John Doe</a>, <a href="http://www.gwinnettcourts.com/#casedetail/case:09%2dm%2d03823/" target="_blank">Jason Perry</a> in 2009.</p>
<p>Sadly, I can&#8217;t seem to access any of the documents that are filed online.  I would need to visit the court records office physically to do so.  Also, in most of the cases, either there is an order for dismissal or cases have been dismissed.  I&#8217;m not a lawyer, so I cannot comment any further than what I see.  I guess we&#8217;ll just see where this latest case goes.  I dunno, but to me it looks like a colossal waste of the court&#8217;s time and resources in hearing these cases.  Just sayin&#8217;.</p>
<p><strong>Update</strong>: If you want to contribute more information regarding the lawsuits related to Evans and Ligatt, please mail errata[at]attrition.org.  They are working on a summary.</p>
]]></content:encoded>
			<wfw:commentRss>http://chirashi.zenconsult.net/2010/07/ligatts-lawsuits/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
