Domain changes and other information

A team of architects is building a highway.

One of these architects is in charge of building a vital bridge. His construction work is going well; although the bridge needs consolidations here and there, people have already started driving over it.

One day, the bridge architect has a disagreement with his architect colleagues. He therefore chooses to leave the construction company and focus on other projects.

However, he is still bitter about his ex-colleagues. He secretely hopes the highway never gets successful. To his dismay, the construction project keeps going on and the highway keeps being extended. The bridge he was in charge of is still being used.

Consumed by his jealousy, he decides to place a few packs of dynamite at strategic points of the bridge. He then makes the whole bridge explode while there were still people over it.

It might have been his bridge while he was overseeing its construction, but it was not anymore when he chose to leave the construction company. By destroying the bridge on a whim, he does more than destroy his own work: he also destroys the work of the builders; he kills the people who were enjoying the bridge when it exploded; he forces his ex-colleagues to build a new bridge (fortunately, they still have the blueprints).

He could have left the construction company with dignity, but he ended up as a jerk.

The domain adcportal.com is down and the project adcportal at SourceForge has been removed. It was the decision of the domain’s owner.

The project is gone, and with it is the forum and wiki as well. Backups exist, but whether it’s for the forum and wiki is too soon to tell. All I can say is that there will be an effort to try and restore some parts, while other parts will be discarded. I can’t tell you a time schedule, as time is always a limiting factor.

A new project, dcnetwork has been created, together with a new domain dcbase.org (now pointing at DC++, but will not in the future). The intention of the domain and project is to serve as a hub (pun intended) within DC, or at least for some of the content.

The DC development hub address is now adcs://hub.dcbase.org:16591, so be sure to change your clients.

It is unfortunate times, as it always is when losing resources, but new resources will be up as soon as time permit.

New account for Twitter; DCBase

Quick post, but just want to let everyone know that DCBase is what is going to used in the future for tweets.

Software and code for TTH generation and validation

