Witam.
Mam problem z logowaniem się do ING bank za pomocą PHP -> zresztą w tym przypadku chodzi tylko o JavaScript.
Otóż zaszyfrowują oni w JS wysyłane dane.
Tutaj jest demo:
https://ssl.bsk.com.pl/mobi/login.html
No jak wpiszę login, następnie wybrane litery z hasła i nacisnę przycisk, to wysyłane są do skryptu
https://ssl.bsk.com.pl/mobi/j_security_check
dane:
j_username:TUTAJNAZWAUZYTKOWNIKA
j_password1:0c**3f50b7c19de6**615b**e47**e0565**82**
j_password2:a991eb732**db2**1c5f90**353bb3fc**adf381
j_password3:d**5b3**ecbeff5***bb146b7**a0afd4b0**ccb
//oczywiscie zamisat gwiazdek za inne znaki alfanumeryczne.
Tutaj kod zapewnie odpowiedzialny za to.
var validChars = "0123456789abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWZYZ";
var passwordChars = new Array();
var passwordFields = new Array();
passwordChars[0] = "x"; passwordChars[1] = "K"; passwordChars[2] = ">"; passwordChars[3] = "W"; passwordChars[4] = "H"; passwordChars[5] = "V"; passwordChars[6] = "ł"; passwordChars[7] = "ł"; passwordChars[8] = "A"; passwordChars[9] = "@"; passwordChars[10] = "H"; passwordChars[11] = "."; passwordChars[12] = "{"; passwordChars[13] = "?"; passwordChars[14] = "T"; passwordChars[15] = "a"; passwordChars[16] = "d"; passwordChars[17] = "g"; passwordChars[18] = "D"; passwordChars[19] = "Y"; passwordChars[20] = "I"; passwordChars[21] = ":"; passwordChars[22] = "["; passwordChars[23] = "-"; passwordChars[24] = "c"; passwordChars[25] = "ł"; passwordChars[26] = "g"; passwordChars[27] = "Ń"; passwordChars[28] = "Z"; passwordChars[29] = "N"; passwordChars[30] = "]"; passwordChars[31] = "a";
function onPassBlur(n, el) {
if( el != null && el.value != null && el.value != "" ) {
passwordChars[n] = el.value;
el.value = validChars.charAt(get_random(validChars.length-1));
return true;
}
}
function generatePass() {
var passValue = "";
for(var i=0;i<passwordChars.length;i++) {
passValue += passwordChars[i];
}
passValue = hex_hmac_sha1("1930588946", passValue);
document.forms['sendForm'].elements["j_password" + new String(1 + get_random(2))].value = passValue;
return true;
}
function initTabs() {
var inputIdx;
for(inputIdx = 1; inputIdx <= 3; inputIdx++)
{
var pass = "";
var i;
for(i = 0; i < 32; i++)
pass += validChars.charAt(get_random(validChars.length-1));
document.forms['sendForm'].elements["j_password" + inputIdx].value = hex_hmac_sha1("1930588946", pass);
}
}
function get_random(max) {
var ranNum= Math.round(Math.random()*max);
return ranNum;
}
function setPasswordFields() {
var index = 0;
for (var i = 0;i<32;i++) {
elName = 'passwd' + i;
var el = findElement(elName);
if (el != null) {
passwordFields[index] = elName;
index++;
}
}
}
window.onload = function() {
initTabs();
setPasswordFields();
}
// ]]>
Zbadałem, że przy naciśnieciu przycisku dalej wykonywana jest funkcja:
function generatePass() {
var passValue = "";
for(var i=0;i<passwordChars.length;i++) {
passValue += passwordChars[i];
}
passValue = hex_hmac_sha1("1930588946", passValue);
document.forms['sendForm'].elements["j_password" + new String(1 + get_random(2))].value = passValue;
return true;
}
Czyli ogolnie mowiąc składa tablice passwordChars do stringa, następnie .... koduje? Korzysta z :
https://ssl.bsk.com.pl/mobi/js/sha1.js <- w tym skrypcie nie ma odwołania do wpisanych danych (chodzi mi o te znaki z hasła)
No to jedziemy dalej:
document.forms['sendForm'].elements["j_password" + new String(1 + get_random(2))].value = passValue;
Losuje od 1-3, zmienia wartość formularza.
Wszystko niby logiczne, ale jak są przekazywane wpisywane dane? Chodzi mi o hasło?