A Peek into my Toolbox

A Peek into my Toolbox

When it comes to the things I use to investigate the IMVU ecosystem, there are a few software tools I find indispensable.

Network Tools

Some people swear by WireShark, and it’s a great tool once you’ve gotten a little practice using it. If you want to sniff out the network traffic between the IMVU Windows client and your system, it’s the best way to go, because the IMVU client uses a custom TCP port for communication. Decyphering the network traffic can be a nightmare, though.  The IMVU client uses a horrid object notation called XML-RPC, which is barely human readable, verbose and needlessly complex. Nobody would recommend XML-RPC these days, now that we have JSON, which is more lightweight and easier to read. But back in IMVU’s early days (in the mid-2000’s) XML was all the rage, and JSON was in its infancy. Since the mid 2010’s, when JSON was formally specified, it has been largely favored over XML. So the Windows client still carries this archaic baggage, but the IMVU Next client and much of the www.imvu.com have switched over to JSON.

Wireshark is free software, possibly open source.

For analyzing web page and API traffic, nothing surpasses Progress Software’s Telerik Fiddler. It’s free, and much easier to use than WireShark. Fiddler filters out the IP noise, and you don’t have to stitch together HTTP requests and responses like you do for WireShark. It’s also great for looking at HTTP headers and cookies. In addition to viewing requests and responses, you also can drag and drop any previous request into the “Composer”, and then modify the URL, HTTP headers, cookies and POST data yourself and resubmit the altered request. This is how I discovered that the only thing you need to appear “logged into” IMVU is the osCsid cookie, all the other cookies can be eliminated safely.

Fiddler acts as a web proxy between your web browser (or any HTTP client) and the network. It doesn’t work well with Firefox, because Firefox throws up error messages warning that your web traffic is being sniffed (it is, but I’m the one doing it!) I’ll just use Chrome instead, because (nervous laughter) Big Brother, er, Google doesn’t alert you when your traffic is being tampered with.

For many purposes, Postman is a useful HTTP client that’s free for individual users. It keeps a history of your HTTP requests between sessions, which is a big plus. The user interface is really nice when it comes to Cookies and HTML form variables (in the query string or the POST data). The editor has syntax checking for XML and JSON, which is especially nice for JSON, where a misplaced comma, brace or bracket can crash your request.

Code Tools

I can’t say enough nice things about VS Code. It’s free, and it runs not on only on Windows, but Linux and Apple as well (if you swing that way). It’s a great multi-language editor with syntax and code completion support. There are tons of plug-ins and extensions for it. It’s not a humongous IDE like Visual Studio proper, and sometimes that’s all you need. It’s also great for coding JavaScript, C#, HTML, CSS, SQL and so forth, and there are other language plug-ins for your favorite languages.

The LINQPad application fills the “quick and dirty” niche for .NET programming. When you just want to run some C# code without all the overhead, this is the tool of choice. There’s a free version with crippled features, but I sprang $45 for the Pro version since I use it almost every day. It comes with a special C# file for “My Extensions”, so if there are frequently used snippets you use for multiple scripts, this makes it much easier to just code without having to reference another library. Each “.linq” file is like a little self-contained project, and the NuGet client built in makes it trivial to add in useful libraries (like Newtonsoft.Json, for instance). You can’t really compile it into an executable file or DLL, but you can use the command line option to compile and run a .linq file just like you would a batch file or Powershell script.

LINQPad can also be used to run SQL queries against most databases, such as SQL Server, MySQL, SQLite and most likely a bunch of others. It also lets you save your connections, and poke around the data structure. It doesn’t have the handy Query Builder or Table Designer you find in SQL Management Studio, so you’d have to run your DDL SQL manually. Like everything else about this tool, the SQL features are quick and dirty.

The output console is remarkable, though. Your C# code can use Console.WriteLine, as you’d expect, but LINQPad also implements the Dump() method on every object in your code, so you can dump out entire object graphs while you’re debugging, and they have a collapsable tree-like UI that’s pretty nice.

And I would be remiss if I didn’t mention my favorite code tool for the big jobs, Visual Studio. And now Microsoft does have a free community edition, but I still fork out about $250 every four years or so for the Pro edition because I use it for my day job. It’s the heavyweight on the block, takes a lifetime to master, and you basically build anything with it, including network apps, database apps, XBox and Unity games, Android and iOS apps, IOT apps, web sites, web APIs, the list goes on and on. I even created a library I use to generate IMVU products with thousands of animations packed inside, something you can’t do in IMVU Create Mode! There are countless books and web sites dedicated to Visual Studio, and there’s no way I’m going to do it justice in a skimpy little blog post.

So there you have it. Happy hacking!