Halfdone Development
Something of the week

Some people might find that these pages are too long so I created a quick Summary. It would be best to start from the beginning though.

Rip off

While imitation might be a form of flattery, plain ripping off someone else's work surely isn't.

Update: You can find the original version of Unknown Device Identifier 1.60 here along with screenshot that looks the same as mine.

Programs side by side

As you likely have seen on this website, I wrote a program called Unknown Devices. As a repair tech at a local computer store I get the fun job of reinstalling windows and loading drivers and such on a daily basis. If you have ever been in this line of work you know that you will invariably run into a device in Device Manager that are "PCI device" or "PCI Multimedia Controller" you need to figure out what you need. This usually requires opening the case, figuring out what device it is and finding drivers for it. Some parts are very generic and you end up hitting google with some random numbers you find on the chips or the cards. Just google "Unknown Devices" and you will see plenty of people with the same problem. I also provided IRC help for windows and run into people needing the same help.

I've been using a program called simply, PCI. It's a dos based program by Craig Hart that scans the PCI/AGP bus and using an extensive list attempts to find out what these devices are. It worked great, you boot from a floppy or cd, run this program and it will give you a list of devices and lots of other information. Using this information you can usually tell what card it is and then look for drivers. This author has made this list of devices freely available on his site, he just asks that you keep the list in a plain text file and make a mention in the program where you can get updates.

Using this list I was able to put together a program that instead of scanning the pci bus, uses information in Device Manager. Now you can see what device manager doesn't know about and also report what it should be. I put my program on my driver cd collection I use a at work (now at 6 cds) and passed the program around to the other guys. After some testing, on April 9th I posted it on my website. At the time I decided to also post the source code. So I cleaned it up and put a ton of comments. I thought it might be cool if anyone else wanted to know more information about how device manager stores information in the registry and how PNP ID strings work. I also use tons of open source software like GimpWin and Apache.

The next day I email Mr. Hart about the program, he thought it was cool and posted a link on his site. I don't know if he knows just how popular his site is but I know I get several hits a day from that page. After another 2 versions of the program I also submitted to a few sites like Nonags, Tucows and Winsite. Download.com requires a fee. On June 4th digi.no posts the program as that days Neat Jewel. I had over 4000 hits on that day alone and I had to reset my router twice. I run this site on my 603/128 dsl line and my brother wouldn't stop complaining about the lag. I also got some links from other sites and even MajorGeeks, which I didn't even know they listed programs like this. I knew them from when I need the latest 3DMark.

I know the people at Moosoft who wrote The Cleaner. It was quite a popular program and one thing I remember happened was that someone ripped it off. Took the program, removed any references to the then Dynamsol and posted it under his own name. Knowing this, I shouldn't have been surprised when someone did the same to me.

Jun 20th, I found "Unknown Device Identifier." I don't quite remember how I ran into it, I think I was just running a search looking for links to my program (I'm putting reciprocating links back to them). Now I wish I kept a copy or atleast a screen shot of the original page. It was quite funny. He took the text from my page, the icons, screenshots and awards and virtually "dumps" them on his page. He changes all the lines from "Unknown Devices" to "Unknown Device Identifier," puts his email and puts links to his shareware program. He didn't even try to format the page to his web design. The pictures have thick borders and the transparency effects from my webpage didn't work well on his. He kept all the awards even though his version wasn't there, turned them into generic links and even changed nonags award from 5 to a perfect 6.

Well as you can guess I wasn't too happy. I downloaded the program and it looked completely identical to mine, right down to my icon and functionality. He changes all references to me, my site and Craig's site to his. I was pissed. I start hitting the search engines and all the software sites I can find. And I found it listed on several of them. I even found one site I did submit to and was listed have his version as a Featured Freeware even though it was the same software they listed before!

I wrote Jacques Dubois at Huntersoft an email asking him to remove his page and his program. I also emailed several sites asking the same thing. I was up until 3am on a Friday night doing this. The next day I get a reply from Huntersoft:

Dear Mr. CatFish,

We have removed that page. Could you license us to add Unknown Device Identification function into our exisiting Shareware product ?

Wait for your answer.

Best Regards,
Jacques Dubois
Dear Mr. CatFish,

