Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CURL] Logowanie Tmobile Bankowe
Forum PHP.pl > Forum > PHP
hostcom
Witam
Czy ktoś próbował napisać skrypt do pobierania historii z tmobile bankowego?

Wiem że jest tam zastosowane RSA oraz AES... może ktoś to już "ugryzł"?

Wczoraj analizował sposób komunikacji miedzy przeglądarką i serwerem

Otóż tmobile korzysta z modyfikowanej klasy jCryption

https://github.com/madhavvyas/jCryption/blo...ced/encrypt.php

jednak nie mogę znaleść funkcji w php która by zakodowała przyhładowym kluczem publicznych wygenerowany klucz

[data] => Array
(

[e] => 10001
[n] => 83088d951b1d9e122779d680b047dcaeb1633bcc7a7bb0dc7d06706e0a2b47cb8bd48808e092ee82
b3845be7930b16a69bb70083221e1ee38a2143ae56a785f242606acd30fda45a5c301991f4bb48d2b
314b811e06d445c0ec1426b0df36d72a444539422c90b681c0a830915a0549d67340c538b065ae8eb
c1ffdec95a3c97
[maxdigits] => 131
)


  1. $.jCryption.getKeys = function(url, callback) {
  2. var jCryptionKeyPair = function(encryptionExponent, modulus, maxdigits) {
  3. setMaxDigits(parseInt(maxdigits,10));
  4. this.e = biFromHex(encryptionExponent);
  5. this.m = biFromHex(modulus);
  6. this.chunkSize = 2 * biHighIndex(this.m);
  7. this.radix = 16;
  8. this.barrett = new BarrettMu(this.m);
  9. };
  10. /**
  11. * Gets the data from the specified url, and converts it into a RSA keypair
  12. * @param {string} url The URL to contact
  13. * @param {string} data The JSON data
  14. */
  15. $.getJSON(url, function(data) {
  16. var keys = new jCryptionKeyPair(data.e, data.n, data.maxdigits);
  17. if($.isFunction(callback)) {
  18. callback.call(this, keys);
  19. }
  20. });
  21. };


Ktoś mógł by pomóc w przpisaniu js do php?
com
poco chcesz przepisywać js do php? wykorzystaj np ajaxa
hostcom
Raczej w curl się nie da
jackraymund
Wylacz javascript w przegladarce, jeżeli się uda, to zrobisz to też przez curla
com
nie o to chodziło, używasz tego w js wysyłasz requesta, odbierasz te dane z js i robisz curla
hostcom
Cytat(com @ 8.01.2015, 21:59:53 ) *
nie o to chodziło, używasz tego w js wysyłasz requesta, odbierasz te dane z js i robisz curla

Kolego nie da się podstawić danych które je wysyła. ..
1 klucz publiczny zmienia się.
2 js generuje klucz aes
3 js szyfruje klucz aes
4 js wysyła do serwera klucz aes
5 serwer deszyfruje kluczem prywatnym
6 serwer szyfrusze klucz aes w aes
7 serwer zwraca zaszyfrowane klucz aes
8 js dekoduje w aes przy pomocy wygenerowane go klucza
9 js poruwnuje klucze wygenerowany + zwrócony

jeżeli klucze są poprawne to dalsza komunikacja jest szyfrowania w aes
com
no to pobierz wygenerowany klucz z tm, przecież przepisanie do php nie da Ci klucza który wygenerował tm

a jak działa rsa to ja wiem to nie musisz mi tłumaczyć
hostcom
Cytat(com @ 9.01.2015, 10:18:38 ) *
no to pobierz wygenerowany klucz z tm, przecież przepisanie do php nie da Ci klucza który wygenerował tm

a jak działa rsa to ja wiem to nie musisz mi tłumaczyć


Klucz pobieram... ale główne znaczenie ma parametr maxdigits

Bynajmiej po zakodowaniu przez JS wygląda tak:
  1. 171f13ea98730a0c00e3c60b5511eddd7e54173b33a60c8be24ee17c9a320b74b921881d3cd4bcfb
    8918ed20c450d64936e38964f91758a2b4d407dbcdf2a186366c90b84b10371f4dff4ef312ef0911c
    e0863b9630ba32b0c8bf0b887074896aa194ee6e9c25b03b0ea94963c402bd70ea62d9b33fc5904a4
    b8cd5ef7c859fb 23085b10d27693b578999570e1cd10c97d9ca10e59497e2d8230c4ff691c4d1f38a33407a351b947
    7a32ed4778e075090164e2abd73374982970b737fb6dda98c8b38d5cc3fab0cb091dd8fb171308c92
    7c5d6fceef141509016447a8b3db5bc03849d2cd45db077082d5abc79756ca09090a9cdf0f069af47
    e66bec99bca08a


