SSH Brute-Force mit Java. Gar nicht so schwierig wie hier beschrieben.
Die neue Version läuft jetzt nur noch mit Java 11. „SSH Brute-Force mit Java, picocli und TWHackSSH jetzt auf Java 11 umgestellt“ weiterlesen
Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, Statistik, Krypto und Blockchain
SSH Brute-Force mit Java. Gar nicht so schwierig wie hier beschrieben.
Die neue Version läuft jetzt nur noch mit Java 11. „SSH Brute-Force mit Java, picocli und TWHackSSH jetzt auf Java 11 umgestellt“ weiterlesen
Es muss ja nicht immer remix sein, um ein Smart-Contract zu compilieren. Es geht auch wie oben dargestellt mit einem Maven-Plugin (oder Gradle) um mit Ethereum-Netzwerk zu interagieren. Also wie können Solidity Smart Contracts kompiliert und dafür eine Java-Wrapper-Klassen dafür generiert werden?
Wir nehmen als Beispiel mein bekannter Smart-Contract Gehirn.sol der den IQ auf der Blockchain festhalten kann und mit Solidity programmiert ist und speichern in in dem src/main/resources Verzeichnis.
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 |
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @title Gehirn von Thomas Wenzlaff * @dev Mein Smart Contract mit solidity zum Speichern von IQ auf der Blockchain */ contract Gehirn { uint256 iq; constructor() public { // Mittelwert des IQ setzen iq = 100; } function setIQ(uint256 neuerIQ) public payable { iq = neuerIQ; } function getIQ() public view returns (uint256) { return iq; } function getBedeutung() public view returns (string memory) { if (iq <= 40) return "Keine Aussagekraft"; if (iq >= 41 && iq <= 70) return "Weit unterdurchschnittlich – Geistige Behinderung"; if (iq >= 71 && iq <= 79) return "unterdurchschnittlich"; if (iq >= 80 && iq <= 89) return "etwas unterdurchschnittlich"; if (iq >= 90 && iq <=109) return "Durchschnitt"; if (iq >= 110 && iq <=119) return "hoch"; if (iq >= 120 && iq <= 129) return "sehr hoch"; if (iq >= 130 && iq <= 159) return "hochbegabt"; if (iq > 160) return "Keine Aussagekraft"; } } |
Das Plugin wird mit mvn web3j:generate-sources gestartet und wie folgt in der pom.xml eingebunden: „Smart-Contract Wrapper für Java mit web3j-maven-plugin erstellen“ weiterlesen
Das Maven Plugin zum ausführen von Linux Befehlen wurde nun auf Java 11 umgestellt und die Version nach Maven Central hochgeladen.
Wie hier beschrieben noch ein Quicktest mit der neuen Version und ein ls:
1 |
mvn de.wenzlaff.command.maven.plugin:de.wenzlaff.command.maven.plugin:0.0.5:info -Dcommand="ls -ll" |
Ergebnis, sieht gut aus: „de.wenzlaff.command.maven.plugin: Neue Version auf Maven Central für Java 11 veröffentlicht und das bei BTC >60k$ (Block 705403)“ weiterlesen
Manchmal hat man in einer Excel-Tabelle eine oder mehrere Spalten mit Internet-Adressen (URLs) deren Gültigkeit man überprüfen will, da viele Adressen sich doch schnell ändern. Dh. ist die Adresse noch erreichbar oder ist eine ungültige Adresse (Broken Links) eingegeben.
So, dann heute mal ein paar updates für den TW Excel Linkchecker. Es läuft nun unter Java 11.
Man bekommt ja beim hochladen von Maven Central einen Report. Die 100% wollte ich mal senken. „Neue Version 0.0.8 auf Maven Central: Internet Adressen bzw. Links in Excel-Dateien überprüfen mit dem de.wenzlaff.linkchecker“ weiterlesen
Glückwunsch an Dr.Kleinhirn.eu für die 1000 Mindmaps. Wenn das kein Grund zum Feiern ist. Mir gefallen sie immer 😉
Auf Maven Central publiziert und das bei diesen Pflegepersonalquotienten in Hannover und umzu …
Web3j ist ein sehr modularer und typsichere Library für Java und Android. Viele Module und Funktionen für das einfache arbeiten mit Smart-Contracts und Wallets auf der Ethereum-Blockchain (ETH), stehen bereit.
Hier nun ein kleines Beispiel, wie mit nur einer Java-Klasse und ein paar Zeilen Code ein eigenes File-Wallet im Json-Format erstellt werden kann. In einem weiteren Beitrag zeige ich dann, wie dieses File-Wallet in MetaMask importiert werden kann.
Folgende Abhängigkeiten sind in der pom.xml einzutragen, Web3j und die „alte“ (alt aber Apache) Json-Lib von Google, obwohl Web3j auch die Jackson Json Lib als transitive Abhängigkeit mitbringt. Es muss ja nicht immer Jackson sein 😉 „Java Ethereum Wallet mit Web3j erstellen“ weiterlesen
Seit zwei Wochen gibt es nun die neue Version vom Camunda Modeller 4.10.0. Wenn das kein Grund für ein Quicktest ist. Wir nehmen diesen Crypto Workflow da BTC >43k$:
Und nun die Token Simulation als Video:
Es scheint noch alles zu laufen. Das ist ua. neu „Quicktest: Camunda Modeller 4.10.0 mit Crypto BPMN Workflow“ weiterlesen
Wer eine lokale Blockhain erstellen will, kann das mit Ganache tun. Ganache ist auch mit den Bezeichnungen Trüffelmasse oder Pariser Creme als hochwertige Sahnecreme aus Kuvertüre und Rahm, die zum Füllen und Überziehen von Gebäck und Süßigkeiten verwendet wird bekannt.
Zurück zur lokalen Ethereum Blockchain. Mit dieser lokalen Blockchain werden die Entwicklungsprozesse sehr schnell. Ganache kommt als Kommandozeile (ganache-cli) und auch als GUI für Windows, Mac und Linux daher.
Was machen wir?
1. Install der lokalen Blockchain Ganache
2. Ganach local Netzwerk in MetaMask anlegen
3. Account in MetaMask anlegen
4. Eine Transaktion mit MetaMask auf lokaler Blockchain durchführen (1 ETH auf ein anderes Konto überweisen)
Nach dem Download und Install des Programms, kann man auf „Quickstart Ethereum“ klicken und man hat eine Blockchain mit 10 Adressen a 100 ETH wie hier zu sehen.
Nun wollen wir die 1. Transaktion auf der localen Blockchain mit MetaMask machen. Wir brauchen dazu die RPC-Server URL: http://127.0.0.1:7545 und die Chain ID: 1337.
Wir klicken in MetaMask auf „Spezieller RPC:
und geben die die URL und die Chain ID ein:
Dann klicken wir auf „Speichern“. „„I Am Not Satoshi Nakamoto“ oder wie kann eine lokale Blockchain erstellt werden und eine Transaktion mit Metamask durchgeführt werden“ weiterlesen
BTC/USTD
Dazu passend mein NodeRed Flow der auf einem Raspberry Pi 4 läuft:
Dazu der Bitcoin Flow (es gehen alle Cryptos) mit NodeRed implementiert. … „NodeRed: Kurze Durchsage der chinesischen Zentralbank: „The People’s Bank of China has declared all cryptocurrency payments illegal““ weiterlesen
„Der Intelligenzquotient (IQ) ist eine durch einen Intelligenztest ermittelte Kenngröße zur Bewertung des intellektuellen Leistungsvermögens im Allgemeinen …“ wie in Wikipedia steht. Der IQ hängt von vielen Faktoren ab, unter anderem vom Alter der Person, Leistung der Testperson und Durchschnittsleistung der anderen Testpersonen. Der durchschnittliche IQ der Bevölkerung wurde auf 100 festgelegt.
Habe vor einigen Tagen eine Smart-Contract mit Solidity geschrieben, so das die IQ Werte in der Blockchain geschrieben und gelesen werden können. Der Smart-Contact für die Ethereum Blockchain heißt „Gehirn“.
Wie kann der Sourcecode eines Smart-Contract verifizert werden? Erkennbar ist es an den grünen Kreis auf den „Contract Tab“:
1. Muss ein API Key auf etherscan.io unter API-Key angelegt werden und in der .env Datei exportiert werden z.B. „Intelligenzquotient (IQ) auf der Blockchain sichern und Smart-Contract verifizieren“ weiterlesen
Heute ist eine neue Version von JUnit 5 veröffentlich worden. Wenn das kein Grund für ein Quicktest ist:
Ja es läuft noch. Mal was anderes, ein Phyton Test für ein Smart-Contract auf der Ethereum-Blockchain:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from brownie import Gehirn, accounts def test_deploy(): account = accounts.load("freeaccount") gehirn = Gehirn.deploy({"from": account}) ini_iq = gehirn.retrieve() expected = 0 assert ini_iq == expected def test_update(): account = accounts.load("freeaccount") gehirn = Gehirn.deploy({"from": account}) expected = 15 ini_iq = gehirn.store(expected, {"from": account}) assert expected == gehirn.retrieve() |
Und hier der dazu passende Smart-Contract mit Solidity: „Quicktest zur heute veröffentlichen neuen JUnit 5.8.1 Version und auch Smart Contract Test mit Solidity auf der Blockchain“ weiterlesen
Saubere Luft ist für die Gesundheit wichtig. Nun hat die WHO nach 15 Jahren neue Leitlinien zur Luftqualität gegeben. Feinstaub und CO2-Ampel ist auf diesem Block schon mehrfach das Thema.
Bei Feinstaub mit maximal 10 Mikrometer (µm) mit aerodynamischem Durchmesser (PM10) empfiehlt die WHO nun 15 statt bisher 20 µg/m3. Der EU-Grenzwert liegt mit 40 µg/m3 deutlich darüber.
Die WHO-Linie für die Langzeitbelastung mit Feinstaub mit aerodynamischem Durchmesser von maximal 2,5 µm (PM2.5) liegt nun bei 5 statt bisher 10 µg/m3. Die EU gibt sich auch hier mit 25 µg/m3 unverkennbar laxer.
Wer die Leitlinien der WHO mit fast 300 Seiten lesen will, findet hier den Link. NodeRed und andere Feinstaubprojekte sind auf dieser Seite für den Raspberry Pi auch zu finden.
Wie Golem eben berichtet, sind Daten von 106 Millionen Thailand-Reisenden geleakt. In einer ungeschützten Datenbank fanden sich die Daten der Thailand-Reisenden aus den letzten zehn Jahren – inklusive Reisepassnummern. Quelle: Golem. Habe auch schon den Misbrauch einiger Daten gewundert und gut das ich einenen neuen Pass habe 😉
Es ist möglich, Ether auf der rinkeby Blockchain zu erhalten. Mit einer Ethereum Faucet können sich User etwas an Kryptowährung besorgen. Für SW-Entwicker ist das wichtig, denn man macht ja nicht viel auf dem Mainnet 😉
Hier mal in 5 Schritten von 0 auf 18,75 Ether (Kurs gerade <3k). Zum Schluss sieht der Kontostand dann so aus:
1. Die ETH Adresse auf die der Betrag gesendet werden soll ermitteln, und in die Zwischenablage kopieren. Dies geht hier …
z.B. diese 0x6f55a676d5862623bd79446133043AEf905718B8
2. Auf Twitter einen Tweet absetzen mit diesem Inhalt: „Ether auf der Ethereum rinkeby Blockchain erhalten da Kurs bei < 3k“ weiterlesen
Heute wollen wir ein Solidity Contract (Smart-Contract) auf der Blockchain mit der Remix-IDE im Browser schreiben. Dafür verwenden wir die Programmiersprache Solidity. Hier ein kleiner Überblick mit einer Mindmap (Danke Dr. Kleinhirn.eu) zu Sprache
Die Online Remix-IDE mit der Doku Remix-IDE-Doku sieht so aus:
Dann legen wir unseren Smart-Contract an, der den IQ mit Gebühren auf der Blockchain speichert und auch lesen kann.
Wir erstellen eine neue Datei Gehirn.sol „Gehirn Smart Contract mit Solidity auf der Ethereum Blockchain compilieren und deployen mit Remix IDE auf Ethereum Virtual Machine (EVM)“ weiterlesen
Millionen von Websites werden mit WordPress betrieben und belegen mit ca. 62% des Marktanteils in der CMS-Welt die Nummer eins. Vor 6 Jahren hatte ich hier schon mal berichtet, wie WPScan mit Kali Linux genutzt werden kann. Dort ist es schon vorinstalliert. Aber man kann es auch auf einem Debian Linux auf einen Raspberry Pi installieren und laufen lassen.
Hier mal ein Beispiel auf einem Pi Zero. Es gibt kein Package für wpscan. Aber es läuft unter Ruby, und das kann man leicht installieren.
Also wer ein WordPress am laufen hat, könnte seine eigene (und nur die!) Installation auf Lücken überprüfen, und nicht nur das. WPScan ist eine kostenlose Software, mit der die sicherheitsrelevanten Probleme auf einer WordPress-Site identifiziert werden können. WPScan kann ua.:
Die Installation kann in ca. 1 Stunde wie folgt durchgeführt werden:
Wer kennt nicht das Problem. Man wartet auf den Eingang einer Zahlung oder auf das neue ABBA Album und schaut mehrfach ob sie/es schon da ist.
Oder wie lautet mein Kontostand?
Oder auch in diesem Fall, gib mir eine Nachricht, oder schalte den Button grün, wenn eine „Buy me a Coffee“ Spende eingegangen ist.
Oder mache das Licht an, wenn eine BTC Zahlung eingegangen ist. Oder für Hochzeit, den QR-Code neben der Kamera aufhängen und bei einzahlung ein Foto auslösen 😉
Oder, oder oder … „I Still Have Faith In You“ …
All das macht dieser kleine Flow. Und warum soll das Dashboard nicht den Kontostand anzeigen?
„All the things I could do
If I had a little money
It’s a rich man’s world
Money, money, money
Must be funny
In the rich man’s world
Money, money, money
Always sunny
In the rich man’s world
Aha“
Die Funktion ist einfach, in dem Funktions-Node die BTC Adresse eingeben. Die wird dann über die Web-API von https://mempool.space/ abgefragt. Ohne Anmeldung und Paswort möglich. Und schon kann man alles schalte was man will in Abhängigkeit des Kontostand! Cool. Bin ja gespannt, wann der obere Button für den Kaffee eine Aktion auslöst.
Das kanns Du leicht über die Buy my a coffee: bitcoin:bc1qj4grttyhk2h5wqask3nku70e3qtycssz5kvw5l tun. … I Still Have Faith In You „Treibt ABBA – „Don’t Shut Me Down“ den BTC Kurs auf über 50 k ?“ weiterlesen
Vor ein paar Tagen ist die neue Version von ArchUnit veröffentlicht worden. Diesmal gab es einen Breaking Change, es wurde die Klasse JavaClassList gelöscht. Es läuft alles wie gehabt:
Nötige Anpassungen in der pom.xml „Kuba erlaubt Kryptowährungen, wenn das kein Grund für ein Quicktest der neuen ArchUnit 0.21.0 ist“ weiterlesen
Nun sind die Anzahl der freien Intensiv-Bette aussagekräftiger als die Inzidenzen. Ldt. Ärzteblatt sind übrigens zumeist von schweren Verläufen und Todesfällen Ungeimpfte betroffen.
Deshalb mal hier ein kleiner Flow, der die Daten bei RKI abfragt und täglich auf ein Handy per Pushover sendet. Die Daten kommen per JSON über die URL https://www.intensivregister.de/api/public/reporting/laendertabelle und liefern z.B. „DIVI-Intensivregister (Behandlungskapazitäten in der Intensivmedizin) per NodeRed automatisch abfragen und an das Handy senden“ weiterlesen
Wie hier schon beschrieben, geht das mit TWEtherScan zum Abfragen per REST-Api von Ethereum Informationen.
Hier die Beispiel Abfrage:
1 2 3 4 5 6 |
[INFO ] 2021-08-19 10:07:29,012 Etherscan.main() - Start TWEtherscan Internet Abfrage ... [INFO ] 2021-08-19 10:07:30,227 Ausgabe.printGasPrice() - Letzter Block Nr.: 13054524 [INFO ] 2021-08-19 10:07:30,228 Ausgabe.printGasPrice() - Gas Preis: 36 Gwei, Propose Gas Preis: 37 Gwei, Fast Gas Preis: 40 Gwei [INFO ] 2021-08-19 10:07:30,792 Ausgabe.printETHPreis() - Kurs für 1 ETH: 3020.09 Dollar [INFO ] 2021-08-19 10:07:31,334 Ausgabe.printAdressBetrag() - Stand: 0.00451771 Ether auf Adresse: 0x829F9e57c29ab683E964c76160B7B0BaB2727dD2 [INFO ] 2021-08-19 10:07:31,895 Ausgabe.printAnzahlTransaktionen() - 1 Transaktion(en) für die Adresse = 0x829F9e57c29ab683E964c76160B7B0BaB2727dD2 |
Und hier der entsprechende Java Code. „Wie können die Anzahl der ETH Transaktionen einer ETH-Adresse per Java REST-API abgefragt werden?“ weiterlesen
Die ETH Kurse bez. Gas Preise können leicht per Java Rest-API erzeugt werden. Auch der Kontostand einer Adresse kann abgefragt werden (default BUY_ME_A_COFFEE). So überwache ich z.B. dauernd die
BUY_ME_A_COFFEE = 0x829F9e57c29ab683E964c76160B7B0BaB2727dD2
via Kommandozeile (und NodeRed) und warte bis jemand da was für Kaffee und Kuchen überweist. Der aktuelle Wert reicht noch nicht ganz für zwei Personen in Hannover 😉 Wer also mal testen will …
Wenn man sich auf etherscan.io angemeldet hat und einen Token hier hinzugefügt hat, kann man leicht die Abfrage machen. Es sind maximal 5 Abfragen pro Sekunde kostenlos möglich:
-k Api-Token
Ausgabe:
1 2 3 4 5 |
[INFO ] 2021-08-14 18:09:44,225 Etherscan.main() - Start Etherscan abfrage ... [INFO ] 2021-08-14 18:09:45,166 Ausgabe.printGasPrice() - Letzter Block Nr.: 13024280 [INFO ] 2021-08-14 18:09:45,167 Ausgabe.printGasPrice() - Gas Preis: 39 Gwei, Propose Gas Preis: 41 Gwei, Fast Gas Preis: 52 Gwei [INFO ] 2021-08-14 18:09:45,720 Ausgabe.printETHPreis() - Kurs für 1 ETH: 3264.33 Dollar [INFO ] 2021-08-14 18:09:46,275 Ausgabe.printAdressBetrag() - Stand: 0.00451771 Ether auf Adresse: 0x829F9e57c29ab683E964c76160B7B0BaB2727dD2 |
Der ganze Beispiel-Code liegt auf GitLab unter TWEtherScan.
Hier der Beispiel Code: „ETH Kurs und Gas Abfrage per Java Rest API via etherscan.io“ weiterlesen
Wenn man eine REST-Api überprüfen will, ob ein Timeout auftritt, kann man die @Timeout Annotation von JUnit 5 verwenden.
Z.B. wenn der REST-Service nicht nach 2 Sekunden (es gehen auch Tage, Stunden, Ms, …) zurückkommt, schlägt der JUnit Test fehl:
@Timeout(value = 2, unit = TimeUnit.SECONDS)
Mit dem TWAirLabs Programm, welches ich hier vorgestellt habe, können alle Flughäfen der Welt abgefragt werden. Dies geht mit dem Aufruf:
-k API-KEY -alle -l LÄNDER_KÜRZEL
Z.B. mal Japan mit seinen 138 Flughäfen:
-k API-KEY -alle -l jp
Ergebnis: „Welche Flughäfen und wieviele gibt es in DE, JP, US, RU …. ?“ weiterlesen
Ab Java 11 gibt es den HTTPClient im JDK der den REST Zugriff vereinfacht. Das ist mit einem Zweizeiler getan:
1 2 3 4 5 |
public static HttpResponse<String> getRequest(String url) throws IOException, InterruptedException { HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).method("GET", HttpRequest.BodyPublishers.noBody()).build(); return HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); } |
Den Response kann man mit dieser Methode auswerten: „Zweizeiler REST HTTPClient am Beispiel von AirLabs für Planespotter“ weiterlesen
Hier hatte ich beschrieben, wie ein 521-Bit private Elliptic Curve Cryptography (ECC) Key erzeugt werden kann. Mit diesem privaten Key können wir auch leicht eine CA-Zertifikat erzeugen. Einfach in dem Verzeichnis mit dem privaten Key ein:
openssl req -new -x509 -days 3650 -extensions v3_ca -key private-key.pem -out ecc-cacert.pem
eingeben und diese Fragen beantworten (oder einfach Return, dann wir der default verwendet).
Zuerst zweimal das gleich gutes Passwort eingeben. Wichtig ist auf jeden Fall der Common Name (e.g. server FQDN or YOUR name) Z.B. www.wenzlaff.de oä. und dann:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:Niedersachsen Locality Name (eg, city) []:Langenhagen Organization Name (eg, company) [Internet Widgits Pty Ltd]:TW-Soft Organizational Unit Name (eg, section) []:TW-Soft CA-Zertifikat Common Name (e.g. server FQDN or YOUR name) []:pi-zero Email Address []:info-anfrage@wenzlaff.de Warning: No -copy_extensions given; ignoring any extensions in the request |
Und schon liegt ein CA-Zertifikat in der Datei ecc-cacert.pem.
Die kann mit cat ecc-cacert.pem angesehen werden: „CA-Zertifikat mit Elliptic Curve Cryptography (ECC) Key auf dem Raspberry Pi für 10 Jahre erzeugen“ weiterlesen
Ab 3 Uhr morgens geht es so langsam los!
Mit
apt list –upgradable
Ausgabe z.B.
Es wird da leider nicht zwischen sicherheits und normalen updates unterschieden.
Ein
apt list
ohne Parameter gibt alle möglichen Packages.
Ein apt list –installed gibt dann alle auf dem Pi installierten Packages. Die kann man evl. in eine Datei schreiben mit
apt list –installed > installierte-packages.txt
Die Warnung die da kommt, kann man ignorieren.
Wenn man nach dem Namen eines Package sucht, einfach den Namen anhängen. Z.b. suchen wir nach vim
apt list vim
Listing… Done
vim/stable 2:8.1.0875-5 armhf
Heute gilt „die Umsetzung von Architekturvorgaben lässt sich testen!“. Und das sogar mit JUnit 5! Cool.
Wenn auch nur eine IllegalArgumentException gefixt wurde, mal gleich auf die aktuelle ArchUnit Version updaten. Ja, es läuft noch alles. „ArchUnit 0.20.1 Quicktest am Beispiel der Blockchain oder “Das ist historisch gewachsen” war gestern“ weiterlesen
Ein 521-Bit private Elliptic Curve Cryptography (ECC) Key mit secp521r1 erzeugen. Kleiner geht auch 😉
Ganz einfach:
openssl ecparam -out private-key.pem -name secp521r1 -genkey
Ausgabe des keys mit cat private-key.pem z.B.: „Bitcoin (XBT) >38k wg. Amazon? – dann mal gleich ein private ECC Key auf dem Pi mit neuem OpenSSL 3.0.0-beta1 generieren“ weiterlesen