Source code to BandwidthTest.exe??

I would like to start a project buliding a Windows client taskbar program that would be able to communicate with the btest server in MT.

Does MT have that code/protocol somewhere?

Anyone want to work on this with me?

I’m planning on using the .NET platform in Windows to start with.

I’d like to do this as well …

Sam

I am willing to help

Nathan

I guess we don’t even really need the source code, just a DLL with an API or .NET package etc.

I’ve emailed Janis about this, but not received a reply.
I think I’ll email Arnis and see if he’ll reply.

i think a simple ethereal sniff of whats going on between the two machines would expose what’s being done, i’m sure its nothing that complex.. i just havent had the time to look at it. Maybe later today I will sniff a bw test and see what we can find.

Sam

True. I’ve written a program to test bandwidth before.
I would rather make have their code or a library as reference for the sake of compatibility.

But if necessary we could reverse engineer it.

Here is what I would like to see this used for:

Have a client service which could on demand do a quick send/receive speed check to a MT box on the network. Maybe also do a very brief test every hour or few hours on pseudo random interval and keep a local databse of the results. Or interface with a web service to have a central server keep track.

The service on Windows would be represented on the front end by a task bar icon allowing the user to do a quick check of speed themselves within the network.

I’m after the same uses as you :slight_smile:

We have a partner who makes LocationFree TV that is streaming across the internet to a clients tv monitor - they want to check the bandwidth available for upstream before a customer signs up. I’d love to use MT as and endpoint for tests to be run against.

Anyhow, I think the only way is to reverse engineer the protocol / handshake.

Sam

Below is the initial handshake a windows client sending btest authentication to MT. . . looks like its using some two way encryption on the password. the user is #admin# and the password was PASSWORD. It’s not likely to do authenticated sessions, but maybe something without authentication might still work. MT would be appreciated even that much more if they would send the protocol spec for us. Although, being closed source does keep security tighter ( I think ) so i understand if they don’t want to.

Sam

00000000  01 00 00 00                                      ....
00000000  01 02 00 00                                      ....
00000004  dc 05 00 00 40 4b 4c 00  00 00 00 00             ....@KL. ....
00000004  02 00 00 00 09 8d 25 44  6e c8 0b 8a 45 2f d8 c0 ......%D n...E/..
00000014  14 90 79 62                                      ..yb
00000010  77 da 2c d5 6f a0 83 63  07 7b cf 55 71 43 cd 97 w.,.o..c .{.UqC..
00000020  23 61 64 6d 69 6e 23 00  00 00 00 00 00 00 00 00 #admin#. ........
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000018  00 00 00 00                                      ....

Hmm… I guess we could make a go without the encryption and set the end MT to no password or no user authentication. It really would help if they would release a library at the least. That way they can keep their stuff to themselves, but allow us to use the mechanism.

Have you done a trace to figure out the handshake between the client and server during a test, after the authentication is complete?

Its a little hard to determine easily, but I did find pieces of the handshake. It looks like there is always a TCP connection for control., even if using UDP transport for data traffic. There are 12 byte data fields that tell the server what to do - possibly more. The client requests a test and the server seems to just spit it back with garbage data that you can time. Hopefully you don’t accidentally send it a request to packet you for hours : )

First 2 bytes tell the server size the expected packet size.
Second 2 bytes are unknown at this time.
Next 4 bytes tell the server what speed.
Last 4 bytes unknown at this time.

I don’t think it’ll be terribly hard to create something without authentication ability, but yes, it would be nice so it’s not abused. I’ll look into it more this evening.

Sam

oh no, not .net again :slight_smile:

Thanks, Normunds… At least one other guy not so keen on .NET :wink:

But what about the original question - a dll or the sourcecode/protocol for bandwidth testing protocol?

.NET, C++, doesn’t matter much to me.

This is the response I got from John:

We don’t have enough resources at the time to support this. We will consider this in the future.

John

So, I guess that leaves us with hacking it out or waiting for them to provide something.

I guess the minqwm10.dll that comes with the .exe is just generic shim?