Author

Topic: [Howto] Adressen-Monitoring (Read 336 times)

hero member
Activity: 784
Merit: 544
September 22, 2020, 03:07:45 AM
#8
Warnung: Wer Wallet oder Adressen per Electrum überwacht, deanonymisiert sich gegenüber dem Electrum-Server selbst!!!

Zum Nachrecherchieren hat mich folgender Beitrag gebracht:

https://bitcointalksearch.org/topic/m.55217179

Und folgende Aussage darin:


Quote
[...] Dazu sammeln sie  z.B. auch Daten von Electrum-Wallet anfragen für die sie selber jede Menge Server betreiben [...]

D.h., wer sich mit einem Electrum-Server verbindet und nach einer Balance fragt, ob nun mit oder ohne Privatekeys, muss die entsprechenden Adressen an den Server ausliefern.

https://medium.com/shiftcrypto/use-the-bitbox02-with-electrum-wallet-5088219b8497

Der Server weiss dann, dass sich eine bestimmte IP für bestimmte Adressen interessiert. Die IP selbst ist noch nicht mit einem Namen verknüpft, aber die Gegend, aus welcher die Anfrage kommt kann schon auf der Landkarte eingegrenzt werden. Zusätzlich ändern Standardrouter heutzutage nicht mehr regelmäßig die IP, sodass Angreifer möglicherweise versuchen könnten, diese zu hacken. Oder man kommt anderweitig and die Identität hinter der IP.

Also entweder mit TOR oder VPN oder gar nicht.


siehe auch:

https://bitcointalksearch.org/topic/howto-adressen-monitoring-5202173
yxt
legendary
Activity: 3528
Merit: 1116
December 20, 2019, 08:22:31 AM
#7
@willi9974
Die txt mit den Adressen kann ja einfach auch in electrum importiert werden.
Also warum unterscheidest du die 2 Fälle so?

@trantute2
schöne Anleitung, vielleicht willst du ja noch um eine Telegram Anbindung erweitern
hero member
Activity: 784
Merit: 544
December 10, 2019, 03:19:45 AM
#6
Wie mir gerade zugetragen wurde funktioniert die Bitcoin-Bezahlung bei Lima-City besser als zuvor:

https://www.lima-city.de/

Die Bezahlung läuft über Coinbase und sollte mit jeder Wallet funktionieren. Für den Kauf müßt ihr euch einen Account bei lima-city machen. Das sollte auch anonym gehen, wobei die Angabe einer E-mail-Adresse notwendig ist. Wenn man auf der Seite eingeloggt ist navigiert man dann zu "Kontingente" und kann dort die gewollte Anzahl an SMS kaufen. Nach einer Bestätigung sollten die SMS auch schon zur Verfügung stehen. Die API wird hier erklärt:

https://www.lima-city.de/hilfe/sms-kontingente
hero member
Activity: 784
Merit: 544
November 20, 2019, 03:57:35 PM
#5
Kannst du dem wallet nur die Balance von Adressen abfragen welche du vorher importiert hast, [...]

Ja.

[...] oder kannst auch eine Textdatei mit x tausend Adressen angeben, wo er nach und nach die Adressen abfrägt und die jeweilige Balance ausgibt?

Nein.

Selbst mit einem Fullnode ginge das nicht (so einfach). Eine Wallet trackt nur die Adressen/Privatekeys, welche darin enthalten sind. Dadurch verringert sich der Aufwand, was das Management der Balancen angeht, enorm. Wenn man das hinbekäme, was Du vorschlägst, dann hätte man zuhause seinen eigenen Blockexplorer aufgesetzt. Geht sicherlich, und hat bestimmt schon jemand gemacht, aber das ist alles andere als einfach.
legendary
Activity: 3430
Merit: 2663
Escrow Service
November 20, 2019, 03:17:39 AM
#4
Coole Anleitung, aber mal eine andere Frage.
Kannst du dem wallet nur die Balance von Adressen abfragen welche du vorher importiert hast, oder kannst auch eine Textdatei mit x tausend Adressen angeben, wo er nach und nach die Adressen abfrägt und die jeweilige Balance ausgibt?

