Notes |
|
(0000019)
|
Christian
|
2014-01-14 14:23
(edited on: 2014-01-14 14:41) |
|
HI,
da klappt ein convert von einem character set nicht.
QUELLCODE:
///////////
std::string FritzClient::calculateLoginResponse(std::string challenge) {
std::string challengePwd = challenge + '-' + gConfig->getPassword();
// the box needs an md5 sum of the string "challenge-password"
// to make things worse, it needs this in UTF-16LE character set
// last but not least, for "compatibility" reasons (*LOL*) we have to replace
// every char > "0xFF 0x00" with "0x2e 0x00"
convert::CharsetConverter conv("", "UTF-16LE");
char challengePwdConv[challengePwd.length()*2];
memcpy(challengePwdConv, conv.convert(challengePwd).c_str(), challengePwd.length()*2);
for (size_t pos=1; pos < challengePwd.length()*2; pos+= 2)
if (challengePwdConv[pos] != 0x00) {
challengePwdConv[pos] = 0x00;
challengePwdConv[pos-1] = 0x2e;
}
unsigned char hash[16];
gcry_md_hash_buffer(GCRY_MD_MD5, hash, (const char*)challengePwdConv, challengePwd.length()*2);
std::stringstream response;
response << challenge << '-';
for (size_t pos=0; pos < 16; pos++)
response << std::hex << std::setfill('0') << std::setw(2) << (unsigned int)hash[pos];
return response.str();
}
\\\\\\\\\\\\\
bedeutet für mich er kann das PW nicht in UTF16LE convertieren über iconv.
Am mittwoch kann ich wieder intensiver schauen
|
|
|
|
so hier liegt der Hund begraben:
////////////
std::string CharsetConverter::getDefaultCharset() {
if (setlocale(LC_CTYPE, ""))
return nl_langinfo(CODESET);
char *langPtr = getenv("LANG");
if (langPtr) {
std::string lang(langPtr);
size_t pos = lang.find('.');
if (pos == std::string::npos)
return lang;
return lang.substr(pos+1);
}
return "UTF-8";
}
//////////
was haben wir in den variablen?
LC_CTYPE=?
LANG=? |
|
|
(0000021)
|
P3f
|
2014-01-14 17:22
|
|
Hallo Christian,
ich habe mal auf der MLD-Konsole die gewünschte Eingabe gemacht:
MLD> locale -m
locale: cannot read character map directory `/usr/share/i18n/charmaps': No such file or directory
MLD>
Sollte die charmaps in dem Verzeichnis liegen? |
|
|
|
Mach mal "env" und schau nach den Variablen |
|
|
(0000024)
|
Christian
|
2014-01-15 11:10
(edited on: 2014-01-15 11:22) |
|
ein ls von /usr/lib/i386-linux-gnu/gconv/ bitte
und
bitte das binary aus der Develumgebung (iconv) mit auf die MLD kopieren und dies testen:
The values permitted for --from-code and --to-code can be listed by the
iconv --list command, and all combinations of the listed values are
supported.
iconv --list
iconv muss hier etwas ausspucken wie UTF16 .... wenn die Datei UTF16.so hier /usr/lib/i386-linux-gnu/gconv/ fehlt könnten wir den übeltäter haben
|
|
|
(0000026)
|
P3f
|
2014-01-15 19:49
|
|
Hi,
nachdem ich die UTF-16.so Datei mit von der Devel auf die MLD kopiert habe, funktioniert es.....
Super, werde nun das Addon anpassen. Dann sind wir wieder aktuell mit der AVM-Fritzbox bzw. der fritzbox Plugin.
Gut das Du es gefunden hast....
Pit |
|
|
(0000027)
|
P3f
|
2014-01-15 19:49
|
|
Christian, hat das Problem gefunden. Addon wird aktualisiert. |
|
|
(0000028)
|
P3f
|
2014-01-15 19:50
|
|
Funktionstest auf 2 MLD 3.0.3 ist erfolgreich.... |
|