I noticed your request. All unknown devices found by Microsoft Windows are enumerated and the data of which, are stored in the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum. Take a look there.

I would like to cooperate with you on the development of Unknown Devices capable of recognising all the devices, not limited to PCI and AGP, including USB, IEEE1394, ISA, just like HWInfo32 software does.

If you are interested, feel free to let me know.

Best Regards,
Jacques Dubois
Huntersoft

I didn't reply at first. I wanted to just email him back with a big 300pt font red blinking NO... but I did release the source code and he did pull the site. I was re-evaluating my software usage agreement, perhaps going to GPL or BSD.

I continued emailing software sites including leaving messages on a MajorGeeks forum. MajorGeeks likely had the biggest link, there are several sites linking to theirs. They pulled the link and re-posted my program. Thanks guys.

This morning I noticed that he put this link back up. This time he cleaned up the page although it still has a good amount of my text. So I wrote another email to Huntersoft and also his affiliate ShareIt, I wasn't as polite this time. I haven't got a response yet.

The only differences I see in this program and my are:

1. All references to Halfdone, the Unknown Devices name, and I have been removed. And why I call this a rip.

About box differences

2. An installer. I found no use for this program to have an installer. I think of having an installer for programs that you would use more then once. This program is really just for one time use. Once you find out what driver you need the program doesn't tell you much. I think it's much more useful to put on a floppy or cd when you are doing a new install of windows or work in a service dept like me.

3. The pcidevs.txt has been encoded into the program. Not only does this go against Craig's wishes it makes it so that you have to wait for a new version to be released if the program doesn't know about your device. You can't update it yourself nor do you even know where he got the list.

One of the common and quite understandable points software sites have said is that they can't tell who ripped who.

I guess the easiest is which can be found posted first. I posted version 1.0 on April 9th with Craig linking it a day or two later, he didn't timestamp it though. Version 1.1 I posted on April 20th. I released 1.2 on May 25th and posted it on several sites, the first being Nonags on May 26th. Digi.no on June 6th followed by several others on different days of the month. Huntersoft posted Unknown Device Identifier 1.60 on June 18th and also the earliest link I can find. I don't think there ever was a 1.0 and 1.2 version. I know this isn't proof or anything like that, He could have easily submitted his version in May before I posted mine.

I wish I kept a copy of his old page, it was a VERY obvious rip of mine. Even on his current page the change log is a modified version of mine. He made version 1.1 into his 1.2 and my 1.2 into his 1.60 and added a few items like support for WinXP SP1 and Win2003. My program has supported both of these since version 1.0.

ChangeLog Differences

The interface is exactly the same, the tree view, the listings, the "Search Results (Internal Stuff)," the icons, menus, search and even the window size. When you save it uses the same default filename, The Help box has the same look and format Purpose and Tips. The Updates and About windows have the same background and format.

Search Results (Internal Stuff)
Updates Window

I provided the source code on my website. Using the source code he could have easily made the changes he did. Since he doesn't post his, for me to rip his version I would need to modify the binary directly, which might account for most of the text changes but wouldn't account for the encoding of pcidevs.txt. I would need to reverse engineer the whole program which would have been easier to just write from scratch and would not come out the same.

So far two people have reported a system dependent bug with the program. This bug shows up on both my version of his. Not only this but if you see the error with his version my original name "Unknown Devices" shows up.

Bug in his program showing my program name

Update

Has huntersoft done this before?
Take a look at WinDriversBackup's website. Now look at google's cached copy of WinDriver Expert and My Drivers (he has pulled the page). This is exactly the same kinda thing he did to me. Stolen the page design and all text, made the awards generic links, even took the User Comments and changed the program name!!!

[Nov 3rd: Google's cache has been updated. Here is a local copy I made.]

[Dec 5th: WinDriversBackup has now been changed to DriverGuide Toolkit and at a new webiste. Here is a local copy I made of the original stolen version.]

Update - Aug 18th, 2003

Huntersoft has a new version of Unknown Device Identifier. One of the first things I checked for is the bug mentioned above. While it doesn't crash the program (or it's sub program devinfo.exe) it does cause other problems.

