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
Programmierung
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
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
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
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
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
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
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
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 |
import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; import org.junit.jupiter.api.Test; /** * Dubletten Test. * * @author Thomas Wenzlaff * */ public class TestDoppelte { @Test void testDoppelteUndNullEntfernen() { System.out.println("----> Array mit Orten:"); List<String> orte = new ArrayList<>(); orte.add(null); orte.add(null); // doppelter Eintrag orte.add("Hannover"); orte.add("Langenhagen"); orte.add("Bremen"); orte.add("Bremen"); // doppelter Eintrag orte.stream().forEach(ort -> System.out.println(ort)); assertEquals(6, orte.size()); System.out.println("----> Entfernen von Dubletten mit HashSet:"); Set<String> orteSetOhneDublette = new HashSet<>(orte); orteSetOhneDublette.stream().forEach(ort -> System.out.println(ort)); assertEquals(4, orteSetOhneDublette.size()); System.out.println("----> Wieder zurück als Liste ohne die null Werte und anders sortiert:"); List<String> kopie = orteSetOhneDublette.stream().filter(Objects::nonNull).collect(Collectors.toList()); kopie.stream().forEach(ort -> System.out.println(ort)); assertEquals(3, kopie.size()); } } |
Ergebnis: „Java: Array von Dubletten und null entfernen mit HashSet und zurück“ weiterlesen
Wie kann die Performance einer React App. ermittelt werden? Dazu gibt es das „React Developer Tools“ von React. Wenn das im Browser installiert ist:
Es gib dann zwei neue Tabs am Ende: Components „React Developer Profiler im Firefox Browser für Performance Messungen“ weiterlesen
Hier mal ein kleines Beispiel einer React-Klasse, die zu einer Functional Components umgeformt wird:
Was ist anders?
-kein class dafür const
-kein extends React.Component dafür = (props) =>
-keine render Methode
-kein this
Noch ein Beispiel, im Prinzip das gleiche: „Functional Components vs. Class Components in React“ weiterlesen
Eine Suche in Datenbeständen ist keine einfache Sache! Mit Fuse.js ist ein Suche mit Fuzzylogik möglich. Fuse.js ist eine mächtige Lib ohne viele Abhängigkeiten.
Eine suche mit Fuzzylogik ist eine unscharfe Suche und wird z. B. in der Automatisierungstechnik, Medizintechnik, Unterhaltungselektronik, KI, Fahrzeugtechnik und anderen Bereichen der Regelungstechnik verwendet. Zum Beispiel suchen wir nach dem Ort: Hameln und es werden uns auch Ergebnisse aus Hannover angezeigt. Beide beginnen mit Ha.
Wir programmieren mal Beispielsweise eine Arztsuche mit einfache Gui, wie bei Google, mit nur einem Eingabefeld. So soll die Seite aussehen, und ein Eintrag ist auch gleich die Online-Hilfe:
Das Ergebnis, wenn wir z.B. nach Anästhesie suchen sieht dann so aus bei den 5 Beispiel Datensätzen: „Dynamische Fuzzy-Suche mit Fuse.js in Json Daten mit React App TWArztSuche“ weiterlesen
Eine minimale Single Page App (495 Byte) mit React und Babel. Das ganze Projekt ist hier zu finden. Einfach das git Repo in einem leeren Verzeichnis clonen
„Mal was anderes als Fussball: SPA mit React und Babel oder TOP 10 Gründe für Anti- Pattern „Big Ball of Mud““ weiterlesen
Wer noch ein JavaScript CO2-Dashboard für seine CO2 Ampel mit PatternFly und React braucht, kann gerne diesen Code verwenden: „CO2-Dashboard mit JavaScript, PatternFly und React für CO2-Ampel“ weiterlesen
Crypto Workflow Token Simulation mit dem Camunda Modeler Plugin. Hier das Ergebnis als 30 Sekunden Video:
Das BPMN Modell von oben: … „Crypto Workflow Token Simulation mit BPMN und Camunda Modeler Plugin“ weiterlesen
TWHackSSH ist nun auch auf Maven Central erhältlich. Lange dort nichts mehr hochgeladen. Die habe jetzt auch eine schöne Übersichtsseite aller Abhängigkeiten mit Scann und mit E-Mail Benachrichtigung:
Jetzt geht der Download also auch darüber, wer das TWHackSSH haben will, kann über
https://search.maven.org/remotecontent?filepath=de/wenzlaff/twhackssh/de.wenzlaff.twhackssh/1.0.5/
gehen oder von diese Seite das Programm laden … „TWHackSSH 1.0.5 nun auch auf Maven Central“ weiterlesen
SSH Brute-Force mit Java. Gar nicht so schwierig.
Wir lesen eine Passwort- und eine Userdatei ein und machen ein connect zu einem SSH-Server mit jeder Kombination bis wir eine gültige Verbindung gefunden haben. Hier die Architektur inkl. JUnit-Testklassen: … „SSH Brute-Force mit Java, picocli und TWHackSSH“ weiterlesen
Mit automatischer Architektur validierung mit JUnit 5 Annotation @ArchTest von archunit kann leicht die Architektur vorgaben überprüft werden. Aber es kann auch leicht verhindert werden, das man z.B. System.out oder System.err verwendet. Oder das verhindert wird, das das interne Java Logging verwendet wird.
Was für mich auch wichtig ist, das der Logger immer LOG heißt, und nicht log oder logger.
Einfach diese JUnit-Test Klasse in alle Projekte einbinden. „Architektur mit archunit validieren“ weiterlesen
Gerade eben die Java Blockchain erweitert v0.0.3. Wer Lust hat mitzumachen kann gern Merge-Requests einreichen.
Es gibt nun auch einen neuen Node „bip39 wordlist“ für die BIP39 Wortlisten.
Der Beispiel-Flow zum generieren und validieren der BIP39 Wortlisten könnte so aussehen: … „BIP39 Wortlisten als Node für NodeRed“ weiterlesen
Wer Kurse auch im NodeRed-Dashboard anzeigen bzw. umrechnen will, kann diesen Beispiel Flow als Template verwenden.
Die Funktion ist schnell erklärt. Es wird nach der Eingabe des Bitcoin Wert (Achtung, kein Komma, nur den Dezimalpunkt verwenden) der Kurs bei Kraken abgefragt und der aktuelle BTC in Euro umgerechnet. Der Beispiel Button, im Flow, erzeugt z.B. den Wert für 1000 Euro. Kann ja leicht angepasst werden oder auch direkt vom Konto eingspielt werden, wie hier schon mal gezeigt. … „BTC -15,94% wenn das kein Grund für einen BTC to Euro Dashboard mit NodeRed ist“ weiterlesen
Gestern wurde ArchUnit in Version 0.18.0 veröffentlicht.
Wenn das keine Grund ist mal zu zeigen, wie man eine Package-Abhängigkeit überprüfen kann.
Also wir wollen einen Test schreiben, der durchläuft wenn nur aus dem Package blockchain auf das Package be zugegriffen wird. Wie hier im UML Diagramm gezeigt:… „ArchUnit gestern in Version 0.18.0 veröffentlicht oder wie validiere ich die Architektur am Beispiel einer Blockchain“ weiterlesen
In der Pandemie könnte mit diesem Counter am Eingang eines Ladens die Besucher gezählt werden. Auch ein Foto wird jeweils gemacht (Achtung, Datenschutz beachten 😉 ) und die Besucher schön in einem Diagram nach Uhrzeit ausgegeben. Alles wird über einen eigenen Server ausgegeben.
Auf die Straße gerichtet, wird der PKW mit Foto und Geschwindigkeit erfasst. Cool. Und man kann sehen, wieviel Autos so auf der Straße fahren. Alles ohne KI und mit einem Raspberry Pi.
Hier mal das Ergebnis, welches nur die Daten von einem Raum anzeigt. So kann man gut sehen wer wann und wie oft den Raum besucht. Aus Datenschutzgründen ist das Foto nicht „unscharf“ gemacht worden, (sondern die Kamera ist defekt wie weitere Tests zeigten und geht zurück…) und auf den Kopf gestellt, damit man mich da nicht erkennt 😉
Man kann auch in der unteren Zeile sehen, wie schnell ich gegangen bin:
Hier als Diagramm, wie oft der Raum jeweils in einer Stunde/Tag betreten wurde:… „Überwachung und Erkennung mit Raspberry Pi Kamera oder wie zähle ich die Besucher oder PKWs“ weiterlesen