Bitcoin Forum
May 05, 2024, 06:47:56 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 [141] 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 ... 250 »
  Print  
Author Topic: Bitcoin puzzle transaction ~32 BTC prize to who solves it  (Read 185946 times)
digaran
Copper Member
Hero Member
*****
Offline Offline

Activity: 1330
Merit: 899

🖤😏


View Profile
June 14, 2023, 07:55:52 PM
 #2801


Yeah .. He, most likely, generated 256 keys and manually updated the first character on the left whenever necessary.
You really think he just changed 1 digit? Some one who is an expert in cryptography would know better, but maybe he didn't want to make it very difficult and really used randomly generated keys. But if I were him, I'd have changed a few characters to make it really really hard, for example having a few 0s in a key will make it hard to reverse engineer a key manually, and brute force/kangaroo, well they have their limits.

One other thing could be placing a key outside a bit range, I'm curious did Satoshi ever confirmed that the keys are truly in the assumed bit ranges or we just hope the amounts of transactions are enough of a proof that the keys are exactly there?

But you know what I'd like to see? A large amount in a key with no exactly known bit range, somewhere between 160 and 180 bit not lower and not higher, then solving that key would be a global challenge, though not any amount which someone could spend half of it to use special tools and grab it, something which could only be solved by math and new methods.

For example, I haven't seen any tool/ algorithm capable of  adding or subtracting 1 to a key and then divide it by 2, kangaroo  engages square root calculations, BSGS looks for a match after adding/subtracting calculations, but no tool does + or - 1 then divide!

🖤😏
1714891676
Hero Member
*
Offline Offline

Posts: 1714891676

View Profile Personal Message (Offline)

Ignore
1714891676
Reply with quote  #2

1714891676
Report to moderator
Make sure you back up your wallet regularly! Unlike a bank account, nobody can help you if you lose access to your BTC.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714891676
Hero Member
*
Offline Offline

Posts: 1714891676

View Profile Personal Message (Offline)

Ignore
1714891676
Reply with quote  #2

1714891676
Report to moderator
Evillo
Member
**
Offline Offline

Activity: 185
Merit: 15

Two things you should never abandon: Family & BTC


View Profile
June 14, 2023, 08:41:55 PM
 #2802


Yeah .. He, most likely, generated 256 keys and manually updated the first character on the left whenever necessary.
You really think he just changed 1 digit? Some one who is an expert in cryptography would know better, but maybe he didn't want to make it very difficult and really used randomly generated keys. But if I were him, I'd have changed a few characters to make it really really hard.

Lol .. you have no clue what we're talking about do you! The reason he changes the first character on the left is NOT to make it difficult, it's to make the ranges as per his puzzle requirements.. in fact, even if he changes nothing.. Brutefocring the seed is impossible. A person who knows cryptography would know that humans are terrible in creating secure randomness. Changing numbers or adding zeros doesn't do shit in terms of difficulty, the opposite is true, it can actually increase predictability

Cool Story Bro.
BTC: 1EviLLo1Y5VeNn2Lajv9tdZTkUuVgePVYN
lordfrs
Jr. Member
*
Offline Offline

Activity: 52
Merit: 1


View Profile
June 14, 2023, 11:42:50 PM
 #2803


Yeah .. He, most likely, generated 256 keys and manually updated the first character on the left whenever necessary.
You really think he just changed 1 digit? Some one who is an expert in cryptography would know better, but maybe he didn't want to make it very difficult and really used randomly generated keys. But if I were him, I'd have changed a few characters to make it really really hard, for example having a few 0s in a key will make it hard to reverse engineer a key manually, and brute force/kangaroo, well they have their limits.

One other thing could be placing a key outside a bit range, I'm curious did Satoshi ever confirmed that the keys are truly in the assumed bit ranges or we just hope the amounts of transactions are enough of a proof that the keys are exactly there?