Original I didn't want to point out what the bug was exactly because it was my little ace I didn't want to let Huntersoft to know what it was exactly. Now that the newest program has no visible problem I guess I can share it.

First I quick background on device manager and the registry. All devices under windows is listed under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ (Win2k-XP) or HKEY_LOCAL_MACHINE\Enum\ (Win9x-Me). My program and the "original" Unknown Device Identifier only looked at the PCI section which has all pci based parts, which is where most unknown devices are. Directly under this key is several keys like "VEN_1002&DEV_5144&SUBSYS_02AA1002&REV_00" which is a pnpid string for this device. This string is then looked up in Craig Hart's list to see what it is. Under this key is 1 or more keys (random names?) for each device with the same pnpid (like usb controllers). The key has several fields like Mfg which has the manufacture and DeviceDesc which has device name both from the windows driver (inf).

I have received 3 bug reports so far where they get a message "List Index out of bounds (0)" which is a Borland error catch that says I tried to get an item from an empty list. Here is the line that was the problem:

//Path of the first subkey of the device, which has all the info
regpath += "\\" + regtemp->Strings[0];

regtemp->Strings[0] is suppost to have a list of all the subkeys under the pnpid list. But what if for some reason there are no subkeys? On every system I've tried (which is a lot, I work at a computer repair shop) I never seen this be the case but working with Kenneth Levy, the first person who reported the bug, we figured out that he had that problem. There was a line with a pnpid but no subkeys so this problem occurred. I make the following change to fix this:

if (regtemp->Count <= 0)
DeviceLists[i].WinDevice = "Unable to finds out what windows thinks this device is";
else {
regpath += "\\" + regtemp->Strings[0];

It now checks to make sure that there is a subkey and if not says that it can't find some info.

Now Huntersoft had to go though all of my source code and borland options to change "Halfdone" to "Huntersoft," "Unknown Devices" to "Unknown Device Identifier"...etc. Well he missed one, likely because he didn't have the odd registry setup and never saw the error. The message box still said my original name "Unknown Devices" for a title.

While he has prevented the error from actually seeing an error, it still effects his program. When this registry has missing information it prevents the program from getting any details at all, even with good keys.

Normal: UDI 2.0 Bug Effect

Bug: UDI 2.0 without bug

Expect a new version of his program fixing this problem. :P

Notes

Some other things I've noticed, this section will likely be updated as I learn more.

- No more installer.
- Setup the program as poDesktopCenter so it's half off screen on my dual display setup.
- Stopped using my icon.
- Doesn't show an icon for unknown devices, which I think is a main point
- Shows all device manager items, even non hardware devices. Since there isn't a good list of non pci devices it just shows the pnp (or suedo pnp) ids.
- Fancier graphics and no standard title so incompatible with my dual monitor software.
- I can't run it on my Win95 laptop
- Removed the line that said that NT was supported, which never was.
- has an short internal list of venders and their websites.

- He uses the inf folder (driver info is kept there) as a temp folder, a program called devinfo.exe is placed and later removed from there along with a devicelist.inf which appears to be a TTreeView dump (like the save feature from my program) with pci info. Why use the inf folder? There is a nice temp folder you use. Why name it .inf? It's not driver info.
- He creates a c:\windows\daemon32.pnf which appears to be the Craig's pci list but with all the headers and mention of Craig removed. PNF files are dos shortcuts, this isn't one. Normally if I saw some program create a daemon32.pnf I would think it was a virus.

Why?

I don't understand why Huntersoft steals programs. He/Them seem to know programming well enough, likely better then I do. If your capable of decent programming why steal?

Update - Aug 24th, 2003

I posted a public message to Huntersoft. I will have more info about the latest version 3.01 at a later time.

Update - Oct 12th, 2003

Thanks to Chris for pointing out that PNF is not a dos shortcut (which is a PIF) but a Precompiled INF. The file created by UDI still isn't one though. I also found that it creates a \windows\system32\trunk32.tds file with a USB vender-device list. TDS files contain program debug info in borland compilers. This also isn't one.

Update - Nov 2nd, 2003

You can find the original version of Unknown Device Identifier 1.60 here along with screenshot that looks the same as mine.

Page last modified: June 20th, 2005 - 5:37pm Boston, USA time.