DC bans: our idiosyncrasy

June 15, 2009 by poy

Ban, kick, drop. Words that instigate fear upon those poor key-less users, by granting their operators god-like powers.

If you’ve been frequenting DC hubs for some time, surely these are the definitions that you have built up for these terms:

  • Ban: add the offender to a list of prohibited users that may never be allowed to log back into the hub.
  • Kick: add the user to the prohibited list, but lift the stoppage after a certain amount of time.
  • Drop: just disconnect the user; he may reconnect whenever he wants to.

Now as far as i can tell, this is very specific to the Direct Connect world. In other online communities where exclusions are necessary, like gaming servers or IRC, these are the definitions that i have always encountered so far:

  • Ban: add the offender to a list of prohibited users that may never be allowed to come back – the ban can be temporary or permanent, but regardless, it’s still a ban.
  • Kick: just disconnect the user; he may reconnect whenever he wants to.

To summarize, here is a handy chart that you might find useful if you happen to be admin in DC hubs and in other online communities at the same time:

DC network Rest of the world
Ban Permanent ban
Kick Temporary ban
Drop Kick

I hope you’re confused enough now!

poy

Advisory: Phishing Site Warning “dcplusplus.org”

May 10, 2009 by swetoast

DON’T REGISTER OR DOWNLOAD FROM THE SITE MENTIONED IN THIS ARTICLE THE SOFTWARE COULD BE INFECTED ALSO IT LEADS TO SPAM MAIL.

dcplusplus.org is not affiliated with DC++ and we hereby want to warn our users to not be fooled by this site.

We here at DC++ project want to warn inexperience/new users about a phishing site that we have come across that wants users to register on their site to send spam mail to them. The site is affiliated with known spamming sites.

We advise all our users to not go to unknown sites and to download DC++ use Sourceforge (binary/source distribution) or Launchpad (source distribution) for downloading DC++ since these are our sites for distribution.

Here is the technical information on the phishing site for those that are interested in the information.

  • Registrant Search: “S.H. INC” owns about 1,948 other domains
  • Email Search: is associated with about 2,077 domains
  • NS History: 3 changes on 3 unique name servers over 6 years.
  • IP History: 182 changes on 22 unique name servers over 5 years.
  • Whois History: 8 records have been archived since 2006-04-17.
  • Reverse IP: 444,762 other sites hosted on this server.

Here is a list of related domains of the site, All of them seems to be plugged into spam  but we haven’t check them all.

  • 2000Greeting.com
  • 4040Club.com
  • AllOffMp3.com
  • AoOgle.com
  • AresGalaxy.com
  • AShanty.com
  • AvrilLaVige.com
  • AvrilLavign.com
  • AvrilLaving.com
  • BuyMyStock.com
  • CeeKerala.org
  • Cyclone2k.com
  • DcPlusPlus.net
  • EventId.org
  • FileMiner.com
  • GmailO.com
  • GunItSoldier.com
  • Kazzah.com
  • Memegen.com
  • MozilaFireFox.com
  • Mp3-Records.com
  • P2p-Freebie.com
  • PrimeMinister.com
  • RareJordans.com
  • Ryhmezone.com
  • Shareza.com
  • SpywarBegone.com
  • Switchborad.com
  • WinLuck.com
  • WwwSkype.com

Boo(s)t up your DC++

March 11, 2009 by emtee

While (especially the past entries of) this blog contains numerous great information about DC++ internals almost in a knowledge base manner, you can’t find any reference to an useful feature  introduced way back in DC++ 0.695. The feature itself is actually in the dcpp lilbrary and I believe it has been made in favour of  *nix ports. It allows the user to specify different folder than the program directory to store config files, temporary data and downloads (by default).  The custom folder can be set in a standalone config file called dcppboot.xml, specifying a path relative to the DC++ executable. If you open up the file you’ll see some usage instructions in the comments.

The configuration parameter can’t be set from DC++ GUI, it can be altered only by manually editing the file. The feature works well under Windows as well, however its rarely used in this platform.  In Windows XP there are no problems accessing (settings) files located besides the executable in the %PROGRAMFILES% folder, even though since the release of Windows 2000, Microsoft recommended using %APPDATA% folders for this purpose.

Problems started growing with the arrival of Windows Vista. According to the years long recommendations (which became expectations over the years), Microsoft introduced User State Virtualization which arose problems described eg. in this support FAQ. dcppboot.xml is (one of the many not too nice) existing solution for Vista users, still, DC++ definiately needed a better way to solve this.

The solution came with DC++ 0.75 as the available parameters of dcppboot.xml are extended in a simple way what suddenly solves all the problems  described earlier. Usage instructions are updated in the comments inside the file as you can see in the repostitory.

The new parameter is called LocalMode and when it is set to zero, all configuration files are stored in the appropriate user folder inside %APPDATA%.
For Windows 2000/XP, settings will be placed into %APPDATA%\DC++, temporary files to %APPDATA%\Local Settings\Application Data\DC++ and you’ll find your downloads in %APPDATA%\DC++\Downloads by default.
In Vista and Windows 7, these will be, respectively (assuming default Windows configs): %APPDATA%\DC++ (expands to C:\Users\[your-nick]\AppData\Roaming\DC++); C:\Users\[your-nick]\AppData\Local\DC++; My documents\Downloads.