But you know what I'd like to see? A large amount in a key with no exactly known bit range, somewhere between 160 and 180 bit not lower and not higher, then solving that key would be a global challenge, though not any amount which someone could spend half of it to use special tools and grab it, something which could only be solved by math and new methods.

For example, I haven't seen any tool/ algorithm capable of  adding or subtracting 1 to a key and then divide it by 2, kangaroo  engages square root calculations, BSGS looks for a match after adding/subtracting calculations, but no tool does + or - 1 then divide!

Now I look at it from a different angle. In binary, the program is more practical, for example, I know the last 8 bits of the private key anyway, because 8 bits equals a maximum of 256 digits. There was a friend who said that if the curve math is 0, multiply, if 1, add, knowing the last bit means solving ecdsa, the last 8 bits are 1 in 256, you can find the rest. If you say the last 16 bits, there is 1 possibility in 65536, these numbers can be tried, you will reduce 125 bits -16 bits =109bits.

This is the code

Code:

from sympy import mod_inverse
import secp256k1 as ice

k=mod_inverse(2,N)
neg1=ice.point_negation(ice.scalar_multiplication(1))

def ters(Qx,Scalar):
     ScalarBin = str(bin(Scalar))[2:]
     le=len(ScalarBin)
     for i in range (0,le):
        if ScalarBin[le-i] == "0":
            Qx=ice.point_multiplication(k,Qx)
        else:
            Qx=ice.point_addition(Qx,neg1)
            Qx=ice.point_multiplication(k,Qx)
     return ice.point_to_cpub(Qx)

for x in range(65536):
         print(ters(pub,x))


If the last bit is 1, it moves the point forward when divided by (2).

7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 +

if the last bit is 0 then normal divides

If you want to buy me a coffee

Btc = 3246y1G9YjnQQNRUrVMnaeCFrymZRgJAP7

Doge = DGNd8UTi8jVTVZ2twhKydyqicynbsERMjs
Milly1
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
June 15, 2023, 03:34:36 PM
 #2804


Good evening everyone! I've been following this forum on and off for several years. I want to wish you all good luck for the 32 BTC puzzle. Well, it has increased now. Please note that this message is translated into English because I don't speak English well enough. Last night, I stumbled upon one of your pages by chance, about fifteen pages back! One of you had a brilliant idea. I don't remember the person's username, but they didn't explain much. However, as I reread the creator's message, it made sense. I did some research, and indeed, it matched. I have never coded in my life, but I followed some tutorials last night and achieved the same results (since the person shared their results). I dreamt about it all night! : ) And this morning, Eureka! I found a continuation of their work, an idea! I've been thinking about it all day, doing calculations and probabilities in my head, but unfortunately, I've been busy with work. I'm about to head home and try all this mess! I will keep you updated whether I find the answer or get closer to it! I will share the results and the method used. Please bear with me, as it takes me a lot of time to code something since I'm not an expert like most of you! I just wanted to say to those who are trying to find a mathematical solution that there isn't a single formula, but many small calculations and probabilities at times! Focus on the creator's message and on the ranges where each key is located, even those that have already been found! The goal is not a complicated mathematical formula but rather asking the right questions!! I hope this will inspire you!




GR Sasa
Member
**
Offline Offline

Activity: 177
Merit: 14


View Profile
June 15, 2023, 06:12:30 PM
 #2805


Last night, I stumbled upon one of your pages by chance, about fifteen pages back! One of you had a brilliant idea. I don't remember the person's username, but they didn't explain much.





DO YOU mean Professor of wilds ? He's ideas sorry are shit. They don't work because keys are generated on fly. We already discussed this.
Etar
Sr. Member
****
Offline Offline

Activity: 616
Merit: 312


View Profile
June 15, 2023, 07:14:32 PM
Merited by albert0bsd (2)
 #2806

