Ab FritzBox
OS >= 7.24 hat sich der Login geändert, da kommt dann eine andere Challenge zurück.
Man muss dann ein neues Response erzeugen.
Das habe ich damals nur mit einer alten IPWorks Encrypt Version hinbekommen, da würde dir die geänderte Datei nichts bringen.
Vielleicht kennt ja einer eine freie Kommponente, mit der man das auch lösen kann.
Delphi-Quellcode:
ipcPBKDFHash1 := TipcPBKDF.Create(nil);
ipcPBKDFHash2 := TipcPBKDF.Create(nil);
try
Result := '';
fChallenge := fSession.Challenge;
if not fChallenge.Trim.IsEmpty then
begin
ipcPBKDFHash1.KeyLength := 256;
ipcPBKDFHash1.Algorithm := pbHMACSHA256;
ipcPBKDFHash1.UseHex := True;
ipcPBKDFHash2.KeyLength := 256;
ipcPBKDFHash2.Algorithm := pbHMACSHA256;
ipcPBKDFHash2.UseHex := True;
ipcPBKDFHash1.Iterations := StrToIntDef(fChallenge.Split(['$'])[1], 10000);
ipcPBKDFHash1.SaltB := HexStringToByteArray(fChallenge.Split(['$'])[2]);
ipcPBKDFHash1.Password := fPassword;
ipcPBKDFHash1.CreateKey;
ipcPBKDFHash2.Iterations := StrToIntDef(fChallenge.Split(['$'])[3], 1000);
ipcPBKDFHash2.SaltB := HexStringToByteArray(fChallenge.Split(['$'])[4]);
ipcPBKDFHash2.PasswordB := HexStringToByteArray(ipcPBKDFHash1.Key.ToLower);
ipcPBKDFHash2.CreateKey;
Result := fChallenge.Split(['$'])[4] + '$' + ipcPBKDFHash2.Key.ToLower;
end;
finally
ipcPBKDFHash1.Free;
ipcPBKDFHash2.Free;
end;