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 (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
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;
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;
Zitat von: betateilchen am 15 Mai 2022, 16:32:04es 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