Here is my vision of cuda kangaroo https://github.com/Etayson/Etarkangaroo
Range limited to 192 bit, detecting dead kangaroos during merge, fast kangaroo initialization on GPU...
unclevito
Jr. Member
*
Offline Offline

Activity: 74
Merit: 4


View Profile WWW
June 15, 2023, 09:19:33 PM
 #2807

Here is my vision of cuda kangaroo https://github.com/Etayson/Etarkangaroo
Range limited to 192 bit, detecting dead kangaroos during merge, fast kangaroo initialization on GPU...


Tried it and impressive
sssergy2705
Copper Member
Newbie
*
Offline Offline

Activity: 188
Merit: 0


View Profile
June 16, 2023, 04:44:56 AM
 #2808

Here is my vision of cuda kangaroo https://github.com/Etayson/Etarkangaroo
Range limited to 192 bit, detecting dead kangaroos during merge, fast kangaroo initialization on GPU...


How to compile on linux?
Daltonik
Legendary
*
Offline Offline

Activity: 2520
Merit: 1490


View Profile
June 16, 2023, 01:21:59 PM
 #2809

@f4lc0n90 also has a pool for finding puzzle #67 by downloading the client v7 https://github.com/f4lc0n90/f4lc0npool/releases/  you can participate in the search http://f4lc0n.com:8081/  Smiley
r1ckpwn
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
June 17, 2023, 08:30:36 AM
 #2810


Yeah .. He, most likely, generated 256 keys and manually updated the first character on the left whenever necessary.
You really think he just changed 1 digit? Some one who is an expert in cryptography would know better, but maybe he didn't want to make it very difficult and really used randomly generated keys. But if I were him, I'd have changed a few characters to make it really really hard, for example having a few 0s in a key will make it hard to reverse engineer a key manually, and brute force/kangaroo, well they have their limits.

One other thing could be placing a key outside a bit range, I'm curious did Satoshi ever confirmed that the keys are truly in the assumed bit ranges or we just hope the amounts of transactions are enough of a proof that the keys are exactly there?

But you know what I'd like to see? A large amount in a key with no exactly known bit range, somewhere between 160 and 180 bit not lower and not higher, then solving that key would be a global challenge, though not any amount which someone could spend half of it to use special tools and grab it, something which could only be solved by math and new methods.

For example, I haven't seen any tool/ algorithm capable of  adding or subtracting 1 to a key and then divide it by 2, kangaroo  engages square root calculations, BSGS looks for a match after adding/subtracting calculations, but no tool does + or - 1 then divide!

Now I look at it from a different angle. In binary, the program is more practical, for example, I know the last 8 bits of the private key anyway, because 8 bits equals a maximum of 256 digits. There was a friend who said that if the curve math is 0, multiply, if 1, add, knowing the last bit means solving ecdsa, the last 8 bits are 1 in 256, you can find the rest. If you say the last 16 bits, there is 1 possibility in 65536, these numbers can be tried, you will reduce 125 bits -16 bits =109bits.

This is the code

Code:

from sympy import mod_inverse
import secp256k1 as ice

k=mod_inverse(2,N)
neg1=ice.point_negation(ice.scalar_multiplication(1))

def ters(Qx,Scalar):
     ScalarBin = str(bin(Scalar))[2:]
     le=len(ScalarBin)
     for i in range (0,le):
        if ScalarBin[le-i] == "0":
            Qx=ice.point_multiplication(k,Qx)
        else:
            Qx=ice.point_addition(Qx,neg1)
            Qx=ice.point_multiplication(k,Qx)
     return ice.point_to_cpub(Qx)

for x in range(65536):
         print(ters(pub,x))


If the last bit is 1, it moves the point forward when divided by (2).

7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 +

if the last bit is 0 then normal divides

You trying to do mod_inverse using N. But N what is?
lordfrs
Jr. Member
*
Offline Offline

Activity: 52
Merit: 1


View Profile
June 17, 2023, 10:38:06 AM
 #2811


