forked from petertodd/python-bitcoinlib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsend-addrs-msg.py
executable file
·66 lines (47 loc) · 1.51 KB
/
send-addrs-msg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python3
import socket, time, bitcoin
from bitcoin.messages import msg_version, msg_verack, msg_addr
from bitcoin.net import CAddress
PORT = 18333
bitcoin.SelectParams('testnet')
def version_pkt(client_ip, server_ip):
msg = msg_version()
msg.nVersion = 70002
msg.addrTo.ip = server_ip
msg.addrTo.port = PORT
msg.addrFrom.ip = client_ip
msg.addrFrom.port = PORT
return msg
def addr_pkt( str_addrs ):
msg = msg_addr()
addrs = []
for i in str_addrs:
addr = CAddress()
addr.port = 18333
addr.nTime = int(time.time())
addr.ip = i
addrs.append( addr )
msg.addrs = addrs
return msg
s = socket.socket()
server_ip = "192.168.0.149"
client_ip = "192.168.0.13"
s.connect( (server_ip,PORT) )
# Send Version packet
s.send( version_pkt(client_ip, server_ip).to_bytes() )
# Get Version reply
print(s.recv(1924))
# Send Verack
s.send( msg_verack().to_bytes() )
# Get Verack
print(s.recv(1024))
# Send Addrs
s.send( addr_pkt(["252.11.1.2", "EEEE:7777:8888:AAAA::1"]).to_bytes() )
time.sleep(1)
s.close()
# debug log on the server should look like:
# accepted connection 192.168.0.13:39979
# send version message: version 70002, blocks=317947, us=****, them=0.0.0.0:0, peer=192.168.0.13:39979
# receive version message: /pythonbitcoin0.0.1/: version 70002, blocks=-1, us=192.168.0.149:18333, them=192.168.0.13:18333, peer=192.168.0.13:39979
# Added 2 addresses from 192.168.0.13: 3 tried, 1706 new
# disconnecting node 192.168.0.13:39979