Zurück zur Startseite

SMS-Decodierung in MikroTik: PDU, Nachrichtenverkettung für Entwickler

Der Artikel erklärt, wie man SMS in MikroTik RouterOS verarbeitet, einschließlich Datenextraktion über PDU, Decodierung verschiedener Textcodierungen und Verkettung von Multipart-Nachrichten. Das Material ist für Entwickler gedacht, die Android-Apps für Überwachung und Automatisierung erstellen.

So dekodiert man SMS in MikroTik: Vollständige PDU- und Verkettungsanalyse
Advertisement 728x90

SMS auf MikroTik entschlüsseln: PDU parsen und lange Nachrichten zusammenfügen

Das Empfangen und Verarbeiten von SMS über MikroTik RouterOS ermöglicht leistungsstarke Überwachungs- und Automatisierungsfunktionen. Dieser Artikel taucht ein in die Extraktion von Nachrichten mit einem E-Mail-Skript, das Decodieren von PDU für eine präzise Textdarstellung und das Zusammenfügen mehrteiliger SMS. Er ist speziell für Android-App-Entwickler gedacht, die eine solide technische Umsetzung suchen.

SMS-Daten aus MikroTik extrahieren

Ab RouterOS 7.15 haben Sie vollen Zugriff auf SMS-Details, einschließlich PDU (Protocol Data Unit), über den Befehl /tool/sms/inbox/print detail. PDU enthält alle Metadaten und den codierten Nachrichten-Text. Für Automatisierungen empfehle ich die direkte API-Integration mit der mikrotik-java-Bibliothek oder das Abrufen der Daten per E-Mail mit einem benutzerdefinierten Skript.

Das Skript formatiert jede SMS als JSON-String und versendet sie an Ihre angegebene Adresse. Hier ein Beispiel:

Google AdInline article slot
{"phone":"+79011234567","timestamp":"2026-03-09 21:30:51+03:00","message":"some text","pdu":"07919761980644F0040B919720481784F50000623090120315211BF377BB0CA297F17410FDFE06DDDF72F21C34AFC3E16F391D","source":"usb2,0","type":"class-0"}

Ihre App parst dann dieses JSON und erstellt Sms-Objekte für die Weiterverarbeitung.

PDU-Struktur und erstes Parsen

PDU ist ein hexadezimaler String, der Service-Felder und Benutzerdaten enthält. Das Decodieren beginnt mit der Umwandlung des HEX-Strings in ein Byte-Array – nach Entfernen nicht-hexadezimaler Zeichen und Sicherstellung einer geraden Länge.

Wichtige Schritte beim initialen PDU-Parsen:

Google AdInline article slot
  • SMSC (Service Center Address): Erstes Byte gibt die Länge der SMSC-Adresse an.
  • Erstes Oktett: Legt den PDU-Typ fest, inklusive UDHI-Flag (User Data Header) für mehrteilige Nachrichten.
  • Absenderadresse: Telefonnummer des Senders mit Längen- und Formatangaben.
  • PID (Protocol Identifier): Meist 0x00 für Standard-SMS.
  • DCS (Data Coding Scheme): Entscheidendes Feld, das die Textcodierung vorgibt (7-Bit, 8-Bit oder UCS2).
  • SCTS (Service Centre Time Stamp): Zeitstempel des Empfangs.
  • UDL (User Data Length): Länge der Benutzerdaten, interpretiert je nach Codierung.

Mehrteilige Nachrichten und Codierungen handhaben

Wenn das Erste Oktett das UDHI-Flag gesetzt hat (Bit 0x40), handelt es sich um einen Teil einer langen Nachricht. Das löst einen User Data Header (UDH) aus, der Details zur Zusammenfügung enthält: Nachrichten-ID, Gesamtanzahl Teile und Sequenznummer.

UDH-Verarbeitungsalgorithmus:

  • Headerlänge und Typ (8-Bit oder 16-Bit-Referenz) ermitteln.
  • Teilenfolgennummer für die Zusammenfügung extrahieren.
  • Datenindex und Textlänge je nach Codierung anpassen.

Bei 7-Bit-Codierung nimmt UDH eine feste Anzahl von Septetten ein, die übersprungen werden müssen. Nutzen Sie diese Formel:

Google AdInline article slot
private static int getUdhSeptetsCount(int udhLen) {
    return (udhLen * 8 + 6) / 7;
}

Bei UCS2 und 8-Bit einfach den Header von der Gesamtdatenlänge abziehen.

Nachrichten-Text decodieren

Der letzte Schritt: Bytes mit Hilfe von DCS in lesbaren Text umwandeln. Wichtigste Codierungen und Behandlung:

  • UCS2 (UTF-16BE): Ausgelöst durch DCS-Bits 2–3 als 10xx. Decodieren mit StandardCharsets.UTF_16BE.
  • 8-Bit-Daten: Entspricht DCS 01xx, für Binärdaten oder alternative Codierungen.
  • 7-Bit-GSM: Standard für Latein- und Basissymbole; benötigt einen eigenen Septett-zu-Byte-Unpacker.

Nach dem Decodieren können Sie den Text in Ihrer App anzeigen oder in Ereignisbenachrichtigungen und Logik einfließen lassen.

Wichtige Erkenntnisse

  • RouterOS 7.15+ stellt PDU für volle SMS-Kontrolle bereit.
  • Mehrteilige Nachrichten erfordern UDH-Behandlung für korrekte Zusammenfügung.
  • DCS-Feld bestimmt Codierung und Decodierungsmethode.
  • E-Mail-Skript-Automatisierung vereinfacht Integration externer Systeme.
  • Saubere HEX-String-Reinigung und Grenzprüfungen vermeiden Parse-Fehler.

— Editorial Team

Advertisement 728x90

Weiterlesen