Viele Grüße,
Willi
legendary
Activity: 3794
Merit: 2499
November 19, 2019, 09:04:09 AM
#3
Danke für die Anleitung, kleine Anmerkung für alle die es zu viel Arbeit ist, ich (auch etwas Paranoid eventuell) tracke meine Adressen mit Telegram Tracktxbot:

https://bitcointalksearch.org/topic/m.50970942

Quote
Man erhält über den Bot Benachrichtigungen für Transaktionen. Funktioniert mit BTC, BCH, ETH und ERC20 Token.

legendary
Activity: 2405
Merit: 1459
-> morgen, ist heute, schon gestern <-
November 19, 2019, 07:28:45 AM
#2
Schön gemacht bis jetzt, sieht toll aus und ist nützlich.
Als kleine Anregung, wenn man schon einen PI benutzt, dann kann man auch
ein Preiswertes GSM Modem Platinchen vom Chinamann kaufen und eine Prepaid-Sim nehmen
um dann per Script eine SMS zu Versenden.
Das ist evt. günstiger als ein Bezahl Portal zu Nutzen und kann einem noch mehr Infos zukommen lassen
wenn man z.B. noch einige I/Os verknüpft.

hero member
Activity: 784
Merit: 544
November 17, 2019, 07:20:31 AM
#1
Warnung: Wer Wallet oder Adressen per Electrum überwacht, deanonymisiert sich gegenüber dem Electrum-Server selbst!!!

Zum Nachrecherchieren hat mich folgender Beitrag gebracht:

https://bitcointalksearch.org/topic/m.55217179

Und folgende Aussage darin:


Quote
[...] Dazu sammeln sie  z.B. auch Daten von Electrum-Wallet anfragen für die sie selber jede Menge Server betreiben [...]

D.h., wer sich mit einem Electrum-Server verbindet und nach einer Balance fragt, ob nun mit oder ohne Privatekeys, muss die entsprechenden Adressen an den Server ausliefern.

https://medium.com/shiftcrypto/use-the-bitbox02-with-electrum-wallet-5088219b8497

Der Server weiss dann, dass sich eine bestimmte IP für bestimmte Adressen interessiert. Die IP selbst ist noch nicht mit einem Namen verknüpft, aber die Gegend, aus welcher die Anfrage kommt kann schon auf der Landkarte eingegrenzt werden. Zusätzlich ändern Standardrouter heutzutage nicht mehr regelmäßig die IP, sodass Angreifer möglicherweise versuchen könnten, diese zu hacken. Oder man kommt anderweitig and die Identität hinter der IP.

Also entweder mit TOR oder VPN oder gar nicht.




Anbei eine Anleitung für die ganz Paranoiden, wie man die eigenen Coins live trackt und bei Änderungen per SMS benachrichtigt wird. Dieser Thread ist work-in-progress. Ich bitte um Geduld, falls dieser noch unvollständig ist.

Einleitung
Voraussetzungen
Einrichtung

Einleitung

