Mathematica CJam, 108 95 46 35 30 bytes
Edit: Ported to CJam! The original and ungolfed Mathematica code is at the bottom and explains the algorithm quite well.
li,{)Kb65430s2046sm*$f=0s*ip}/
And now I know CJam. :D Thanks to Dennis for some golfing improvements.
After analysing them a bit to determine how many there are below one quadrillion, I came to the conclusion that all eban numbers are basically base-1000 numbers using only a set of 20 digits:
0, 2, 4, 6, 30, 32, 34, 36, 40, 42, 44, 46, 50, 52, 54, 56, 60, 62, 64, 66
So we enumerate them by converting the input to base 20, picking the right digit from the set and build a base 1000 number from it.
This is how the code works in detail:
li "Read from STDIN, convert to integer n";
li, "Turn into a range array [0 ... n-1]";
li,{ }/ "For each number execute a block";
li,{) }/ "Increment";
li,{)K }/ "K is initialised to 20, push that";
li,{)Kb }/ "Convert to base 20";
li,{)Kb65430s }/ "Push a string with possible multiples of 10";
li,{)Kb65430s2046s }/ "Push a string with possible least significant digits";
li,{)Kb65430s2046sm* }/ "Take the Cartesian product of the two character
arrays, generating the 20 'digits'";
li,{)Kb65430s2046sm*$ }/ "Sort the result";
li,{)Kb65430s2046sm*$f= }/ "For each digit in our base-20 number, get the
base-1000 digit from the list";
li,{)Kb65430s2046sm*$f=0s }/ "Push a '0' character";
li,{)Kb65430s2046sm*$f=0s* }/ "Join all the digits, with that '0' as the delimiter";
li,{)Kb65430s2046sm*$f=0s*ip}/ "Convert to an integer and print the result";
Here was the original Mathematica code, which doesn't encode the digit list and is hence fairly readable:
{0,2,4,6,30,32,34,36,40,42,44,46,50,52,54,56,60,62,64,66}[[IntegerDigits[#,20]+1]]~FromDigits~1000 & /@ Range @ # &