There are multiple sites dedicated for providing information about generation and validatation of TTHs. There are many languages written to handle TTHs, so you should see this list as a small selection of all the implementations out there.

  • TigerTree Hash Code project at SourceForge intend on providing implementations for multiple languages.
  • ThexCS – TTH (tiger tree hash) maker in C# at CodeProject intend to provide a UI for simple TTH generation.
  • tthsum is probably the most widely known stand-alone application that can generate TTHs. The TTH generation was the one from DC++, but later changed to the original Tiger authors’ implementation. tthsum is in most Linux distributions.
  • Obviously, DC clients can generate TTHs…

    Don’t forget that you can make topic suggestions for blog posts in our “Blog Topic Suggestion Box!”

    DC++ adds GeoIP database auto-updating

    Well, the title pretty much says it all, but let me give you a brief little look into GeoIP (Auto-Updater too of course!) and what it means along with some background about some of the changes to GeoIP itself. As of bzr revision 2620, a fully automatic GeoIP database updater has been included with DC++. What does this mean to you? Well, simply put you won’t have to go to MaxMind’s website to update the GeoIP database. GeoIP allows you to see the country code (e.g US, UK, etc.) in the Userlist, Transferview and Search windows under the country column (IP column in the search window).

    Along with the auto-updater came another change allowing you to actually select the kind of country code you would like to see. E.g if you wanted to see, say, UK – United Kingdom (the DC++ default) it would be %[2code] – %[name] , but you’re not limited to just that! Here’s a list of the new parameters you can use:

    %[2code] – show a 2 letter country code (e.g US, GB)
    %[3code] – show a 3 letter country code (e.g USA, GBR)
    %[name] – show the full country name (e.g United States, United Kingdom)
    %[continent] – show the continent code (e.g NA, EU)

    You will be able to set your own customized country format in the next release of DC++, the setting will be located on the Appearance Page (Settings > Appearance Page) just look for “Country format”!

    Don’t forget that you can make topic suggestions for blog posts in our “Blog Topic Suggestion Box!”

    BerliOS to shut down operations on 2011-12-31

    BerliOS will go out of service later this year, and will as such cause projects to go dark. If you have a DC project (or, well, any project for that matter) on BerliOS, now is the time to switch hosts.

    There are multiple other hosts, and I’ve only used a subset.

    Some suggestions:
    Launchpad
    Bitbucket
    SourceForge
    Github
    Savannah
    Freshmeat
    Google Code

    Don’t forget that you can make topic suggestions for blog posts in our “Blog Topic Suggestion Box!”

    How to crash DC++ 0.674

    $ADCGET list //// 0 -1 ZL1|

    A previous blog post mentions this, but apparently isn’t sufficiently explicit about what to send.

    I aim to fix that.

    Enjoy, all. This apparently works on DC++ clients older than 0.707 which still support $ADCGET.

    The GPL is not a EULA

    GPL software therefore gain nothing by prompting the user to agree to or disagree with the GPL and DC++ will stop doing so. This holds both for the GPLv2 and GPLv3:

    Some software packaging systems have a place which requires you to click through or otherwise indicate assent to the terms of the GPL. This is neither required nor forbidden. With or without a click through, the GPL’s rules remain the same.

    Merely agreeing to the GPL doesn’t place any obligations on you. You are not required to agree to anything to merely use software which is licensed under the GPL. You only have obligations if you modify or distribute the software. If it really bothers you to click through the GPL, nothing stops you from hacking the GPLed software to bypass this.

    The upcoming version of DC++ therefore does not ask the user to assent or otherwise to the GPL during installation.

    Interestingly, several other top-ranking GPL-using SourceForge projects, about half of the tested sample, equally uselessly also require Windows users to agree to the GPL before allowing installation:

    Distributing non-GPL DC++ mods infringes copyright

    DC++ is licensed under the GPL, which requires that “the source code of the modified version is available to the users”. Courts support the GPL’s binding power in Germany and the US, while companies in additional countries such as the Netherlands (second Dutch case) and Taiwan have found it worthwhile to settle rather than fight. Several DC++ modifications, most prominently GreylinkDC++ and its derivatives, violate the GPL by not releasing source code, and thus lose eligibility for redistribution under the GPL. Absent such explicit GPL-provided allowance, websites and other media distributing them commit copyright infringement.

    The DC++ project supports, instead, usage of one of the non-license-violating clients listed at ADCPortal.

    Long lost response regarding DC being used as a DDoS tool

    A really long time ago, I was interviewed regarding the play that DC has concerning DDoS:ing. GargoyleMT was interviewed by a Brian Krebs (washingtonpost.com) and the following is what he said to Krebs. I don’t think Krebs published anything (or at least I can’t find it). Note that the date of this mail is 2007-05-25. (I don’t know why, but the above WordPress post have a newer timestamp than when the mail conversation took place. As the SecurityFocus article indicate, it’s around the later part of May.)

    Brian, I’m not sure if you’re still looking for information about what Prolexic (and now Netcraft) have reported about attacks using the Direct Connect network.

    A little bit of history may help understand what the Direct Connect network is. It got its start in December of 1999 by Jon Hess, then a high school student. It was heavily inspired by Internet Relay Chat (IRC), and the social aspect of chatting can be seen in his design (I have a couple old interviews of him bookmarked at home that may give a little more information). This was the year of Napster, when peer-to-peer networks were getting their start, and before Justin Frankel (of Winamp) had released Gnutella (which first pioneered decentralized peer to peer networks). Direct Connect was designed around separate, user run, independent hubs, tied together only loosely by a “hub list.” This design is a lot more like Napster’s centralization than Gnutella’s decentralization, especially since hubs themselves do not interlink (though there are some protocol commands for doing so.) Because of this design, Jon developed two separate programs: a client software (which we call NMDC for NeoModus Direct Connect [NeoModus was the company name Jon used to publish his software (see the Wayback machine at http://web.archive.org/web/*/www.neo-modus.com)%5D) and a hub software. Each hub software had an option to register on the hub list, but it was not mandatory.

    Shortly after it became popular, many people worked on reverse engineering the protocol that Jon used. Once enough knowledge of the protocol was obtained, clients were created, including DC++ by Jacek Sieka in November of 2001. Today, nearly all of the clients on the Direct Connect network are open source, and quite a few hubs are as well. The protocol used today is nearly identical, but (mostly) backwards compatible with the original client and hub. Jon’s software has fallen out of favor, and DC++ is (probably) the most popular client for the network. There are also many derivatives of DC++, since it is licensed under the GNU General Public License. There are a number of hubs, YnHub ( http://ynhub.org/) is one of the more popular ones, since it works on Windows, has a nice GUI, and contains enough options so that hub owners can run hubs the way they like. Hubs have grown, but a “big” hub is well under 10,000 users, and most probably in the 500 – 2500 user range.

    The abuse, as can see it, doesn’t exploit any bugs in DC++ per-se. Nothing as glorious as buffer overflows, at least. Only not armoring itself against ways the protocol could be misused to hurt others. The protocol was intended to be proprietary, and wasn’t designed to protect against malicious clients or hubs.

    The two commands which are being exploited are the following commands:
    $ForceMove <ip or address:optional port>
    This command forces a DC client to disconnect from the current hub and try to connect to the address specified. (It is used in some multi-hub configurations to shuffle users between hubs, generally as a form of load balancing.) The original DC hub software had a port of 411, but it allowed customization. A malicious hub can “$ForceMove http://www.example.com:80&#8221; to multiple users and get them to try to connect to that server using the DC protocol. In DC++ 0.699 (released Dec. 18, 2006), DC++ will try to connect once, but not reconnect unless it has successfully completed a full Direct Connect handshake with the remote address. This type of attack shouldn’t be very effective with DC++ 0.699. Versions before this will reconnect on a slightly variable scale, in between 2 and 3 minutes. ($ForceMove is what we typically classify as an “operator” command, so normal users should not (unless the hub is configured for it) be able to use this command to initiate an attack. Rogue operators on white hat hubs could, however.)

    $ConnectToMe <RemoteNick> :<SenderPort>
    This is the command that instructs the receiving user (<RemoteNick>) to try to connect to SenderIp on SenderPort (via TCP). This connection is nearly exclusively for downloading of files. This command, as does the above, and most others, passes through the hub. A white hat hub will check <SenderIp> against the IP address of the sender, and only relay the command if they match. A black hat hub may not do that. Or worse, it may modify well formed $CTMs (as we shorten it) to contain the IP of a machine it would like pummeled with connections. DC++ (as will any DC client) will try to connect to the remote IP on the specified port once. It will not retry on its own, but it will try one time per $CTM. (I'm not sure whether it can be persuaded to try multiple connections to the same IP/port at the same time.) This attack cannot succeed without the complicity of the hub in the attack.

    Prolexia certainly has drawn attention to this subject, but they're not the first to suffer such attacks. Hublist.org, created by Marko Virkkula (aka Gadget), was the default hub list for DC++ for a long period of time (July 2003). Hublist.org has been experiencing attacks since April of 2006, and the methods used above may be a direct result of his war of escalation against the attackers. A domain I bought ( dcpp.net) to host DC++'s web presence was definitely attacked by one of the two above methods. We changed hosting companies once, but were ultimately forced to pare back our web site and move a smaller version of it back to sourceforge.net's project space. I wasn't involved enough in the administration of either host machine to come away with the specifics of the attack, other than that it was DC traffic directed to the HTTP port.

    As for preventing or mitigating the severity of this type of attack, I think there are a couple key points. We cannot change the protocol radically to fix this, as we're (Jacek Sieka, Fredrik, myself, and couple other regular contributors) only in control of one of the clients. (There is a developer community that represents quite a few of the packages, but not all of them.) All client and hub software would also need to be changed, and users would have to upgrade their respective software. We have an alternate protocol under development (ADC) that should lessen the concerns (as IP addresses are distributed to each client during the initial connection to the hub). That said, users can (and should) upgrade their client when a new version of DC++ comes out. On the release of a new stable version, each user with an older client is told about it once per startup of the application. Currently, 0.698 is marked as stable, so users need to ensure they have 0.699 installed. Developers who base their DC client on DC++ can sync their client more quickly following a release of DC++, or backport all of the fixes. Most importantly, we know that some of the hubs on the DC network are not to be trusted. They may be either public hubs (registered on one or more hub list) or private hubs (unregistered but allowing new members or protected via user name and password). Users who watch the output of their client can guess whether they're being involved in an attack. For the $ForceMove attacks, one of their hub windows will show as disconnected, with a long line of "*** Connecting …" messages without a single success. Users should close this window, and be wary if they decide to visit the hub that issued the redirect. For users involved in a $ConnectToMe attack, the "transfer view" of their client will show a number of upload connections in the "Connecting…" state. Through the process of elimination, they can determine which hub is issuing these bogus connection attempts. We have been burned with these attacks as well, so we'll keep looking for ways of improving the program.

    World domination: Step 2: Twitter

    As part of our (further) desire for world domination for Direct Connect, Twitter is not saved from us! The intent is to have the site act as an aggregate of Direct Connect links and posts, as well as allowing people to use a well-known source of information for their DC content as well. Yeah, I know, pretty much the same as with Reddit, but you have to remember the way in which content is published; we don’t control who posts at reddit, while with Twitter you can easily be completely up to date with news etc, right in your mobile devices.

    Don’t forget that you can make topic suggestions for blog posts in our “Blog Topic Suggestion Box!”

    Design a site like this with WordPress.com
    Get started