Es gibt imho fünf Methoden für diesen Zweck, denn bekanntlich führen viele Wege nach Rom, welche ihre ureigensten Vor- und Nachteile haben. Zwei wurden hier im Forum schon besprochen (https://bitcointalksearch.org/topic/suche-sms-gateway-welches-sich-mit-bitcoin-aufladen-lasst-3310218):

  • Monitoring des Mempools (https://bitcointalksearch.org/topic/m.42604663):
    • Vorteil: Passiv. Leicht einzurichten. Man benötigt ausser einem Computer, welcher online ist, kaum etwas.
    • Nachteil: Wenn der Server ausfällt, können Änderungen nicht registriert werden, da diese Methode Blockchain-unabhängig ist.
  • Monitoring eines Blockexplorers (https://bitcointalksearch.org/topic/m.36027146):
    • Vorteil: Man überlässt Blockchain und Mempool einem externen Dienstleister.
    • Nachteile:
      • Sehr wartungsintensiv, da Dienstleister das Outputformat jederzeit ändern kann, was Nachbesserungen notwendig macht.
      • Aktiv. Jede Abfrage der Balance ohne die Nutzung von https zeigt dem Internet, dass sich eine IP für eine bestimmte Adresse interessiert. Jede Abfrage der Balance zeigt dem Dienstleister, dass sich eine IP für eine bestimmte Adresse interessiert. Jede Abfrage der Balance via TOR zeigt dem Exitnode, dass sich jemand für eine bestimmte Adresse interessiert.
      • Gefahr, dass die eigene IP beim Dienstleister gesperrt wird, wenn man es mit der Anzahl der Abfragen übertreibt.
      • Eine Menge, möglicherweise unötiges, Rumgeskripte.
  • Monitoring via Fullnode:
    • Vorteil: Passiv. Man hat alle notwendigen Daten lokal vorliegen. Man erweitert zusätzlich das P2P-Bitcoinnetzwerk.
    • Nachteil: Nur für Experten geeignet.
  • Monitoring via Smartphone-App:
    • Vorteil: Ermöglicht jederzeit eine Benachrichtigung.
    • Nachteile: Nutzung einer Drittanbieter-App. Zusätzlich muss man ständig online sein, was im Ausland oder in Funklöchern teuer oder schwierig sein kann.

Ich möchte in diesem Thread eine weitere, fünfte Methode präsentieren, welche zwischen der ersten und dritten Methode angesiedelt ist und welche auf der Electrum-Familie basiert. Die Vorteile sind folgende:
  • Diese Methode ist passiv und gibt praktisch nichts nach aussen hin preis.
  • Die Software selbst ist durchgehend online und beobachtet den Mempool.
  • Man hat, abhänigig von den Adressen von Interesse, eine Light-Version der Blockchain (Blockheaders) lokal vorliegen. Diese wird nach Serverpausen synchronsieren sodass man immer auf dem neusten Stand ist.
  • Wichtig: Es lassen sich Watch-Only-Wallets erzeugen, d.h dass man Adressen in eine Wallet importieren kann, der Privatekey ist nicht notwendig! Man kann also beliebige Adressen beobachten.
  • Die Methode läßt sich praktisch durch copy und paste an andere Kryptowährungen anpassen (vorausgesetzt für diese existiert eine Electrum-Wallet, z.B. BCH, LTC, NMC u.a.).

Warum ich diesen Thread schreibe? Aus Spass an der Freude. Ausserdem möchte ich, dass das in schön dokumentiert ist sodass die entsprechenden Schritte für die Zukunft gesichert sind.

Voraussetzungen

Wir benötigen:
  • (etwas) Linux- und Kommandozeilenerfahrung.
  • Einen Raspberry Pi 4 mit 4 GB, da Electrum auf dem entsprechenden Raspbian out-of-the-box läuft. Ansonsten hat man nur Frickelei.
  • Ein entsprechendes Netzteil, da der Raspi 4 per USB-C versorgt wird, alte Netzteile passen nicht!
  • Eine SD-Karte und hier empfehle ich eine SanDisk Extreme 64GB U3 A2 XCI V30, die es in jedem Mediamarkt oder Saturn gibt. Diese soll relativ gut mit einem Raspberry Pi zusammenspielen (las ich irgendwo, den Link muss ich aber noch raussuchen).
  • Ein SMS-Gateway. Ich würde gerne lima-city.de empfehlen, da diese Seite einst Bitcoin akzeptierte und so eine Bezahlung für ein SMS-Kontingent relativ anonym und sicher ablief. Leider wurde diese Zahlungsmethode dieses Jahr rausgenommen. Ich weiss nicht ob es inzwischen wieder geht. Es gibt auch andere solche Dienstleister, aber dort ist meist nur Kreditkartenzahlung möglich und diese ist inherent unsicher!

Rest, coming soon.

Einrichtung

Vorbereitung SD-Karte

Ich gehe davon aus, dass es sich beim Client-Rechner, also jenem Rechner, vor dem ihr sitzt, um eine Linux-System handelt, welches ist dabei (fast) egal. Die Anleitung basiert auf Ubuntu. Als Nutzername nehme ich heinz an und dass der Ordner /home/heinz/Downloads/raspbian existiert. Mit Windows kenne ich mich leider nicht (mehr) aus. Windows-Nutzer können prinzipiell ein Ubuntu-Livesystem nutzen, müßen dieses aber auch erstmal auf einen USB-Stick bekommen.

Zu Beginn benötigen wir die entsprechende Raspbian-Version (https://www.raspberrypi.org/downloads/raspbian/). Bei jedem Besuch einer Seite, wo ihr Daten runterladet, solltet ihr kurz das Schlosssymbol in der Adressleiste und somit das Zertifikat überprüfen indem ihr draufklickt und euch die entsprechenden Informationen anzeigen lasst. Ich lade Raspbian immer direkt aus dem Ordner runter (https://downloads.raspberrypi.org/raspbian_latest), da man dort auch gleich die entsprechenden Signaturen findet.

Code:
cd /home/heinz/Downloads/raspbian
wget https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-09-30/2019-09-26-raspbian-buster-lite.zip
wget https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-09-30/2019-09-26-raspbian-buster-lite.zip.sig

Wir müssen das zip-Archive vorher auf Authentizität prüfen, dafür benutzte ich folgenden PGP-Schlüssel (bitte prüft den nochmal selbst!):

https://keyserver.ubuntu.com/pks/lookup?search=0x956F460C&fingerprint=on&op=index

Code:
gpg --keyserver keyserver.ubuntu.com --recv 956F460C
gpg --verify 2019-09-26-raspbian-buster-lite.zip.sig 2019-09-26-raspbian-buster-lite.zip

Wenn wir die Meldung ...

Code:
gpg: Signature made Mon 30 Sep 2019 02:43:50 PM CEST using RSA key ID 956F460C
gpg: Good signature from "Raspberry Pi Downloads Signing Key"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 54C3 DD61 0D9D 1B4A F82A  3775 8738 CD6B 956F 460C

... bekommen können wir relativ beruhigt mit der Installation fortfahren. Dazu legen wir nun die SD-Karte ein. Diese muss vorher nicht formatiert werden. Das Device, welches die SD-Karte repräsentiert, hat meist einen komischen Namen wie /dev/mmcblk0. Wenn ihr unsicher seid, dann installiert euch ggparted (sudo apt-get install ggparted; sudo gparted) und guckt, welches Device 64GB Speicher hat (rechts in der oberen Ecke kann man per Dropdown die Devices auswählen).

Nochmals Vorsicht: mmcblk ist ein Beispiel, überprüft das nochmal! Ansonsten überschreibt ihr möglicherweise eine andere SD-Karte, welche in eurem System steckt.

Code:
unzip 2019-09-26-raspbian-buster-lite.zip
sudo dd if=2019-09-26-raspbian-buster-lite.img of=/dev/mmcblk0

Das wars. Die SD-Karte enthält nun die aktuelle Version von Raspbian (wir sind aber noch nicht fertig).

Wir entfernen nun die SD-Karte, nachdem oberes Kommando durchgelaufen ist, und stecken sie wieder rein. Das OS mountet dann automatisch die Partitionen auf der SD-Karte (Ubuntu tut dies unter /media/heinz). Damit Raspbian per ssh erreichbar ist muss die leere Datei "ssh" erstellt werden:

Code:
sudo touch /media/heinz/rootfs/ssh

Zusätzlich sollten wir die Netzwerkkonfiguration von Raspbian anpassen:

Code:
sudo nano /media/heinz/rootfs/etc/network/interfaces

Wir füllen die Datei mit etwas Ähnlichem wie:

Code:
# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.178.101
netmask 255.255.255.0
gateway 192.168.178.1
dns-nameservers 192.168.178.1

Die oberen IP-Adressen hängen davon ab wie euer Heimnetzwerk konfiguriert ist. In oberem Beispiel ist der Raspi nun unter 192.168.178.101 zu erreichen. Die IP für den DNS-Nameserver mag bei euch eine andere sein. Nano kann man per Strg+x verlassen. Das Programm fragt nach ob die Änderungen gespeichert werden sollen.

Der SD-Karte ist nun fertig konfiguriert damit wir auf dem Raspi loslegen können. Dazu unmounten wir die SD-Karte, entfernen sie aus dem Client-Rechner, stecken sie in den Raspi, verbinden den Raspi mit einem Netzwerkkabel, welches mit dem entsprechenden Netzwerk verbunden ist sowie mit dem Netzteil sodass der Raspi booten kann.

Konfiguration des Raspi

Wir verbinden uns mit dem Raspi (Windows-Nutzer können diesen Schritt mit putty realisieren: https://www.putty.org/):

Code:

Das Passwort ist standardmäßig "raspberry". Natürlich müßt ihr 192.168.178.101 durch die von euch gewählte IP austauschen.

Zu Beginn werden wir aus Sicherheitsgründen einen neuen Nutzer mit beliebigen Namen erzeugen (z.B. thorsten), nur noch diesen nutzen und den pi-Nutzer blockieren:

Code:
sudo adduser thorsten

Vergebt ein Passwort und lasst den Rest leer. Zusätzlich muss der neuer Nutzer der Gruppe sudoers hinzugefügt werden, damit er entsprechende Rechte hat:

Code:
sudo adduser thorsten sudo

Jetzt blockieren wir noch den pi-Nutzer:

Code:
sudo usermod -L -e 1 pi

Von nun an kann der pi-Nutzer sich nicht mehr im System anmelden. Wieder freischalten läßt sich der pi-Nutzer durch:

Code:
sudo usermod -U -e 99999 pi

Wichtig: Diese Konfiguration verhindert, bei ausreichend gutem Passwort, dass der Raspi im Betrieb nicht kompromitiert werden kann, vorausgesetzt, dass niemand Zugriff auf die Hardware hat. Kommt jemand an den Raspi, dann kann er den Stecker ziehen, die SD-Karte entfernen und an einem bliebigen Rechner mit SD-Kartenleser die auf der Karte unverschlüsselten Dateien analysieren. Und das sind praktisch alle Dateien. Man kann den Raspi auch dagegen härten, d.h. dass dann alle wichtigen Dateien dort verschlüsselt sind und nur im laufenden Betrieb entschlüsselt vorliegen. Das ist aber nicht das Thema hier. Anleitungen dazu gebe ich ein andermal (ecryptfs, ufw, knockd, google-authenticator).

Nun aus dem Raspi ausloggen:

Code:
exit

Und als neuer Nutzer wieder einloggen:

Code:

Nun machen wir erstmal ein systemweites Update:

Code:
sudo apt-get update
sudo apt-get dist-upgrade

Wer will kann den Raspi über ...

Code:
sudo raspi-config

... weitergehend konfigurieren. Es bietet sich an "Advanced Options" -> "Expand Filesystem" auszuwählen sowie unter "Localisation Options" -> "Change Timezone" die entsprechende Örtlichkeit einzustellen.

Auch sollten wir den Raspi selbst umbenennen, denn wenn zwei oder mehr Rechner mit dem selben Hostnamen im lokalen Netz hängen, dann können diese sich gegenseitig blockieren (geht alternativ auch über raspi-config):

Code:
sudo nano /etc/hosts

Dort nun wo "raspberry" steht einen anderen Namen eintragen und nano mit Strg+x verlassen. Das gleiche machen wir hier:

Code:
sudo nano /etc/hostnames

Danach rebooten:

Code:
sudo shutdown -r now

Der Reboot geht fix, nach ein paar Sekunden können wir uns wieder auf dem Raspi einloggen:

Code:

Jetzt passen wir noch den Swap an, damit wir noch ordentlich Platz haben, falls die 4 GB RAM des Raspis mal nicht ausreichen sollten:

Code:
sudo nano /etc/dphys-swapfile

Dort setzen wir den Auslagerungsspeicher auf 16 GB, wir hams ja:

Code:
CONF_SWAPSIZE=16384

Wir beenden nano via Strg+x und aktivieren den Swap durch:

Code:
sudo dphys-swapfile setup
sudo dphys-swapfile swapon

Am besten rebooten wir nochmal, wobei ich mir nicht sicher bin, ob das notwendig ist aber schaden kann es nicht:

Code:
sudo shutdown -r now

Einrichtung von Electrum

Electrum gibt es hier: https://electrum.org/. Dort prüfen wir erst das Schlosssymbol in der Adressleiste. Dann, unter Downloads, kann man die für verschiedene OS bereitgestellten Varianten runterladen. Sehr schön auf der Seite: Unten werden auch die notwendigen Kommandos für die Installation angegeben.

Wie dort angegeben installieren wir zu Beginn qt5, damit dann später, falls notwendig, auch die GUI funktioniert:

Code:
sudo apt-get install python3-pyqt5

Jetzt erzeugen wir den Download-Ordner, holen uns Electrum, die entsprechenden Signatur sowie den Publickey von Thomas Voegtlin:

Code:
mkdir /home/thorsten/Downloads
cd /home/thorsten/Downloads
wget https://download.electrum.org/3.3.8/Electrum-3.3.8.tar.gz
wget https://download.electrum.org/3.3.8/Electrum-3.3.8.tar.gz.asc
wget https://raw.githubusercontent.com/spesmilo/electrum/master/pubkeys/ThomasV.asc

Wir importieren den Publickey:

Code:
gpg --import ThomasV.asc

Alternativ kann man den Publickey auch von einem Keyserver importieren:

Code:
gpg --keyserver keyserver.ubuntu.com --recv 6694d8de7be8ee5631bed9502bd5824b7f9470e6

Achtung: Überprüft diesen Schritt bewusst doppelt da ihr euch hier fremde Software auf euer System holt!

Wir verifizieren das Archiv:

Code:
gpg --verify Electrum-3.3.8.tar.gz.asc Electrum-3.3.8.tar.gz

Und können nach ...

Code:
gpg: Signature made Thu Jul 11 16:26:15 2019 CEST
gpg:                using RSA key 6694D8DE7BE8EE5631BED9502BD5824B7F9470E6
gpg: Good signature from "Thomas Voegtlin (https://electrum.org) " [unknown]
gpg:                 aka "Thomas Voegtlin " [unknown]
gpg:                 aka "ThomasV " [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 6694 D8DE 7BE8 EE56 31BE  D950 2BD5 824B 7F94 70E6

... relativ beruhigt fortfahren. Jetzt entpacken wir noch Electrum und sind damit mit der Installation schon am Ende angekommen.

Code:
tar -xzvf Electrum-3.3.8.tar.gz

Die Hilfe zum Electrum-Skipt, welches wir benutzen werden, rufen wir wie folgt auf:

Code:
/home/thorsten/Downloads/Electrum-3.3.8/run_electrum -h

Ein bisschen Linux, Bash und Electrum

Wir loggen uns aus und wieder ein, diesmal mit dem "-X" Flag, um per Electrum-GUI eine Watch-Only-Wallet zu erzeugen:

Code:

Wir starten Electrum:

Code:
/home/thorsten/Downloads/Electrum-3.3.8/run_electrum

Und klicken uns durch den Wallet-Wizard: "Auto connect" -> "Next" -> "default_wallet" -> "Next" -> "Import Bitcoin addresses or private keys" -> "Next". In das weiße Editierfeld kopieren wir die Adressen von Interesse, jeweils mit Zeilenumbruch, z.B. drei von diesen seltsamen 8000 BTC-Adressen von denen es seit 2018 so viele gibt, ...

Code:
1MYv4C4hZ7hC5sbHrPkzvmNoozQgnHKeAU
182p5CrqfDxvonznRyi5AUBwsCkDX8eYMe
1LyTftu54VMYCv5pq3S4pMzPRMnsYKTESw

... und drücken "Next". Die Passwortinformationen können wir leer lassen, handelt es sich ja sowieso nur um eine Watch-Only-Wallet: "Next". Beim "Electrum - Enable update check" könnt ihr wählen, was euch besser gefällt. Dann heisst es ein bisschen warten, bis sich die Wallet synchronisiert hat. Nach erfolgreicher Synchronisierung steht vor jeder Transaktion ein grünes Häckchen. Falls der Text "not verified" sich nicht ändert, dann hilft es, die Wallet zu schliessen und neu zu starten. Der Text, welcher auf der Kommandozeile vom Programm ausgegeben wird, kann ignoriert werden.

Wir erzeugen den Ordner "watch.btc", erzeugen dort die Datei "addresses" und kopieren in diese die Adressen von Interesse:

Code:
cd /home/thorsten
mkdir watch.btc
cd watch.btc
nano addresses

Die Datei "addresses" schliessen wir per Strg+x. Dann erzeugen wir das Bash-Skript "watch.sh":

Code:
nano watch.sh

Und füllen dieses mit folgendem Code:

Code:
#!/bin/bash
while true; do
   echo -n "" > output;
   while read address; do
      /home/thorsten/Downloads/Electrum-3.3.8/run_electrum getaddressbalance "$address" >> output;
   done < addresses;

   now=$(date '+%Y-%m-%d %H:%M:%S');
   diff=$(cmp balance output);
   if [[ "$diff" != "" ]]; then
      echo -e "$now\tchange detected";
      epoch=$(date --date="$now" +"%s");
      mv balance balance."$epoch";
      mv output balance;

      ##################
      # do other stuff #
      ##################
   else
      echo -e "$now\tok";
   fi

   sleep 60;
done;

(Alternativ kann man auch den RPC-Befehl getbalance nutzen:

Code:
/home/thorsten/Downloads/Electrum-3.3.8/run_electrum getbalance

Dann bekommt man die Summe der Beträge über alle in der Wallet enthaltenen Adressen. Dafür muss aber die Wallet zu Beginn geladen werden (siehe Cronjob weiter unten).)

Wir speichern das Skript indem wir nano per Strg+x verlassen. Zusätzlich erzeugen wir die Datei "balance":

Code:
echo "blubb" > balance

Zu guter Letzt erzeugt wir einen Cronjob, welcher das Watch-Skript bei jedem Neustart des Raspi startet:

Code:
crontab -e

Beim ersten Aufruf von oberem Kommando muss man einen Editor wählen. Wir wählen wieder nano und fügen dann unten folgende Zeile an:

Code:
@reboot /home/thorsten/Downloads/Electrum-3.3.8/run_electrum daemon start; sleep 180; cd /home/thorsten/watch.btc/; ./watch.sh >> log

(Alternativ: Will man den RPC-Befehl getbalance nutzen muss der Cronjob wie folgt aussehen:

Code:
@reboot /home/thorsten/Downloads/Electrum-3.3.8/run_electrum daemon start; sleep 60; /home/thorsten/Downloads/Electrum-3.3.8/run_electrum daemon load_wallet; sleep 120; cd /home/thorsten/watch.btc/; ./watch.sh >> log
)

Dieses Kommando startet kurz nach einem Reboot den Electrum-Dienst, welcher im Hintergrund läuft. Dann wird drei Minuten gewartet, damit sich Electrum synchronisieren kann. Daraufhin startet unser Watch-Skript über unsere Adressen in der Datei "addresses" zu loopen. Für jede Adresse fragt dieses Skript die aktuelle Balance ab. Das Ergebnis wird in die Datei "output" geschrieben. Wenn alle Adressen abgearbeitet sind wird "output" mit "balance" verglichen. Sind beide Dateien gleich, dann wird in die Datei "log" ein "ok" mit Datum geschrieben. Sind die Dateien unterschiedlich, so wird die alte "balance" Datei mit Unixzeit (https://de.wikipedia.org/wiki/Unixzeit) im Namen gesichert und die aktuelle "output" Datei wird zur "balance" Datei. Der Vorgang wiederholt sich alle 60s.

Nun haben wir einen Server, welcher unsere Adressen von Interesse überwacht. Natürlich ist die in diesem Abschnitt beschriebene Methode um die einzelnen Balances zu prüfen nur einen Methode von vielen. Eine andere Methode ist, dass man den Output von Electrum direkt innerhalb von python analysiert, da dieser ja sowieso im JSON-Format ausgegeben wird. Das ist also reine Geschmackssache.

Anbindung an SMS-Gateway

Wenn ihr einen Account bei einem SMS-Gateway habt (hier beispielhaft für https://www.lima-city.de, da sehr zu empfehlen) und euch ein SMS-Kontingent gekauft habt (mehrere hundert SMS bekommt man für unter 20€), dann fügt unter den auskommentierten Text im watch-Skript Folgendes ein (eurer Kreativität ist da aber keine Grenze gesetzt):

Code:
      ##################
      # do other stuff #
      ##################

      info=$(wget -qO- "https://api.lima-city.de/sms?user_id=&apikey=&text=&number=");

z.B.:

Code:
      ##################
      # do other stuff #
      ##################

      info=$(wget -qO- "https://api.lima-city.de/sms?user_id=123456&apikey=viet2ieteepeuRae0eengeiphaif1diegai4uSh9&text=hallo&number=004917712345678");

Die und den bekommt ihr bei lima-city (siehe auch https://www.lima-city.de/hilfe/sms-kontingente). Die ist die eures Mobiltelefons. Der kann von euch frei gewählt werden. Wichtig: Stellt sicher, dass https genutzt wird und NICHT http!!! Ansonsten wird eure id und euer API-Key im Plaintext im Internet verschickt.
Jump to: