[JS] Logowanie do ING Bank

0

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?

1

Elementy input mają atrybut onchange, tj. po każdej zmianie wpisanej wartości wywoływana jest jakaś funkcja, tutaj onPassBlur, która z kolei zapisuje wpisaną wartość do tablicy passwordChars. Dodatkowo wartość w input podmieniana jest na losowy znak, zapewne po to, by nie można było w łatwy sposób odczytać znaków programem do odkrywania gwiazdek, gdy ktoś wpisze hasło i sobie pójdzie ;).

0

dzieki RAV. Nie wiem co mnie przymuliło, że nie zauważyłem zdarzenia onchange :<

0

Witam.

Wiem że temat jest już grubo stary, ale czy ktoś rozwiązał zaistniały tu problem i mógłby mi pomóc?

Czekam na info :)

0

no więc samo przesyłanie wartości już rozkodowałem utknąłem natomiast na innej rzeczy

jak sprawić by funkcja hash_hmac z php działała identycznie jak funkcja hex_hmac_sha1 z javascript?

mam na myśli polskie znaki + ewentualne znaki specjalne

czy ktoś ma jakiś pomysł?

1 użytkowników online, w tym zalogowanych: 0, gości: 1