The default mode is kept (DC++ runs in LocalMode) when you use the zipped binary archive. However, if you install DC++ with the installer, you’ll have a different dcppboot.xml file installed (existing dcppboot will be overridden) so DC++ will use the user profile folders for storing its settings per user.

The best thing is that these changes will be transparent to the average user even if  they upgrade DC++ using the installer. A nice automatic migrate function added and it takes care of moving settings files to the user profile if LocalMode set to false (zero). This is a one way migration only though; if your settings, etc… are already in the user profile and you want to switch back to local mode, you should edit dcppboot then move your settings files back to program folder manually.

DC++ 0.75

March 7, 2009 by emtee

A new version of DC++ has just out and (as you may noticed a bigger leap in the versioning) this seems to be a milestone release. This version is a result of a certain period of development and may start a new era in the ever progressing history of DC++. We can assume that every required adaptations and problems are solved since DC++ switched to an open source compiler, changed  GUI library and introduced a new (segmented) download method.

While the previous version was pretty stable and had all major bugs fixed, this new release focuses to fix bugs that can occour in less common situations. Along with these fixes DC++ 0.75  introcuces a few important improvements as well.

GUI changes

  • By popular demand, a possibility added to unmerge search results for same files. In other words this means that in certain situations when merged results aren’t an advantage, you have the option to organize your search results the same way as before.
  • User interface elements are automatically resized according to the length of the text they hold. It results not just nicely arranged controls; from now, all longer GUI translations will fit so there’s no need to use ugly abbreviations anymore.  (To all translators: its time to review your GUI translations! :) )

Fixed bugs :

  • Fixed compatibility (non-segmented) mode downloads so they always resume correclty if you restart DC++. Also fixed a problem that in some cases DC++ still used chunks in this mode.
  • Fixed a possible crash when two or more shared directories have the same virtual name. This bug could hit those who have very large number of files shared (total share over 1 TiB).
  • Fixed error handling when file lists and zlib transfers are decompressed. This could cause crash in special cases.
  • No more crashes when you remove several hundreds of elements from the finished transfers’ lists.

Improvements :

  • A possibility added to recheck integrity of partially downloaded files. This is useful in case of any disk error,  but the main advantage it brings is the ablility to easily resume large unfinished downloads when your download queue lost or damaged.  Read more in the updated Resume FAQ.
  • From now DC++ optionally uses the user profile folder for default download target and also for storing settings and temporary files (hublists cache, file lists, etc…).  This feture will be most welcomed by Vista and Windows 7 users as it should eliminate UAC warnings in most cases. If you use the installer to install DC++, it will be configured to use profile folders. If installed from the .zip archive manually, settings and downloads will be placed the old way (to the program folder).
  • Translating DC++ Help file to several languages are progressed a lot

For the complete list of changes refer to the changelog.

DCDev goes ADCS

March 3, 2009 by pietry

Since today, our public hub has moved from simple ADC to ADCS, aka ADC Secure. If you connected today and noticed that your client just printed out “Connected…” and that’s it, it’s because of that. You need to go to your favorites and change the address from adc:// to adcs:// , this means the DNS is the same, just the protocol handler changed.

So the hub address is now adcs://devpublic.adcportal.com:16591
You are welcome with suggestions, questions or whatever springs to your mind.

DC++ pointing out the corrupted

February 11, 2009 by pietry

One of the latest enhancements in DC++ is the hub referral on client-client connections, proposed by Jan Vidar Krey. The current bazaar trunk implements this mechanism and the next DC++ version that will be released soon will also have it. The purpose of this extension is to point out the corrupted hub that is sending the current client to a non DC client, with obvious malevolent purpose. This implies that the hub is either using exploitable software, or that it’s intentionally abusing the clients. Either way, the hubowners are solely responsible.

On connecting to the other party, DC++ will also send the hub URL that it used to connect to the hub sending out the CTM message. By packet inspection, an attacked party can figure out which is the corrupted hub (only a pointer is required, such that they have a point of reference ) . Another good part about this extension is that it works on both ADC and NMDC ( some workaround was found for NMDC: adding the url to the PK string since NMDC is not extensible nor flexible in this matter ) , with the least effort from the clients and it does not bother them in any way. A normal client should ignore the specific message ( I don’t find any particular usage for it ).

We strongly recommend all mods to inherit this extension and other clients out there to implement it so the CTM attacks impact on DC software will stop being so great.

DC++ CTM Proof

January 14, 2009 by pietry

In a previous post I was wondering if the whole concept of centralization is obsolete or has major flaws. The problem that is bothering everybody in the last years is that clients can be used ( unwillingly ) as tools in distributed denial of service attacks. Jan Vidar Krey is proposing a hub refferal on c-c connections that can point to a source of CTM attacks via the messages that the client sends on first connection attempt. In this case an attacked entity can see the hub with problems/intentional flooding that is causing the attacks.

