Coleman Hot Water on Demand Manual

April 22nd, 2012 § 0 comments § permalink

I was having some problems with my Coleman Hot Water on Demand, which I have now resolved.

In the process of trying to fix it, I was searching for the manual online. Couldn’t find it. Unbelievable.

I’m sure Coleman will move into the 21st century soon.

Anyhow, I found the manual (which wouldn’t have helped me fix my problem anyhow).

As my gift to the interwebs, I’ve made a crappy scan without a watermark and shared it with you.

Coleman Hot Water on Demand Manual

Faster SDF Database Password Cracking with Multithreading

March 18th, 2012 § 2 comments § permalink

Unimpressed that my CPU was merely idling through the attack process I gave it, I wrote a quick update to the SDF password cracker.

In the previous post, I posted the source for my SQL standalone database cracker. It was fine for some basic password auditing, but for those really big password lists… it needed to be faster.

So I added in some code to use threading.

A better coder would probably have included delegates, and time efficient locking mechanisms. Not me.

I’ve attached the source code for the SDF database password cracker, once again in C#.

 

SDF Database Password Cracker

March 15th, 2012 § 1 comment § permalink

I had the need to explore the structure of a stand alone database file (SDF), which was password protected.

Early on it occurred to me that there were no tools available to run a quick dictionary attack against the SDF database file.

So I wrote my own SDF password cracker.

The SDF password cracker is written in C#, and its the definition of quick and dirty – but it works.

Source
Sample Config File
Sample SDF Database
Sample Password List
System.Data.SqlServerCe.dll

It’s worth noting that the SqlServerCe library doesn’t compile well under x64 environments, just switch the compile profile to x86.

Install ZenCart WARNING: An Error occurred, please refresh the page and try again.

February 9th, 2012 § 0 comments § permalink

I was trying to install version 1.5 ZenCart, everytime the database started to install, it would just give me the error message.
I edited the SQL statement so that instead of having default values it was just NOT NULL.
This forum thread has a pretty good run-through.
The software successfully installed.
The problem was as per the the errror in the cache folder. BLOB cannot have a default value.
So now I’m trying to figure out how to rectify that…

Training Camp Crackme1 Woodmann

September 13th, 2011 § 0 comments § permalink

Every so often I try a crackme. I just enjoy the problem solving. I’m terrible, but somehow I get a kick out of it.
crackmes.de is down, so I stumbled across the next best, maybe a better thing. http://www.woodmann.com/RCE-CD-SITES/Quantico/mib/train.htm

An amazing collection of scene crackmes; if you ever thought you were good enough to represent – this is where to start.

Being an infant, I stuck with the tutorials. Even then I struggled. For hours.

My *working* solution to CrackMe1 is below. To make it a little more difficult for myself, I thought I would give C++ a spin.
I was bitterly disappointed that my keygen was larger than the original crackme.

#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    //declare local variables
    string _name;
    int i = 0;    
    int char_sum = 0;
    int _first, _second;
    char c, d;
 
    //ask user to input name, store it in local variable
    cout << "name: ";
    cin >> _name;
 
    //put the name variable to uppercase
    while(_name[i])
    {
         c = _name[i]; //create char from current index on string
         d = toupper(c); //put char to upper
         char_sum = (int(d)) + char_sum; //increment the count         
         i++;          
    }  
 
    //http://www.woodmann.com/RCE-CD-SITES/Quantico/mib/crack10.htm
    _first = char_sum ^ 22136;
    _second = _first ^ 4660;    
 
    //output the serial!
    cout << "serial: " << _second << endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}

Link Dilution, Google SEO tips

August 31st, 2011 § 3 comments § permalink

Search engine optimisation is a bit of a black box to most web developers.
It is a tough balance between conventional website design with brief, informative information; versus SEO driven text, keywords and search phrases.

Competition sites often will employ SEO specialists who receive their money once the site has hit the top results of google.

The real secret is building content rich websites, with specific and relevant information.
This is a lot harder to do in practice, but there are some website seo tips that make a bit difference.

One thing I try and do is constantly research techniques, and analyse other websites code.
How did I end up getting on this site? The information is/isn’t relevant – what did they do?
Often I will watch fast rising websites to see how long they stay high in the results; if I notice sudden drops, then I dismiss the technique.

One seo technique that has me bemused at the moment is the new style link farming.
Here is how it works:

