Luxembourg the country where the improbabe is still possibe. Years ago it came to my attention that Restena the central registrar (yes thats a word) for LU Domain names has a very strange notion when it comes to how it gives out domain names.

Being one of the founding members of the EU you would presume that Luxembourg is somehow mature with regards to free expression, freedom of speech and similar concepts. However similar to IRAN or other arab countries, there are certain domain names you simpy can't aquire.

Though Restena claims in their Domain Name charter #4, that it "[..] does not in principle proceed to any "a priori" verification of an application for a domain name" such verification of course happens, just a few lines below we read

"Domain name applications which belong to one of the following categories are however (sic) rejected:

  • (a) the domain name contains the name of any Luxembourg municipality or village, as indicated in the Annuaire Officiel 1995 - Vol. 2 - Aperçu géo-politique et localités du Grand-Duché", unless it is the local administration in question filling in the application form for its own name as a domain name;
  • (b) domain names which are identical to an already registered domain name, or which are identical to a previously applied valid domain name;
  • (c) domain names considered obviously to be contrary to public order or good morals
End of quote.

It begs the questions as to how exactly a simple domain name can be "considered to be contrary to public order or good morals" and who exactly decides what is against "good morals" (and are there bad morals?) Is there an official board ? I mean there is no other way to get an LU domain name than over Restena (directy or indirectly).

Now here is the Blacklist of domains names, afaik this list is not officialy linked on the DNS.LU site. Google Cache

Blocked Domain names List

Let's go through some of them and ask ourselves, if to our 2009 standard these domain names contain a name of a luxemburgish village/municipality or are identical to an already registered domain name or are contrary to public order and/or good morals. (really dig the "good" here) :
  • & & & &
    These domain names are not names of villages and are not identical to others. So are these domain names themselves against public order or "good morals" ? As a reminder, we are not speaking of content but solely about the domain names. We have the year 2009 not 1850, and as such I personaly don't feel offended by these domain names. Do you?
  • &
    No village, not against public order and not similar to existing domain names, so why are they on the list. I don't know, I personaly presume that the person in charge at Restena blocks and blacklists domains he doesn't like.
  • The rest

    pretty obvious.
To put this into perspective, Luxembourg is one of the few counttries, apparently, that still thinks the simple word "sex" is offensive and against public order. Amongst it's peers are IRAN, IRAQ, CHINA, Pakistan and others. Welcome to the year 2009!

I was able to reverse part of the protocol this beast speaks, currently I am able to read tracks, eject card and reset device. It was a rather tedious but fun task, learned quite some new tricks. The layer 1 is R232 and what took me 4 hours to figure out is that you absolutely need to send the Data Set Ready (DSR) signal prior to sending commands.

It is a rather simple binary protocol over R232, here is a small excerpt of my debugging output :
On the left wee see the Hexadecimal representation of the protocol, on the right the ASCII display.

RESET command
Request: 2/20/2009 7:23:07 PM.01564
10 02 43 30 30 10 03 40 - ..C00..@
Answer: 2/20/2009 7:23:07 PM.01564 (+0.0000 seconds)
10 06 - ..
Request: 2/20/2009 7:23:07 PM.12564 (+0.1094 seconds)
10 05 - ..
Answer: 2/20/2009 7:23:09 PM.59364 (+2.4688 seconds)
10 02 50 30 30 30 31 10 03 52 - ..P0001..R

Interpreting :
The first command send is Hex (10 02 43 30 30 10 03 4) which interpreted stands for <DLE><STX>C00<DLE><ETX>@
  • DLE = (Data Link Escape, ASCII Code 127)
  • STX = (Start of TeXt, ASCII Code 2)
  • ETX = (End of TeXt, ASCII Code 3)

The command itself sits in the middle, namely C00, which is the reset command. The protocol flow itself is a simple handshake flow, in tcpish terms : SYN | SYN ACK | SYN-ACK 2 | ACK |

The command ACK is alwas 10 06.

I then started to implement the communication protocol in C#, here is a screenshot of the current prototype, the "Omron Communicator" in C#.

After searching the web for parts of the reversed protocol I was able to find a complete specification of the device together with the protocol documentation. Since this is difficult to find without detailed knowledge I am going to mirror the pdf on this site for google to gather it under the relevant keywords.

Got an new Hybrid card reader to play with, actually it came right out of an ATM, it's an Omron 3S4YR-MVFW.

The device can read and write
- LoCo and HoCo cards
- smartcard chip (memory and processor based)