Yeah .. He, most likely, generated 256 keys and manually updated the first character on the left whenever necessary.
You really think he just changed 1 digit? Some one who is an expert in cryptography would know better, but maybe he didn't want to make it very difficult and really used randomly generated keys. But if I were him, I'd have changed a few characters to make it really really hard, for example having a few 0s in a key will make it hard to reverse engineer a key manually, and brute force/kangaroo, well they have their limits.

One other thing could be placing a key outside a bit range, I'm curious did Satoshi ever confirmed that the keys are truly in the assumed bit ranges or we just hope the amounts of transactions are enough of a proof that the keys are exactly there?

But you know what I'd like to see? A large amount in a key with no exactly known bit range, somewhere between 160 and 180 bit not lower and not higher, then solving that key would be a global challenge, though not any amount which someone could spend half of it to use special tools and grab it, something which could only be solved by math and new methods.

For example, I haven't seen any tool/ algorithm capable of  adding or subtracting 1 to a key and then divide it by 2, kangaroo  engages square root calculations, BSGS looks for a match after adding/subtracting calculations, but no tool does + or - 1 then divide!

Now I look at it from a different angle. In binary, the program is more practical, for example, I know the last 8 bits of the private key anyway, because 8 bits equals a maximum of 256 digits. There was a friend who said that if the curve math is 0, multiply, if 1, add, knowing the last bit means solving ecdsa, the last 8 bits are 1 in 256, you can find the rest. If you say the last 16 bits, there is 1 possibility in 65536, these numbers can be tried, you will reduce 125 bits -16 bits =109bits.

This is the code

Code:

from sympy import mod_inverse
import secp256k1 as ice

k=mod_inverse(2,N)
neg1=ice.point_negation(ice.scalar_multiplication(1))

def ters(Qx,Scalar):
     ScalarBin = str(bin(Scalar))[2:]
     le=len(ScalarBin)
     for i in range (0,le):
        if ScalarBin[le-i] == "0":
            Qx=ice.point_multiplication(k,Qx)
        else:
            Qx=ice.point_addition(Qx,neg1)
            Qx=ice.point_multiplication(k,Qx)
     return ice.point_to_cpub(Qx)

for x in range(65536):
         print(ters(pub,x))


If the last bit is 1, it moves the point forward when divided by (2).

7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 +

if the last bit is 0 then normal divides

You trying to do mod_inverse using N. But N what is?



N=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

If you want to buy me a coffee

Btc = 3246y1G9YjnQQNRUrVMnaeCFrymZRgJAP7

Doge = DGNd8UTi8jVTVZ2twhKydyqicynbsERMjs
Denis_Hitov
Newbie
*
Offline Offline

Activity: 49
Merit: 0


View Profile
June 17, 2023, 09:20:36 PM
 #2812


Yeah .. He, most likely, generated 256 keys and manually updated the first character on the left whenever necessary.
You really think he just changed 1 digit? Some one who is an expert in cryptography would know better, but maybe he didn't want to make it very difficult and really used randomly generated keys. But if I were him, I'd have changed a few characters to make it really really hard, for example having a few 0s in a key will make it hard to reverse engineer a key manually, and brute force/kangaroo, well they have their limits.

One other thing could be placing a key outside a bit range, I'm curious did Satoshi ever confirmed that the keys are truly in the assumed bit ranges or we just hope the amounts of transactions are enough of a proof that the keys are exactly there?

But you know what I'd like to see? A large amount in a key with no exactly known bit range, somewhere between 160 and 180 bit not lower and not higher, then solving that key would be a global challenge, though not any amount which someone could spend half of it to use special tools and grab it, something which could only be solved by math and new methods.

For example, I haven't seen any tool/ algorithm capable of  adding or subtracting 1 to a key and then divide it by 2, kangaroo  engages square root calculations, BSGS looks for a match after adding/subtracting calculations, but no tool does + or - 1 then divide!