You buy a website which caters as some kind of service, say, seo-solutions.com.au.
You then setup LOTS of sub-domains; melbourne.seo-solutions.com.au, collingwood.seo-solutions.com.au, easy.seo-solutions.com.au
You then setup webpages on each of these subdomains, addressing specifically what is in the title.

SEO companies are doing this very cheaply – they buy one domain, then sell hundreds of sub-domains (which cost them nothing) to unwitting service men and women.
How long will it last? I don’t know. At the moment it has really messed up the Google search results in some industries.

This leads into my concern about this kind of link farming. Apart from being terrible for the integrity of search results, I am also concerned about the impact this kind of web marketing would have on brand value, and dilution.
If a customer can’t search for anything except you, then after a while, they will hate your brand.
I want Tech guys to flash back to the early days of experts-exchange. SO annoying. (although now its “free”, so so handy)

One article I was reading to help consul myself was the link dilution: links and pages on Google Answers.

The poster slawek-ga made an amazing reply (where did he find the time???) Nice.

Xcode 4 Please close the following application iTunes

August 24th, 2011 § 0 comments § permalink

I was updating my Xcode from version 3 to 4.
Suddenly the installation freezes with a warning.

In order to continue installation, please close the following application:
iTunes

Literally, the most annoying messagebox I have ever seen. iTunes was definitely not running.
What the error should have been was

In order to continue installation, please close the following application:
iTunes Helper

Thanks to http://www.macosxtips.co.uk/index_files/fix-xcode-instsaller-please-close-itunes.php for the step by step article on getting past this simple problem, made complex by poor error information.

C# Class or Object to XML string

August 22nd, 2011 § 0 comments § permalink

I had a desire to convert my custom class to XML. When you do this, it will often want you to store it in a file. I want it as a string.

Here is one way of doing it.

using System.IO;
using System.Xml;
Using System.Xml.Serialization;
 
class Product
{
string pName;
}
 
class doit()
{
List<Product> p = new List<Product>();
 
//put in the string
XmlSerializer xms = new XmlSerializer(p.GetType());
StringWriter sw = new StringWriter();
xms.Serialize(sw, _aList);
string myString = sw.ToString();
 
//read from string back into class
StringReader sr = new StringReader(myString);
Product List<myClass> = xms.Deserialize(sr) as List<Product>; //there are a lot of ways to cast type, do this however you feel.
}

Motorola GP328 Programming Software

July 11th, 2011 § 6 comments § permalink

Tutorial coming soon!

Motorola GP328 Programming Software.

Works a treat, I’ve only tested it on the GP328. Let me know if you get it working with any other radios.

Multi Thread C# Application Sharing Access Database

July 7th, 2011 § 1 comment § permalink

In a previous post I discussed my testing of multi user access of MySQL and Microsoft Access database.

Its important that you DO NOT share connections. The database is designed to take multiple connections and pool them. Sharing a connection between users is only going to create conflict that will have to be controlled in your application with code.

I decided to actually test Microsoft Access and see how it stood up to the same treatment as I gave MySQL.

The function I used is below, you’ll be able to implement it almost perfectly into the earlier example.  You’ll obviously need to duplicate the below function so that both threads have their own unique database function to run.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Data;
using System.Threading;
using System.Data.OleDb;
 
static class AccessClass
    {
        public static void access1()
        {
            OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=world.accdb");
            OleDbCommand command = new OleDbCommand("INSERT INTO helloworld (pname) VALUES ('user1')", conn);
 
            try
            {
                Console.WriteLine("Connecting to Access Database...");
 
                int i = 0;
 
                do
                {
                    conn.Open();
                    command.ExecuteNonQuery();
                    conn.Close();
                    i++;
                } while (i &lt; 100);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
 
            Console.WriteLine("Access1 Routine Done.");
        }

You’ll notice the conn.Open and conn.Close are now repeated everytime the loop runs… That leads me into my conclusion.

Running the connection timing the same as I did in the MySQL example always lead to locking problems. Ultimately, if the database connection attempted were properly managed I would end up with 200 new items in the database each time I run it. The reality is quite a bit more unpredictable than that. So make it throw less errors, I made it close the connection between each iteration. This slowed it down immensely. Still, the results were unpredictable, sometimes 212 new items would be added, other times 218.

Instead of investigating why this happens, for the simplicity of not having to worry about database locking, I’ll stick to using MySQL for multiuser environments.