Java-Bibliothek für das Minecraft-Protokoll

Wenn sich der Minecraft-Client mit dem entsprechenden Server verbindet, so kommunizieren diese über ein festgelegtes Protokoll. Mit einer eigenen Implementation dieses Protokolls ist es möglich sich mit einem Minecraft-Server zu verbinden und entsprechende Aktionen durchzuführen. Zum Beispiel könnte diese Möglichkeit genutzt werden um einen Bot für Minecraft zu schreiben. Eine solche Implementation des Minecraft-Protokolls ist die Java-Bibliothek MCProtocolLib von Steven Smith.

Central City auf meinem eigenen Minecraft-Server

Ein minimales Beispiel, für den Login auf dem Server (basierend auf einem Unit-Test der Bibliothek), mit besagter Bibliothek könnte dabei wie folgt aussehen:

public class SimpleBot {

    private static final String HOST = "example.org";
    private static final int PORT = 25565;
    private static final Proxy PROXY = Proxy.NO_PROXY;
    private static final Proxy AUTH_PROXY = Proxy.NO_PROXY;
    private static final String USERNAME = "user@example.org;
    private static final String PASSWORD = "password";

    public static void main(String[] args) throws FileNotFoundException, RequestException {

        MinecraftProtocol protocol = new MinecraftProtocol(USERNAME, PASSWORD);
        Client client = new Client(HOST, PORT, protocol, new TcpSessionFactory(PROXY));
        client.getSession().setFlag(MinecraftConstants.AUTH_PROXY_KEY, AUTH_PROXY);

        client.getSession().addListener(new SessionAdapter() {
            @Override
            public void packetReceived(PacketReceivedEvent event) {
                if(event.getPacket() instanceof ServerJoinGamePacket) {
                    event.getSession().send(new ClientChatPacket("Hello, World!"));
                } else if(event.getPacket() instanceof ServerChatPacket) {
                    Message message = event.getPacket().getMessage();
                    System.out.println("Received Message: " + message.getFullText());
                    if(message instanceof TranslationMessage) {
                        System.out.println("Received Translation Components: " + Arrays.toString(((TranslationMessage) message).getTranslationParams()));
                    }

                    event.getSession().disconnect("Finished");
                }
            }

            @Override
            public void disconnected(DisconnectedEvent event) {
                System.out.println("Disconnected: " + Message.fromString(event.getReason()).getFullText());
                if(event.getCause() != null) {
                    event.getCause().printStackTrace();
                }
            }
        });

        client.getSession().connect();
    }
}

In diesem Beispiel wird sich mit dem Server verbunden und nach erfolgreicher Verbindung eine Chatnachricht gesendet. Danach loggt sich der Bot wieder aus. Der Quelltext der Bibliothek ist auf GitHub zu finden. Das Projekt ist unter der MIT-Lizenz lizenziert und damit freie Software.

Tasten bei der Nutzung von NoMachine durchreichen

Wenn die Remote-Desktop-Lösung NoMachine genutzt wird um z.B. von einem Windows-Rechner auf einen macOS-Rechner zuzugreifen, so kann es passieren das nicht alle Tasten und Tastenkombinationen korrekt zum macOS-Rechner transferiert werden. Wird z.B. die Windows-Taste und die Taste C gedrückt, so wird das auf dem macOS-Rechner nicht als Befehl zum Kopieren verstanden. Stattdessen öffnet sich das Startmenü der Windows-Installation.

Mit der entsprechenden Einstellung werden die Tasten durchgereicht

Damit alle Tasten an den macOS-Rechner durchgereicht werden, müssen die Einstellungen von NoMachine auf dem Windows-Rechner angepasst werden. Dort findet sich unter Eingabe der Punkt Tastatureingabe erfassen. Ist dieser aktiv, wird die Tastatur an das NoMachine-Fenster gebunden, so das die gedrückten Tasten schlussendlich beim macOS-Rechner landen und nicht vom Windows-Rechner ausgewertet werden. Trotz der Einstellungen werden Tastenkombinationen leider nicht immer zuverlässig erkannt; in den meisten Fällen funktioniert das Ganze aber.

Speedtest unter Ubuntu auf der Konsole

Für den Test der Geschwindigkeit der eigenen Anbindung an das Internet, gibt es seit Jahren den Speedtest von Ookla. Dieser kann nicht nur im Browser, sondern auch in der Konsole unter Ubuntu genutzt werden. Nach der Installation mittels:

apt install speedtest-cli

kann der Dienst über die Kommandozeile genutzt werden:

speedtest-cli

Anschließend startet der Test der Anbindung und das entsprechende Ergebnis wird dargestellt:

Retrieving speedtest.net configuration…
Testing from Deutsche Telekom (XXX.XXX.XXX.XXX)…
Retrieving speedtest.net server list…
Selecting best server based on ping…
Hosted by SMSnet (Szczecin) [85.48 km]: 24.498 ms
Testing download speed……………………………………………………………………..
Download: 160.21 Mbit/s
Testing upload speed…………………………………………………………………………………………
Upload: 121.56 Mbit/s

Im Gegensatz zur Webseite kommt die Version für die Kommandozeile ohne Werbung aus. Das Projekt für die Kommandzeilen-Version befindet sich auf GitHub. Es ist unter der Apache-Lizenz in Version 2 lizenziert und somit freie Software.

Theme und Plugins einer WordPress-Installation ermitteln

WordPress ist einer der meistgenutzten Content-Management-Systeme unserer Zeit. Wenn WordPress für die eigenen Webseiten und Projekte genutzt wird, kann es manchmal von Interesse sein herauszufinden, welche Themes und Plugins andere WordPress-Seiten nutzen. Mit Hilfe des WP-ThemeDetector ist genau so etwas möglich.

Neben dem Theme können auch genutzte Plugins ermittelt werden

Nach der Eingabe der gewünschten Ziel-URL, versucht der WP-ThemeDetector zu ermitteln, welches Theme und welche Plugins auf der Seite verwendet werden. Für das Theme werden die Informationen aus der style.css-Datei des Themes extrahiert. Bei Plugins werden deren Spuren im Quelltext ausgewertet. Dies führt bei den Plugins dazu das nicht alle Plugins ermittelt werden können, da manche Plugins nur im Backend wirken oder keine größeren Spuren im Quelltext der Seite hinterlassen. Der WP-ThemeDetector ist unter wpthemedetector.com zu finden.

Wireless Geographic Logging Engine

Bei der Wireless Geographic Logging Engine, kurz WiGLE, handelt es sich um eine Datenbank in welcher WLAN-Netzwerke aufgezeichnet werden. Neben der Position und dem Namen werden anderen Dinge wie die genutzte Verschlüsslung hinterlegt. Mittlerweile sind in der Datenbank über 530 Millionen Netzwerke aufgeführt. Neben dem Fokus auf WLAN, werden ebenfalls Bluetooth-Geräte in der Datenbank aufgeführt.

Die Webseite des Projektes

Eigene Netzwerke können mithilfe der WiGLE-Android-App hinzugefügt werden.

Wigle Wifi Wardriving
Preis: Kostenlos

Für iOS existiert keine WiGLE-App. Allerdings gibt es noch weitere Möglichkeiten Daten zur Datenbank beizutragen. Die Daten selber sind dabei leider nicht unter einer freien Lizenz lizenziert. Zu finden ist das Projekt unter wigle.net.