przy użyciu phpseclib tak:

  1. 6d35e74a04e52095310b5e8b5e9ee9b1f33a69c838b5fe65436b1d71108955ca
  2. a93c110d6d2b55e4c060b094c61e610aed96c0d434a5b3a7ea9fa894410a8613
  3. 6c5f23e700ef2e4e14880b2872cf831f93042356e7c8116fb80591400e47a80e
  4. e4ca82a26c6c6aa873548935f38e4d6dedaf08d35a6d0f40bf5365dcc18ddee8


Znalazłem skrypt który uzywa TM
http://ulcms.pl/jc.tgz

JS do zaszyfrowania używa oprócz modułu i wykładnika dodatkowe te maxdigits, a że z js zabardzo nie znam to nie jestem w stanie przeanalizować metody szyfrowania w/w sposób
jackraymund
Tutaj masz całą funkcje
http://wklej.to/SUwne
dodatkowo natknąłem się na oczyszczoną funkcje z callbacków etc.
http://pastebin.com/dzShrgFg (uwazaj bo parametry sa zamienione)
http://wklej.to/yoNwK to będzie nasz serializedForm lub string.
Natomiast keypair z GET'a https://online.t-mobilebankowe.pl/ib/app/jc...ng/getpublickey
potem w var keys = new jCryptionKeyPair(data.e, data.n, data.maxdigits);
itd.
Prześledź sobie całą tą klasę z początku postu, funkcja init, co po kolei się wywołuje.
Tak wygląda główna pętla
  1. $.jCryption.authenticate = function(AESEncryptionKey, publicKeyURL, handshakeURL, success, failure) {
  2. $.jCryption.getKeys(publicKeyURL, function(keys) {
  3. $.jCryption.encryptKey(AESEncryptionKey, keys, function(encryptedKey) {
  4. $.jCryption.handshake(handshakeURL, encryptedKey, function(response) {
  5. if ($.jCryption.challenge(response.challenge, AESEncryptionKey)) {
  6. success.call(this, AESEncryptionKey)
  7. } else {
  8. failure.call(this)
  9. }
  10. })
  11. })
  12. })
  13. };
hostcom
Cytat(jackraymund @ 9.01.2015, 18:51:47 ) *
Tutaj masz całą funkcje
http://wklej.to/SUwne
dodatkowo natknąłem się na oczyszczoną funkcje z callbacków etc.
http://pastebin.com/dzShrgFg (uwazaj bo parametry sa zamienione)
http://wklej.to/yoNwK to będzie nasz serializedForm lub string.
Natomiast keypair z GET'a https://online.t-mobilebankowe.pl/ib/app/jc...ng/getpublickey
potem w var keys = new jCryptionKeyPair(data.e, data.n, data.maxdigits);
itd.
Prześledź sobie całą tą klasę z początku postu, funkcja init, co po kolei się wywołuje.
Tak wygląda główna pętla
  1. $.jCryption.authenticate = function(AESEncryptionKey, publicKeyURL, handshakeURL, success, failure) {
  2. $.jCryption.getKeys(publicKeyURL, function(keys) {
  3. $.jCryption.encryptKey(AESEncryptionKey, keys, function(encryptedKey) {
  4. $.jCryption.handshake(handshakeURL, encryptedKey, function(response) {
  5. if ($.jCryption.challenge(response.challenge, AESEncryptionKey)) {
  6. success.call(this, AESEncryptionKey)
  7. } else {
  8. failure.call(this)
  9. }
  10. })
  11. })
  12. })
  13. };

dzięki kolego, jednak to dalej nie jest funcja w php którą bym zaszyfrował i curlem wysłał.
jackraymund
A analizowałeś ten kod chociaż o którym pisałem?
  1. var hashObj = new jsSHA(seed.toString(), "ASCII");
  2. base.$el.data("key", hashObj.getHash("SHA-512", "HEX"));
  3. return base.getKey()


Wszystkie funkcje masz w sync-login(numer).js, przeżuć sobie go przez http://jsbeautifier.org/ i analizuj
w 1800 lini masz jsSHA
Jak sobie zobaczysz jak ta cała funkcja działa, ta która jest w pierwszym linku mojego pierwszego posta, dowiesz się wszystkiego.
To jest funkcja w js, nie w PHP, także musisz sobie przepisać ją.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.