Autor Thema: [Gelöst] AES CBC Verschlüsselung (Sunseeker SK-Robot Cloud Passwort)  (Gelesen 1228 mal)

Offline Markus M.

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2986
  • Dringenden Angelegenheiten bitte per Email
Hi zusammen,

hat hier zufällig jemand Erfahrung mit AES CBC Verschlüsselung?
Der Aldi/Scheppach/Practixx/Sunseeker Mähroboter aus diesem Jahr nutzt das für den Login.

Ich habe folgenden funktionierenden CryptoJS Code durch Reverse-Engineering und Ausprobieren rausbekommen:

encryptAES = (text) => {
    var key = CryptoJS.enc.Latin1.parse('pigxpigxpigxpigx');
    var iv = key;
    var encrypted = CryptoJS.AES.encrypt(text, key, {
      iv: iv,
      padding: CryptoJS.pad.ZeroPadding,
      mode: CryptoJS.mode.CBC
  }).toString();
    return encrypted;
  };

Wenn man da zum Beispiel 'password' reinsteckt, muss 'ZR4+2y45jidwSlOhS4pTnw==' rauskommen.
Erfolgreich getestet via https://stackblitz.com/edit/cryptojs-aes-encrypt-decrypt?file=index.js

Schafft es jemand, das in Perl nachzubauen?
Ich bekomme es leider nicht auf die Reihe :(


Lösung siehe unten

Viele Grüße, Markus
« Letzte Änderung: 14 Mai 2022, 14:35:16 von Markus M. »
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Offline Markus M.

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2986
  • Dringenden Angelegenheiten bitte per Email
Antw:AES CBC Verschlüsselung - ich bekomm's in Perl nicht hin :(
« Antwort #1 am: 14 Mai 2022, 14:31:21 »
Immer wenn man gerade dabei ist aufzugeben ;D

Für die Nachwelt dokumentiert:
# pigx4_AES_CBC_encode.pl
use strict;
use warnings;
require Crypt::CBC;
use MIME::Base64;

my $text="password";

my $cipher = Crypt::CBC->new(
{
    'key'         => 'pigxpigxpigxpigx',
    'cipher'      => 'Rijndael',
    'iv'          => pack("H*","70696778706967787069677870696778"),
    'literal_key' => 1,
    'padding'     => 'null',
    'header'      => 'none',
    keysize       => 128 / 8
});
my $encoded = encode_base64($cipher->encrypt($text));

print $text."\n";
print $encoded;

# password
# ZR4+2y45jidwSlOhS4pTnw==

exit;
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18526
es geht sogar noch etwas generischer:

use strict;
use warnings;
use Crypt::CBC;
use String::HexConvert 'ascii_to_hex';
use MIME::Base64;

my $text = "password";
my $key  = "pigxpigxpigxpigx";

my $cipher = Crypt::CBC->new(
{
    'key'         => $key,
    'cipher'      => 'Rijndael',
    'iv'          => pack("H*",ascii_to_hex($key)),
    'literal_key' => 1,
    'padding'     => 'null',
    'header'      => 'none',
    keysize       => 128 / 8
});
my $encoded = encode_base64($cipher->encrypt($text));

print $text."\n";
print $encoded;

# password
# ZR4+2y45jidwSlOhS4pTnw==

exit;
-----------------------
Möchte man beruflich "etwas mit Menschen" machen, ohne etwas mit deren Dummheit zu tun haben zu müssen,
bleibt eigentlich nur der Beruf des Bestatters übrig.
-----------------------
Lesen gefährdet die Unwissenheit!
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Markus M.

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2986
  • Dringenden Angelegenheiten bitte per Email
es geht sogar noch etwas generischer
Auf das ascii_to_hex bin ich nicht gekommen bzw. hatte an der Stelle wohl keinen Bock mehr, danke.
Der Key ändert sich aber eh nicht, den findet man witzigerweise sogar im Netz - stand wohl so in irgendeinem chinesischen Howto ;D
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0