Bitcoin Forum
May 12, 2024, 11:05:29 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Trying to run Coinbase multisig-tool locally on Linux  (Read 405 times)
Lepi (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 5


View Profile
March 13, 2023, 09:44:28 PM
Last edit: March 13, 2023, 10:23:58 PM by Lepi
Merited by o_e_l_e_o (4), ABCbits (1)
 #1

After Coinbase multisig vault was discontinued in 2018, a third-party multisig-tool was introduced on Github.
But that one stopped working as well.

According to this thread: https://bitcointalk.org/index.php?topic=5436171.msg61722006#msg61722006 the forked version (https://github.com/dlajarretie/multisig-tool) still works correctly but needs to be run locally.

I am stuck halfway in the instructions provided on Github and would appreciate if someone could guide me through the rest.

My progress so far:
-I installed Linux Ubuntu on a spare computer
-I installed npm and browserify
-I cloned the repository from: https://github.com/dlajarretie/multisig-tool

I entered the following commands in the multisig-tool repository in the terminal:
-npm install bitcoinjs-lib
-npm install --save bip38
-npm install bip38 crypto-browserify --save
-browserify -r bip38 -s Bip38 > lib/multisig/bip38.js
The latter command didn't show anything in the terminal, but I do see the "bip38.js"  file in the lib/multisig folder so  it could've been successful.

Are there any other steps I've to perform before going further?

When I enter "make run", I get the following error:

cd lib/multisig && \
../../node_modules/.bin/browserify -r ./vault -r ./views/addresses_view > ../../multisig.js
python -m SimpleHTTPServer
make: python: No such file or directory
make: *** [Makefile:2: run] Error 127

I look forward to hearing from the community and very much appreciate the help.
Also shoutout to o_e_l_e_o for being extremely helpful in the DM's.
1715555129
Hero Member
*
Offline Offline

Posts: 1715555129

View Profile Personal Message (Offline)

Ignore
1715555129
Reply with quote  #2

1715555129
Report to moderator
1715555129
Hero Member
*
Offline Offline

Posts: 1715555129

View Profile Personal Message (Offline)

Ignore
1715555129
Reply with quote  #2

1715555129
Report to moderator
1715555129
Hero Member
*
Offline Offline

Posts: 1715555129

View Profile Personal Message (Offline)

Ignore
1715555129
Reply with quote  #2

1715555129
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715555129
Hero Member
*
Offline Offline

Posts: 1715555129

View Profile Personal Message (Offline)

Ignore
1715555129
Reply with quote  #2

1715555129
Report to moderator
1715555129
Hero Member
*
Offline Offline

Posts: 1715555129

View Profile Personal Message (Offline)

Ignore
1715555129
Reply with quote  #2

1715555129
Report to moderator
BitMaxz
Legendary
*
Online Online

Activity: 3248
Merit: 2972


Block halving is coming.


View Profile WWW
March 14, 2023, 12:36:14 AM
 #2

Never use this Coinbase vault recovery before but based on what I understand from the guide on Github under the "make run" it looks like a permission issue.

Code:
Running locally
If you wish to run the tool locally, you need to do it through a local web server. The easiest way to do that is by running:

make run
This is because we use Web Workers for decrypting your BIP38 encrypted shared key seed, and Web Workers are not permitted to run through the file:/// protocol.

Another alternative is to run Chrome with the --allow-access-from-files parameter.

That is I think it suggests running Chrome with this parameter "--allow-access-from-files"

Why don't you just use the hosted one since it's ready to use?
They do only need the online on the first step when pasting public keys after they found balances you can now turn internet off and start the recovery process.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
NotATether
Legendary
*
Offline Offline

Activity: 1596
Merit: 6739


bitcoincleanup.com / bitmixlist.org


View Profile WWW
March 14, 2023, 07:47:31 AM
 #3

The error is trying to tell you that you need to install Python (2, not 3). SimpleHTTPServer is a Python 2 class and it has been deleted in Python 3.

And Ubuntu makes it particularly hard to install Python 2 in recent versions of the distro, so you should start with an older Ubuntu version such as Trusty (14.04) or Precise (12.04) that have Python 2.7 bundled.

.
.BLACKJACK ♠ FUN.
█████████
██████████████
████████████
█████████████████
████████████████▄▄
░█████████████▀░▀▀
██████████████████
░██████████████
████████████████
░██████████████
████████████
███████████████░██
██████████
CRYPTO CASINO &
SPORTS BETTING
▄▄███████▄▄
▄███████████████▄
███████████████████
█████████████████████
███████████████████████
█████████████████████████
█████████████████████████
█████████████████████████
███████████████████████
█████████████████████
███████████████████
▀███████████████▀
█████████
.
ABCbits
Legendary
*
Offline Offline

Activity: 2870
Merit: 7496


Crypto Swap Exchange


View Profile
March 14, 2023, 12:27:56 PM
Merited by NotATether (1)
 #4

And Ubuntu makes it particularly hard to install Python 2 in recent versions of the distro, so you should start with an older Ubuntu version such as Trusty (14.04) or Precise (12.04) that have Python 2.7 bundled.

Not only Ubuntu, but most newer version of linux distro. And i'd recommend to use Debian 11 since it's newest version of Debian and still ship Python 2.7[1] rather than using EOL version of Ubuntu.

[1] https://packages.debian.org/bullseye/python2.7

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Lepi (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 5


View Profile
March 15, 2023, 08:07:48 AM
 #5

All your replies are much appreciated.

I will try to install either Debian 11 or one of the older Ubuntu versions.

Quote from: BitMaxz
Why don't you just use the hosted one since it's ready to use?

The hosted version is not working correctly anymore (since years). According to other threads it's due to an SSL handshake error with an api at bipay.com. After inserting the 3 xpub keys in step 1, it generates a list of empty addresses followed by the "failure" message next to each address.

Quote from: BitMaxz
That is I think it suggests running Chrome with this parameter "--allow-access-from-files"

Could you please tell me how I can set this up in Linux? Would I still need to perform the other steps?
Lepi (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 5


View Profile
March 16, 2023, 08:59:17 PM
 #6

Quote from: BitMaxz
That is I think it suggests running Chrome with this parameter "--allow-access-from-files"

Could you please tell me how I can set this up in Linux? Would I still need to perform the other steps?

For now, adding parameter --allow-access-from-files when you launch Chrome or chromium-based browser is needed since the current problem is when you execute make run, not silent error when you use the tool on the browser.

I launched Chrome with the "-allow-file-access-from-files"  parameter by typing the following command: "./chrome --allow-file-access-from-files"

What is the next step? Am I supposed to open the index.html file? Because using Chrome to simply use the web version is not an option as the API is broken (I tried it again, which resulted into "Failed!" addresses.)
o_e_l_e_o
In memoriam
Legendary
*
Offline Offline

Activity: 2268
Merit: 18512


View Profile
March 16, 2023, 09:18:45 PM
 #7

What is the next step? Am I supposed to open the index.html file? Because using Chrome to simply use the web version is not an option as the API is broken (I tried it again, which resulted into "Failed!" addresses.)
Yes, open your local copy of index.html.

Once you open it, hit F12 on your keyboard and click on the Console tab. Does it show you any errors?
Lepi (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 5


View Profile
March 16, 2023, 09:26:30 PM
 #8

What is the next step? Am I supposed to open the index.html file? Because using Chrome to simply use the web version is not an option as the API is broken (I tried it again, which resulted into "Failed!" addresses.)
Yes, open your local copy of index.html.

Once you open it, hit F12 on your keyboard and click on the Console tab. Does it show you any errors?

Ah good to see your reply Leo!

It only says the following:
Quote
index.html:1 Access to fetch at 'file:///home/revived/multisig-tool/lib/multisig/bip38.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.
lib/multisig/bip38.js:1          Failed to load resource: net::ERR_FAILED
multisig.js:136                  Uncaught (in promise) TypeError: Failed to fetch
    at require.2 (multisig.js:136:1)
    at o (multisig.js:1:273)
    at multisig.js:1:324
    at require./vault../address (multisig.js:15193:19)
    at o (multisig.js:1:273)
    at HTMLDocument.<anonymous> (tool.js:14:15)
    at j (jquery-2.1.3.min.js:2:26911)
    at Object.fireWith [as resolveWith] (jquery-2.1.3.min.js:2:27724)
    at Function.ready (jquery-2.1.3.min.js:2:29518)
    at HTMLDocument.I (jquery-2.1.3.min.js:2:29709)
o_e_l_e_o
In memoriam
Legendary
*
Offline Offline

Activity: 2268
Merit: 18512


View Profile
March 16, 2023, 09:29:40 PM
Merited by ABCbits (1)
 #9

index.html:1 Access to fetch at 'file:///home/revived/multisig-tool/lib/multisig/bip38.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes
This means your --allow-file-access-from-files isn't working as intended. I've never used Chrome so can't advise otherwise here. I use the alternative HTTP Server method instead, which works just fine. Did you make any headway on that?

The command given above is for Python 2:
Code:
python -m SimpleHTTPServer

If you are using Python 3, try the following command:
Code:
python3 -m http.server
Lepi (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 5


View Profile
March 16, 2023, 09:46:09 PM
 #10

index.html:1 Access to fetch at 'file:///home/revived/multisig-tool/lib/multisig/bip38.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes
This means your --allow-file-access-from-files isn't working as intended. I've never used Chrome so can't advise otherwise here. I use the alternative HTTP Server method instead, which works just fine. Did you make any headway on that?

The command given above is for Python 2:
Code:
python -m SimpleHTTPServer

If you are using Python 3, try the following command:
Code:
python3 -m http.server

Is the alternative "HTTP Server method" the "Running Locally" / make run method?

I installed the BitcoinJS library. And if I'm not mistaken, I performed BIP38's step 1 & 2 correctly:
Quote
We use the BIP38 library to decrypt the encrypted shared key seeds.

To build the multisig/bip38.js we used:

    1. Install packages with npm: "npm install bip38 crypto-browserify --save"

    2. Use browserify to resolve dependencies: "browserify -r bip38 -s Bip38 > lib/multisig/bip38.js"

However, I haven't been able to figure out what I've to do in this following step:
Quote
Then we amend the "lib/multisig/bip38.js" to support progress callbacks and Web Worker messages handling.

We need this as a separate file, because we're using it with web workers.

I also can't make out what you mean by the "python3 -m http.server" command, I have Python 3.10.6 but what do I have to do after I enter that command (and should it be in the multisig-tool respository? I'm sorry, I'm a complete beginner and don't know what I'm doing so I need to know every step no matter how basic it is.
WillyAp
Member
**
Offline Offline

Activity: 686
Merit: 16

Looking for guilt best look first into a mirror


View Profile WWW
March 16, 2023, 10:14:34 PM
 #11


I also can't make out what you mean by the "python3 -m http.server" command, I have Python 3.10.6 but what do I have to do after I enter that command (and should it be in the multisig-tool respository? I'm sorry, I'm a complete beginner and don't know what I'm doing so I need to know every step no matter how basic it is.

Could well be a permission issue, Linux requieres several permission levels. Have you tried running it as sudo (root)Huh

Marketing in EN und DE
BitMaxz
Legendary
*
Online Online

Activity: 3248
Merit: 2972


Block halving is coming.


View Profile WWW
March 16, 2023, 11:32:05 PM
 #12

I think you did it wrong that is why you get this error.
Would you mind to try to put the flag on the launcher properties dialog? Look for the chrome launcher open the properties dialog and you should see something like this below

Code:
/usr/bin/google-chrome %U

And replace it with this

Code:
/usr/bin/google-chrome --allow-access-from-files

This will make  --allow-access-from-files permanent but you can change it later if you didn't need it anymore. And don't forget to re-pin the launcher after modifying it.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
o_e_l_e_o
In memoriam
Legendary
*
Offline Offline

Activity: 2268
Merit: 18512


View Profile
March 17, 2023, 08:36:49 AM
Merited by ABCbits (1)
 #13

Is the alternative "HTTP Server method" the "Running Locally" / make run method?
The make run command simply compiles the multisig.js file (which seems to be working fine for you - you can tell for sure by the presence of a file called multisig.js in your multisig-tool folder), and then attempts to launch an HTTP server. Running an HTTP server is the alternative to trying to launch chrome with --allow-file-access-from-files.

Since the make run command is trying to launch an HTTP server using a Python 2 command, and you have Python 3 installed, then instead of using make run you can just launch the HTTP server directly using the command I gave above:
Code:
python3 -m http.server

You should run it from your multisig-tool folder, the one with "index.html" in it. Open a terminal here and enter the command. If it has worked, it should say something like:
Code:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/)

Then you just open any web browser, and navigate to that address - http://0.0.0.0:8000. The tool will load and hopefully(!) be fully functional.
Lepi (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 5


View Profile
March 17, 2023, 09:37:02 AM
 #14

Is the alternative "HTTP Server method" the "Running Locally" / make run method?
The make run command simply compiles the multisig.js file (which seems to be working fine for you - you can tell for sure by the presence of a file called multisig.js in your multisig-tool folder), and then attempts to launch an HTTP server. Running an HTTP server is the alternative to trying to launch chrome with --allow-file-access-from-files.

Since the make run command is trying to launch an HTTP server using a Python 2 command, and you have Python 3 installed, then instead of using make run you can just launch the HTTP server directly using the command I gave above:
Code:
python3 -m http.server

You should run it from your multisig-tool folder, the one with "index.html" in it. Open a terminal here and enter the command. If it has worked, it should say something like:
Code:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/)

Then you just open any web browser, and navigate to that address - http://0.0.0.0:8000. The tool will load and hopefully(!) be fully functional.

Indeed, the multisig.js file is in the multisig-tool folder. However if I'm not mistaken it was already there (the icon however is changed from a notepad thingy to "JS" in big yellow letters).

Also entering "python3 -m http.server" in the same repository terminal did indeed show "Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/)".

And typing "http://0.0.0.0:8000" in the browser did automatically show the Coinbase Multisig Vault recovery tool similar to the web version. However, after entering the 3 xpub keys, I still got the exact same list of addresses, followed by a "Failed!" message and each address turning red, as I did before (using the web version)

o_e_l_e_o
In memoriam
Legendary
*
Offline Offline

Activity: 2268
Merit: 18512


View Profile
March 17, 2023, 09:53:20 AM
 #15

What error do you see in the console (F12) now?
Lepi (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 5


View Profile
March 17, 2023, 01:06:41 PM
 #16

What error do you see in the console (F12) now?

:8000/favicon.ico:1          Failed to load resource: the server responded with a status of 404 (File not found)


Also as soon as I go on "http://0.0.0.0:8000/", then the terminal shows these 2 messages:
-code 404, message File not found
-"GET /favicon.ico HTTP/1.1" 404 -
o_e_l_e_o
In memoriam
Legendary
*
Offline Offline

Activity: 2268
Merit: 18512


View Profile
March 17, 2023, 02:02:36 PM
 #17

Being unable to find a favicon file is irrelevant. This is simply the little logo icon that different websites use.

In the absence of any other errors, something is stopping your browser from correctly fetching the balances. Your browser can visit other websites normally? You don't have any firewall or similar running?

The first thing I would try would be to open a terminal in the usual multisig tool directory, and then run the following two commands:
Code:
make clean
make compile

The first will delete the multisig.js file (which is responsible for this look up); the second will recompile it from scratch. This is to rule out any error in the file.

If that doesn't work then I'm afraid I'm running out of ideas... Huh
WillyAp
Member
**
Offline Offline

Activity: 686
Merit: 16

Looking for guilt best look first into a mirror


View Profile WWW
March 17, 2023, 04:05:14 PM
 #18

If that doesn't work then I'm afraid I'm running out of ideas... Huh

If that doesn work post your permission sets of the folders/files which cause issues.

Marketing in EN und DE
Lepi (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 5


View Profile
March 17, 2023, 10:24:45 PM
 #19

Being unable to find a favicon file is irrelevant. This is simply the little logo icon that different websites use.

In the absence of any other errors, something is stopping your browser from correctly fetching the balances. Your browser can visit other websites normally? You don't have any firewall or similar running?

The first thing I would try would be to open a terminal in the usual multisig tool directory, and then run the following two commands:
Code:
make clean
make compile

The first will delete the multisig.js file (which is responsible for this look up); the second will recompile it from scratch. This is to rule out any error in the file.

If that doesn't work then I'm afraid I'm running out of ideas... Huh

-Firewall is inactive.
-I am connected to a VPN however.
-Tried both Firefox and Chrome.

After the make clean & make compile command, I did the "python3 -m http.server" again but this time got this error: BrokenPipeError: [Errno 32] Broken pipe

Also Chrome's F12 now shows 165 issues:
-
Quote
Access to XMLHttpRequest at 'https://insight.bitpay.com/api/addr/3CSa...zYGno8MTeLYGM/utxo' from origin 'http://0.0.0.0:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
-
Quote
Failed to load resource: net::ERR_FAILED insight.bitpay.com/a…YGno8MTeLYGM/utxo:1

(Changed the address in the error code just in case it's not safe to share publicly).

The other issues are basically a repeat of the above but with all the other addresses in the list.

Btw, user "HCP" also mentioned something about the "Insight API" missing in this thread: https://bitcointalk.org/index.php?topic=5316286.0

Quote from: WillyAP
If that doesn work post your permission sets of the folders/files which cause issues.
Not sure if ChatGPT explained correctly on how to do this but I typed "ls -l" in the multisig-tool directory and got the following:
Quote
total 572
-rw-rw-r--   1 revived revived   2265 mrt 12 18:12 CONTRIBUTING.md
drwxrwxr-x   2 revived revived   4096 mrt 12 18:12 css
drwxrwxr-x   4 revived revived   4096 mrt 12 19:01 env
-rw-rw-r--   1 revived revived   4610 mrt 12 18:12 index.html
drwxrwxr-x   3 revived revived   4096 mrt 12 18:12 lib
-rw-rw-r--   1 revived revived  11344 mrt 12 18:12 LICENSE
-rw-rw-r--   1 revived revived    428 mrt 12 18:12 Makefile
-rw-rw-r--   1 revived revived 421914 mrt 17 23:00 multisig.js
-rw-rw-r--   1 revived revived    181 mrt 12 18:12 multisig-tool.sublime-project
drwxrwxr-x 142 revived revived   4096 mrt 13 21:17 node_modules
-rw-rw-r--   1 revived revived    704 mrt 12 18:52 package.json
-rw-rw-r--   1 revived revived 100713 mrt 13 21:20 package-lock.json
-rw-rw-r--   1 revived revived   3734 mrt 12 18:12 README.md
ABCbits
Legendary
*
Offline Offline

Activity: 2870
Merit: 7496


Crypto Swap Exchange


View Profile
March 18, 2023, 10:54:13 AM
Merited by o_e_l_e_o (4)
 #20

I did quick testing on Debian 11 and it seems to works. But i can't verify whether it works on next step since i only have 3 xpub generated from https://coinb.in/#newHDaddress. Here are the steps,

1. Check my environment.

Code:
$ node --version
v12.22.12
$ npm --version
7.5.2
$ python3 --version
Python 3.9.2
$ python2 --version
Python 2.7.18

2. Setup and run multisig-tool.

Code:
$ git clone --depth 1 https://github.com/dlajarretie/multisig-tool
Cloning into 'multisig-tool'...
remote: Enumerating objects: 29, done.
remote: Counting objects: 100% (29/29), done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 29 (delta 0), reused 12 (delta 0), pack-reused 0
Receiving objects: 100% (29/29), 109.27 KiB | 34.00 KiB/s, done.
$ cd multisig-tool/
$ npm install

added 149 packages, and audited 150 packages in 1m

9 vulnerabilities (1 moderate, 4 high, 4 critical)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
$ npm install bip38 crypto-browserify --save

added 3 packages, and audited 153 packages in 19s

9 vulnerabilities (1 moderate, 4 high, 4 critical)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
$ ./node_modules/.bin/browserify -r bip38 -s Bip38 > lib/multisig/bip38.js
$ make compile
cd lib/multisig && \
../../node_modules/.bin/browserify -r ./vault -r ./views/addresses_view > ../../multisig.js
$ make run
cd lib/multisig && \
../../node_modules/.bin/browserify -r ./vault -r ./views/addresses_view > ../../multisig.js
python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
...

3. Open on Firefox by typing localhost:8000, enter 3 xpub and click continue. Here's the screenshot some time after i click continue.



Take note i assume it works since,
1. Firefox only show error message about favicon on it's console (F12).
2. I do not see "Failed!" message or each address turning red.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Pages: [1] 2 »  All
  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!