Now I look at it from a different angle. In binary, the program is more practical, for example, I know the last 8 bits of the private key anyway, because 8 bits equals a maximum of 256 digits. There was a friend who said that if the curve math is 0, multiply, if 1, add, knowing the last bit means solving ecdsa, the last 8 bits are 1 in 256, you can find the rest. If you say the last 16 bits, there is 1 possibility in 65536, these numbers can be tried, you will reduce 125 bits -16 bits =109bits.

This is the code

Code:

from sympy import mod_inverse
import secp256k1 as ice

k=mod_inverse(2,N)
neg1=ice.point_negation(ice.scalar_multiplication(1))

def ters(Qx,Scalar):
     ScalarBin = str(bin(Scalar))[2:]
     le=len(ScalarBin)
     for i in range (0,le):
        if ScalarBin[le-i] == "0":
            Qx=ice.point_multiplication(k,Qx)
        else:
            Qx=ice.point_addition(Qx,neg1)
            Qx=ice.point_multiplication(k,Qx)
     return ice.point_to_cpub(Qx)

for x in range(65536):
         print(ters(pub,x))


If the last bit is 1, it moves the point forward when divided by (2).

7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 +

if the last bit is 0 then normal divides

You trying to do mod_inverse using N. But N what is?



N=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

The code doesn't work.

NameError: name 'pub' is not defined

How to fix?
lordfrs
Jr. Member
*
Offline Offline

Activity: 52
Merit: 1


View Profile
June 18, 2023, 12:13:33 PM
 #2813


Yeah .. He, most likely, generated 256 keys and manually updated the first character on the left whenever necessary.
You really think he just changed 1 digit? Some one who is an expert in cryptography would know better, but maybe he didn't want to make it very difficult and really used randomly generated keys. But if I were him, I'd have changed a few characters to make it really really hard, for example having a few 0s in a key will make it hard to reverse engineer a key manually, and brute force/kangaroo, well they have their limits.

One other thing could be placing a key outside a bit range, I'm curious did Satoshi ever confirmed that the keys are truly in the assumed bit ranges or we just hope the amounts of transactions are enough of a proof that the keys are exactly there?

But you know what I'd like to see? A large amount in a key with no exactly known bit range, somewhere between 160 and 180 bit not lower and not higher, then solving that key would be a global challenge, though not any amount which someone could spend half of it to use special tools and grab it, something which could only be solved by math and new methods.

For example, I haven't seen any tool/ algorithm capable of  adding or subtracting 1 to a key and then divide it by 2, kangaroo  engages square root calculations, BSGS looks for a match after adding/subtracting calculations, but no tool does + or - 1 then divide!

Now I look at it from a different angle. In binary, the program is more practical, for example, I know the last 8 bits of the private key anyway, because 8 bits equals a maximum of 256 digits. There was a friend who said that if the curve math is 0, multiply, if 1, add, knowing the last bit means solving ecdsa, the last 8 bits are 1 in 256, you can find the rest. If you say the last 16 bits, there is 1 possibility in 65536, these numbers can be tried, you will reduce 125 bits -16 bits =109bits.

This is the code

Code:

from sympy import mod_inverse
import secp256k1 as ice

k=mod_inverse(2,N)
neg1=ice.point_negation(ice.scalar_multiplication(1))

def ters(Qx,Scalar):
     ScalarBin = str(bin(Scalar))[2:]
     le=len(ScalarBin)
     for i in range (0,le):
        if ScalarBin[le-i] == "0":
            Qx=ice.point_multiplication(k,Qx)
        else:
            Qx=ice.point_addition(Qx,neg1)
            Qx=ice.point_multiplication(k,Qx)
     return ice.point_to_cpub(Qx)

for x in range(65536):
         print(ters(pub,x))


If the last bit is 1, it moves the point forward when divided by (2).

7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1 +

if the last bit is 0 then normal divides

You trying to do mod_inverse using N. But N what is?



