DConnect Daemon is a Direct Connect (from NeoModus Software) Hub clone for Linux. We created him, because we wanted to have stable program for stable system. It working as a system deamon.
You can find newest version of DConnect Deamon on website http://www.dc.ds.pg.gda.pl
ToDo list is very long now :). We still working.
GPL version 2. See COPYRIGHT file shipped with sources for details.
4. InstalationTo compile DConnect Daemon, you will need:
In most cases this procedure should work:
You may propably use some traditional configure options. There are no dcd-specific options, so don't worry about it.
5. Know bugsWe know that there are a lot of them...(this file is too short :). If you find any - tell us about it: dc-hub@ds.pg.gda.pl
6. Direct Connect ProtocolCracked by Albert
NR | SRC | NAME AND STRUCTURE | DESCRIPTION |
1 | H | $BadPass |
Authorization failed (password sended $MyPass instruction is bad).
Direction: hub -> client Parameters: | |
1 | J,O,H | $ConnectToMe |
Not recognized yet Direction: Parameters: |
2 | J | $Direction |
Not recognized yet Direction: Parameters: |
3 | J | $FileLength |
Information about size of file, which was asked $Get command (during direct connection between clients). Thanks this clients which downloading data, know size of this data. Direction: client -> client Parameters: fileSize| |
4 | J,H | $ForceMove |
Demand of redirecting to other hub. It it was been possible to make balancing of load. (2 hubs and redirecting in dependence from size of shared data, hour of day or subnet from which client conecting)
Direction: hub -> client Parameters: hubName| |
5 | J | $Get |
Request about download, or resume of file (during direct connection between clients). Second client should answer command $FileLength. After that we send command $Send, starting transfer of data.
Direction: client -> client Parameters: fileName$startByte| |
6 | J,O | $GetINFO |
Demand of client information. Hub analyses nick field, and sending command to destination client. Adressee should answer $MyINFO command. Direction: client -> hub -> client Parameters: nick senderNick| |
7 | J,O | $GetNickList |
Demand of nicks list of clients of hub. Hub answers command $NickList and $OpList. Direction: client -> hub Parameters: | |
1 | O,H | $GetPass |
Demand of authorization (check nick permissions). Client answers command $MyPass with password. Direction: hub -> client Parameters: | |
8 | J,O | $Hello |
Information to everybody, that new client connected. Clients should answers command $MyINFO sending informations about itself to him(J). Direction: hub -> all Parameters: nick| |
21 | H | $HubIsFull |
Sending to client when hub is full and redirect is impossible. Direction: hub -> client Parameters: | |
9 | J,H | $HubName |
Sending to just connected client of hub. Direction: hub -> klient Parameters: hubName| |
10 | J,O,H | $Key |
Answer of client on $Lock command (demand of authorization). Key key is enumerated basis of client alghoritm and field salt. Field salt is sending on command $Lock. Direction: client -> hub; client <-> client Parameters: key| |
1 | O,H | $Kick |
Kick from hub. Only admin can do that. Direction: client -> hub Parameters: nick| |
11 | J,O,H | $Lock |
Demand of authorization. This is protection from unauthorized connection to hub.
Algorithm of enumerating of key is fortunately already broken :)) In answer client sent to hub command $Key with key, enumerated basis of field salt. Authorization is realized also during direct connection between clients (session download) into both side.
Length of salt field is changing (less than 3 bytes - in (H) length is drawing from range 50-100, and chars from range '%' - 'z'), however privateKey is not used in any analysed sources.
Direction: hub -> client; client <-> client Parameters: salt Pk=privateKey| |
1 | O,H | $LoggedIn |
Authorization succcess. Password sending after command $MyPass is correct. User is logged on hub. Direction: hub -> client Parameters: | |
12 | J | $MaxedOut |
Not recognized yet.
Direction: Parameters: |
1 | O | $MultiSearch |
Not recognized yet.
Direction: Parameters: |
13 | J,O | $MyINFO |
Information about itself. Hub records all parameters and sends this command to rest of clients. (added $ALL before - this means that exist version of $MyINFO for one client only. Direction: client -> hub; hub -> all Parameters: nick description$ $connectionTypeF$email$sharedBytes$| (klient -> hub) $ALL nick description$ $connectionTypeF$email$sharedBytes$| (hub -> all) |
14 | J | $MyNick |
Information about nick. This is first command, sended during direct connection between clients (download session). Direction: client -> client Parameters: nick| |
13 | O,H | $MyPass |
Answer on $GetPass command. That is nicks rights confirmation. If password is correct, hub sending command $Hello to all, with information about new user. If this user is OP, hub sending commands $LoggedIn and $Hello to all. If password is incorrect, client is disconnecting (O) or command $BadPass (H) is sending. Direction: client -> hub Parameters: password| |
15 | J,O | $NickList |
List all of nicks logged on hub (admin and user are not distinguished). This is answer of server onto command $GetNickList. Turned list is separated '$$'. User with admin rights, sees additionally user HubSecurity (first on turned list). Direction: hub -> client Parameters: nick1$$nick2$$nick3| |
4 | O | $OpForceMove |
Demand of redirecting user with admin's rights to other hub. Direction: hub -> client Parameters: hubName| |
16 | J,O | $OpList |
List of admins logged on hub. This is hub's answer on command$GetNickList.
Turned nicks list is separated '$$'. User with admin rights, sees additionally user HubSecurity (first on turned list). Direction: hub -> client Parameters: nick1$$nick2$$nick3| |
17 | J | $Quit |
Correct end of connection. Hub removes sender from nicks list, then sends command $Quit to remaining users. (They can remove sender from own nicks list). Direction: client -> hub -> all Parameters: nick| |
18 | J,O,H | $RevConnectToMe |
Not recognized yet
Direction: Parameters: |
19 | J,O,H | $Search |
File searching. Hub may pass this command between itself. Direction: client -> hub -> [hub] -> all Parameters: Hub:senderNick ifSize?ifLess?size?dataType?pattern| |
20 | J | $Send |
Starting stream of data during download session (between clients). Sent previously command $Get and $FileLength define which file is sent, from which of byte and what portion of data is transmited. Direction: client -> client Parameters: | |
21 | J,O,H | $SR |
Not recognized yet.
Direction: Parameters: |
22 | J,H | $To |
Sending private message (on DC chat). Direction: client -> hub -> client Parameters: nick To: senderNick$<senderNick>message| |
23 | J,H | $ValidateNick |
Validation of nick. This command is sent to hub soon after $Key command (on start of connection). Hub checks whether nick is not already used or banned. Chars ' ' and '$' are incorrect in nick. If nick is password protected, hub sends command $GetPass to confirm rights to using nick. Hub sends $Hello information to everybody, that new client connected. (O). Direction: client -> hub Parameters: nick| |
24 | J,H | $Version |
Information about client version. Currently is not used. Direction: client -> hub Parameters: clientVersion| |
And here we in alphabetical order:
2002-05-08 - 0.0.3 released
After few tests and making some fixes dcd has been released. It is stable now.
Main changes are in libwrap implementation and removal of one nice overflow.
Please, visit download.
2002-05-05 - New website design
Thanks to Fela kindness we have great new website design. Everything is still Under Construction, but is really great, don't you think?
2002-04-28 - First released version
We have released version 0.0.2 - It seems to be working, but is not 100% functional. There are some misses in protocol implementation and some things are non working correctly. Please - test this and let us know... This is the first public release and we think that the first, which has any chance to work
2002-04-25 - Change of project's name
As you see - we have changed our name. It's because there is project called dchub and we want to be uniqe Now, the full name sounds DConnect Daemon for Linux.
2002-02-20 - We are working with CVS
Started code work in CVS - this is real start
2001-12-01 - We started
We started to crack protocol.