[.NETrilo] Whats going on?

not much! :)

currently i’m working on my diploma thesis.
thats something related to the “USB-RX”-project i wrote before.

but sometimes i need to relax. and what do i do when i’m relaxing?
yeah… programming some unnecessary stuff :)

this time i started .NETrilo, a ventrilo client based on microsoft .NET – i really love .NET, did i tell ya?
at least i love C# – its like C, just much more comfortable. unlike C++ it has a much cleaner design.
as you know CEntrilo was just a dirty hack… really ugly code hacked together. ugh…

so i started .NETrilo as a multi-protocol ventrio client using plugins.
each ventrilo protocol (or maybe others?) is loaded as a seperate DLL – v2.3 is the first i’m doing now (“prot_Vent23.dll”).
also the GUI will be based on plugins. you can load “ui_Forms.dll” and/or “ui_WPF.dll”, maybe also “ui_GTK.dll” etc.

why plugins?

well, i’m not sure for whom this client is interesting, so i decided to place all the platform/protocol dependent things in loadable plugins:

  • is it the normal Win32 user who just wants some nifty feature .NETrilo will get?
    maybe the LUA support i want to implement for user functions?
    or the possibility to connect to different ventrilo server versions in parallel with just one client?
    or is it just the feeling to use a plugin-customizable client..?
  • or is it the Linux/OS X/*.unix gaming user who wants to use a *cough* little bit more native client?
    a client that supports PTT using a native plugin named “inp_X11.dll”?
    or uses a native GUI using “ui_GTK.dll”?
  • perhaps it will be the average Windows Mobile 5/6/7 user who just wants to have a better client :)
  • (dreaming now…) or some symbian-freak who has the latest .NET environment installed and also wants to speak with his ventrilo-friends…


ok, the last two are really some “maybe-it-works” points. really have no clue if i can get the code efficient enough to run on a symbian phone…
or if i can manage to decode the GSM packets somehow on this platform.
but i’m trying to push .NETrilo into this direction.
at least i want not to sit in front of my computer saying “idiot, why didn’t you….” when trying to port it to symbian/WinCE.

anyone an idea where to get a C# implementation of the GSM algo? don’t want to port that ugly C code to C# :(
or does anyone know how to get and interface a GSM codec on symbian phones using .NET?

now you ask what currently works?

hmmm not much :)

  • i can connect to ventrilo v2.3 servers using username/password
  • receive the list of users and channels
  • have some kind of GUI that looks like ventrilo but just has a functional “Connect” button
  • not more yet :)

the next steps are really no big problems – just writing some boring GUI code…
…and some porting of CEntrilo code to cleaner C# code.

when will it work?

no idea, really :)
i will update you if there are some news.
but first i have to finish my diploma thesis :-/

[CEntrilo] v3.0 looks possible


yeah, good news for you ;)
Although Luigi Auriemma said, he wont touch Ventrilo v3.0, he did it and released some code to authenticate with the servers. For you that means, there will perhaps be a CEntrilo v3.0 soon.
Thanks, mate!

But there are other (serious) things i have to do:
That CEntrilo code is ugly as hell! damn. its so ugly i really dont want to put that code on my page. Its grown from a small UDP proxy, to a Ventrilo Decoder, then a Ventrilo Bot, later an ISDN Gateway and finally a client for PDA’s.
You know what i mean? The whole code design doesnt fit. Totally mixed up absolutely different coding styles, different approaches and finally even mixing classless code with classes. There’s also no distinguishing regarding MVC or some layer separation. nada.

Why i tell that?
Some weeks ago i received a question if i dont want to GPL CEntrilo and let others help with development.
To be honest – CEntrilo is already GPL’ed. There were some persons (3? 4?) who asked for the source and of course i sent it. (you remember GPL? it doesnt prohibit sharing just binaries – it says you must give out the sourcecode if one asks for it)
Uh yes, i didnt add any license dialog – sorry for that – its my fault, but MDA’s dont have too much place for that button :)

So yes, its GPL’ed but no, i dont want to put the source on my page.
People who ask for the src, will of course get it.

But ok, i think i’ll merge the V3.0 code into my source and update the protocol code also (which is the most time consuming)

now i will read through aluigi’s code – i’ll post some news if something happened :]

[CEntrilo] no support for ventrilo v3.0 for now

hi again.

just want to let you know that i will not support ventrilo v3.0.
the reason is, the ventrilo guys are authenticating the server against some of their servers.
just have a look at port 6100 when you start ventrilo…

as stated on: http://ventrilo.com/forums/showthread.php?t=23257
they require you to let the client authenticate the server.
if you are behind a firewall, so u’re fucked.

  • server calculates some seed (?) and sends this to the client (UDP)
  • client contacts flagship-servers and gets some other token (UDP)
  • client calculates encryption keys from this
  • server sends 0x34 command during TCP-handshake
  • client receives 0x34 command
  • server modifies encryption lookup tables using the keys from above
  • client modifies encryption lookup tables using the keys from above
  • both communicate with modified tables now

i hate that “we want control everything”-way everyone goes.

well, i was able to let the win32 client authenticate my server and then use that authentication token to decode the protocol without any problems.
that token seems just to change when the server is restarted – but neither i want to make a dumper for that token nor do i want to re-implement their authentication procedure.
maybe i’ll find another way like bruteforcing the encryption while the server sends pings and information blocks, but i dont think its the right way.

P.S.: these guys really suck!