If somebody is interested in such a device you might drop me an e-mail here

Next I am going to reverse enginner the Protocol it speaks to implement an application to comfortably use it. This device is very interesting to use for a few reasons during physical pentests, you might laugh how many poeple will swipe their company cards if you ask them or stuff it into an official looking box.

The source code to BTCrack under the GPL v3 License, this was an exlusive release for Backtrack 3.0 at the time.

Authors : Eric Sesterhen & Thierry Zoller

UPDATE: 06.06.2012 - Version 1.01 released

This is a straight forward linux port of Thierry Zollers' BTCrack. Should work with most other unixes too, code is nearly ansi clean, except for strdup(), but I guess every OS should have this by now.

Compiling was tested so far with :
  • gcc version 4.1.1 (Gentoo 4.1.1-r3) on i686-pc-linux-gnu
  • gcc version 4.3.0-alpha20061216 on i586-pc-linux-gnu
  • gcc version 3.3.6 on i586-pc-linux-gnu
  • gcc version 3.4.6 on i586-pc-linux-gnu
  • gcc version 2.95.4 20011002 (Debian prerelease) on i686-pc-linux-gnu
  • gcc version 4.0.3 on sparc-sun-solaris2.8
  • icc Version 9.1 Build 20060706Z on i686-pc-linux-gnu
  • Sun WorkShop 6 update 2 C 5.3 Patch 111679-11 2003/04/02

Test it with the provided csv file: ./btcrack 1 00:11:9F:C4:F3:AE 00:60:57:1A:6B:F1 ./Pin_654321.csv

Shawn Merdinger sent me this screenshot entitled "btcrack_pr0n" : Sonicwall seems to think that Btcrack cracks something else then Bluetooth ? (Most probably though the positive signature is due to the FLV downloading site)

BTCrack is the worlds first Bluetooth Pass phrase (PIN) bruteforce tool, BTCrack will bruteforce the Passkey and the Link key from captured pairing* exchanges.

To capture the pairing data it is necessary to have a Professional Bluetooth Analyzer : FTE (BPA 100, BPA 105, others), Merlin OR to know how to flash a CSR based consumer USB dongle with special firmware.

Example of an Attack scenario :

  • Attacker reconstructs BD_ADDR of both Master and Slave through passive (reconstructing through a preamble sniff, even when the device is in hidden mode) or active means (redfang)
  • Attacker changes his BD_ADDR to the one of the Slave device
  • Attacker asks to pair with the Master indicating it has no key, the Master will more then often trash the old pairing data and request a new link key from the genuine slave
  • Attacker now captures the key (pairing) exchange taking place between the two devices as the users try to re-establish a connection
  • Attacker exports data to CSV format and imports into BTCrack
  • Attacker can now compromise Master and Slave Bluetooth device through usage of the cracked Linkkey and is able to decrypt the data transmitted between the bluetooth devices

    Why the PIN is not so important
    An Attacker will focus on recovering the Linkkey and not the PIN, here's why :

  • The Link-key allows remote connections without the victim noticing
  • The Link-key allows and attacker to connect to devices in non-pairing mode and non discoverable mode
  • The Link-key allows decryption of the data

    History :
  • Olly Whitehouse - 2003
    Presented theoretic weaknesses in the implementation of the Pairing exchange
  • Shaked and Wool - 2005
    Present their logic to break pairing exchanges and implement it in Private
  • Thierry Zoller - 2006
    First public release of a complete optimized Implementation of the Shaked and Wool logic. Optimisation done by Erik Sesterhenn.
  • David Hulton / Thierry Zoller - 2007
    Worlds first FPGA based Implementation

    Screenshots :

    Speed Comparison :
  • P4 2Ghz - Dual Core 200.000 keys/sec
  • FPGA E12 @ 50Mhz 7.600.000 keys/sec
  • FPGA E12 @ 75Mhz 10.000.000 keys/sec
  • FPGA E14 30.000.000 keys/sec

    Known issues :
    [+] Frontline 6.0 mixes Master & Slave Addresses

    Changes :
    1.0 First release
    1.1 Intermediate Release
  • E12 + E14 FPGA Support (
  • Splash Screen
  • Process Priority
  • Speed increase (+15%)

    Downloads :
  • Download BTCrack
  • Heisec 2007 - Scheunentor Bluetooth
  • 23C3 - Bluetooth Hacking revisited - All your Bluetooth is belong to us

    Heisec 2007 Scheunentor Bluetooth Zoller