As a first step to prevent this kind of abuses in DC++, poy added a static IP protection for the major hublists that were attacked via the client. This kind of measure is just temporary since hublists can change IP anytime and it protects only them, not everybody else that can be attacked ( Also the fun part is that the hublist server is actually running a DC client and wants to download from other users, it can’t ! ) .  A second step was to dynamically resolve the hublist ip’s and block them for c-c connections.

The main idea that I considered is to practically check all the users on a specific hub to see if they actually are real. On CTM receive the client should not connect but send another CTM to see if that IP actually connects to them . This will make sure that the user is the actual owner of that specific IP address. Of course the biggest problem is if the user is passive, in which case it can’t send a CTM back. This could be against the protocol principles but it’s a solution to see if the other peer really exists. I don’t know if a RCM would do something good in this situation but it’s a start.

Another thing that should be done ( if not implemented already ) is that on c-c connections if the first attempt was unsuccessful then no further attempts should be done until the user at least reconnects or changes state ( passive/active ). Also the hubs should be trustworthy. In a previous post I suggested a way to make hubs trustful via a CA authority system, but most people were quite reticent about it. Perhaps this could be the only way to make hubs trustful. Warning messages will not help too much ( Strong DC implements such messages ) since most of the users either don’t read them or don’t care. We shouldn’t let users question this problem, but solve it for them. Continuous problems from the Direct Connect network might be a cause to mark DC software ( and DC++ ) as badware, which will definitely take down the network. It’s time to do something about it.

I’m hoping for more ideas how to make DC++ proof against CTM abuses and I’m waiting for opinions from you as well.

Are centralized networks doomed from the start ?

December 30, 2008 by pietry

Recently I heard bad rumors around the DC network. Some malevolent person ( unknown ) has written several scripts for the most known DC hub software, that allow the hub owners to use their users in abusive forms of flooding, using the CTM feature of the protocol. These scripts have started to spread around and now “script kiddies” use it for flame wars and endless childish attacks.

Also, important sites that currently hold on the DC community like the major hublists OpenHublist or DCHublist and the ADC counterpart ADCHublist were attacked and were down for a long time. The major community for ADC , ADCPortal was also attacked ( ADCPortal also provide an alternative wiki to the one on the ADC Project ).

My first concern is that this problem can spread up to the centralized networks principle. In this case, the central node ( hub ) has the power to absolutely control the leaves that are connected, thus it can abusively send them in possible attacks at wish. This might be a serious problem for the centralized networks.

Secure policies have to be enabled in clients and hubs so that this kind of flaws do not affect the community. I don’t know yet if it’s possible in this current situation or the whole concept of centralization is flawed. I hope not, because the Direct Connect community has it’s advantages and there are a lot of people involved and which benefit from it every day.

My advice from the users: make sure you actually know what hubs you are using, and how your client can be abusively used for other purposes than the ones designed, and make sure you are using a proper firewall and perhaps package inspection to see if your computer is not part of a BotNet or similar flooding network.

And one last thing, Happy new year and all the best from the DC++ team.

Help translation

December 18, 2008 by poy

In DC++ 0.7091 you might have noticed a few translated help files. They use po4a and the process to generate them is now mature enough.

So feel free to join the Launchpad translations area for DC++ and chip in!

You’ll encounter HTML tags here and there; make sure you keep them in your translations.

DC++ 0.7091

November 29, 2008 by emtee

We are happy to announce that the new version of DC++ is available for download. It’s been about 5 months since the last stable release and numerous improvements and bug fixes come with this new version.

The most interesting GUI changes are as follows:

  • You can set the maximum width of the tabs as you like (no more truncated hub names)
  • Finished Uploads & Downloads windows are refined, from now you can filter to show only 100% finished downloads.
  • Added a popular option to always have a tray icon displayed for quick access
  • Numerous small improvements in the search window
  • DC++ should really remember the positions of all splitters, column orders and column sizes
  • Up-down control in the main status bar to change the number of upload slots quickly

Important bugs fixed :

  • Shell menus are restructured and loaded only if they needed. This also eliminates possible crashes when opening the shell menu under Vista.
  • In some cases it was impossible to add all the found sources to the queue from the search window
  • A possible crash if some ADL Search elements set to auto-download fixed
  • Fixed a possible lockup at start when the download queue has too many directories on Vista
  • Solved a problem which could cause crashes when tabs closed

Other changes and improvements :

  • Automatch queue for all search results is always on from now
  • Partial file list requests are visible in download queue so they can be deleted in case of connection problems
  • The whole Help file became translatable and a few partially translated Help files are added to the release. The localized Help file and tooltips are shown automatically according to the current locale settings

For the complete list of changes refer to the changelog.

Unlike the previous unstable release ( 0.708 ) this new version is tested and found highly stable. As usual it will be marked stable only after the two weeks public test period but the upgrade is recommended even before – especially for Vista users.