N=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

The code doesn't work.

NameError: name 'pub' is not defined

How to fix?



pub=ice.pub2upub('0433709eb11e0d4439a729f21c2c443dedb727528229713f0065721ba8fa46f00e2a1c304a39a77 775d3579d077b6ee5e4d26fd3ec36f52ad674a9b47fdd999c48')

If you want to buy me a coffee

Btc = 3246y1G9YjnQQNRUrVMnaeCFrymZRgJAP7

Doge = DGNd8UTi8jVTVZ2twhKydyqicynbsERMjs
NomadTheSavior
Newbie
*
Offline Offline

Activity: 14
Merit: 2


View Profile
June 18, 2023, 05:34:49 PM
 #2814

I see this thing is still going, has anyone solved any of the puzzles yet? Or has anyone made any type of progress? Can I get a TLDR of the events over the years from the start of the puzzle until now?
digaran
Copper Member
Hero Member
*****
Offline Offline

Activity: 1330
Merit: 899

🖤😏


View Profile
June 18, 2023, 06:52:38 PM
 #2815

I see this thing is still going, has anyone solved any of the puzzles yet? Or has anyone made any type of progress? Can I get a TLDR of the events over the years from the start of the puzzle until now?
Over how many years exactly? 😂, #65 and #120 been solved. Prize has been increased 10 fold, now there is around 1000 bitcoins for us to loot ( yeah right).

🖤😏
cryptoDEADBEEFFFFF
Newbie
*
Offline Offline

Activity: 24
Merit: 4


View Profile
June 18, 2023, 06:55:34 PM
 #2816

I see this thing is still going, has anyone solved any of the puzzles yet? Or has anyone made any type of progress? Can I get a TLDR of the events over the years from the start of the puzzle until now?
Over how many years exactly? 😂, #65 and #120 been solved. Prize has been increased 10 fold, now there is around 1000 bitcoins for us to loot ( yeah right).

You forgot one important detaill: puzzle #65 was solved before #64. Idk why!!!  Huh Huh
GoldTiger69
Hero Member
*****
Offline Offline

Activity: 582
Merit: 502


View Profile WWW
June 18, 2023, 07:01:09 PM
 #2817

I see this thing is still going, has anyone solved any of the puzzles yet? Or has anyone made any type of progress? Can I get a TLDR of the events over the years from the start of the puzzle until now?
Over how many years exactly? 😂, #65 and #120 been solved. Prize has been increased 10 fold, now there is around 1000 bitcoins for us to loot ( yeah right).

You forgot one important detaill: puzzle #65 was solved before #64. Idk why!!!  Huh Huh

That was because public key of #65 was revealed, so Kangaroo was used to find its private key.

I can help you to restore/recover your wallet or password.
https://bitcointalk.org/index.php?topic=1234619.0
sssergy2705
Copper Member
Newbie
*
Offline Offline

Activity: 188
Merit: 0


View Profile
June 19, 2023, 07:24:38 AM
 #2818

Can anyone suggest a Python script to subtract compressed public keys, like in the keymath program from albertobsd's ecctools library?
kalos15btc
Jr. Member
*
Offline Offline

Activity: 50
Merit: 1


View Profile
June 19, 2023, 12:07:31 PM
 #2819

Can anyone suggest a Python script to subtract compressed public keys, like in the keymath program from albertobsd's ecctools library?

https://github.com/WanderingPhilosopher/Windows-KeySubtractor

sssergy2705
Copper Member
Newbie
*
Offline Offline

Activity: 188
Merit: 0


View Profile
June 19, 2023, 02:51:54 PM
 #2820

Can anyone suggest a Python script to subtract compressed public keys, like in the keymath program from albertobsd's ecctools library?

https://github.com/WanderingPhilosopher/Windows-KeySubtractor



Of course thanks, but I need a library or a python script.
Pages: « 1 ... 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 [141] 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 ... 250 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!