LINUX.ORG.RU

Авторизация Киевстар

 , ,


0

1

Добрый день. Киевстар с недавнего времени изменил способ авторизации в личный кабинет. Раньше был скрипт на curl для проверки баланса, сейчас не работает именно из-за авторизации. Никто еще не стыкался? Может у кого есть уже рабочий скрипт авторизации?

Вот старый скрипт: curl -1 -ksiL --url "https://my.kyivstar.ua/tbmb/login/perform.do" -o /dev/null --data «user=*********» --data «password=**********» --cookie-jar /root/proverka_balansa/cookie

curl -1 -ksiL --url "https://my.kyivstar.ua/tbmb/hierarchy/main/dashboard/show.do" -o /root/proverka_balansa/ksmain.htm --data «user=*********» --data «password=**********» --cookie /root/proverka_balansa/cookie --cookie-jar /root/proverka_balansa/cookie



Последнее исправление: KOET (всего исправлений: 1)

Я так понял теперь они одноразовые пароли для входа по смс присылают.

Просто введiть номер мобiльного телефону або номер особового рахунку послуги Домашнiй Київстар вище та натискайте «отримати пароль по SMS»
Якщо після входу в систему протягом 10 хвилин ви не виконуєте жодних дій, поточний сеанс буде завершений з метою захисту вашої персональної інформації.

Нужно глянуть время жизни сессионной куки, если она реально продлевается при обращении, то можно что-то придумать.

Smola
()
Ответ на: комментарий от Smola

Там можно получить одноразовый, а можно по старому паролю войти, снизу справа есть надпись «я вже маю пароль». Только сколько всего не пробывал - ничего не смог.

KOET
() автор топика
Ответ на: комментарий от Smola

вводишь номер, оно высвечивает «отримати пароль по смс», а справа чуть ниже обычным текстом «я вже маю пароль»

KOET
() автор топика

1. Заходишь на страницу логина
2. Нажимаешь Ctrl+Shift+I (в хроме)
3. Заполняешь форму
4. Нажимаешь отправить
5. Быстро жмешь Esc
6. Смотришь в списке где ушли твои данные
7. Нажимаешь правой кнопкой Copy as cURL

JN
()
Ответ на: комментарий от JN

Я так уже дней 5 работаю с хромой, пока сессия хромы действительна, то хоть скачать скриптом страничку можно, выхожу в хроме с кабинета и все, приехали. А авторизацию я так сколько не пробывал - пройти не смог.

KOET
() автор топика
Ответ на: комментарий от KOET

У меня нету ссылки «Вхід по особистому паролю». Авторизация-то по паролю проходит? Что пишет если эти же данные curl'ом отправить?

JN
()
Ответ на: комментарий от JN

По личному паролю нормально входит в кабинет. При отправке curl'ом дальше страницы авторизации не пропускает.

KOET
() автор топика
Ответ на: комментарий от JN

//OK[1,2,1,1,[«ua.kyivstar.cas.shared.model.AuthResult/528887914»,«LT-11451-rf9L6xDUlFIH7FVQxZO5p1F5FfKqey-s1n1»],0,7]

KOET
() автор топика
Ответ на: комментарий от JN

Мiй Київстар
Вхід в систему
Під час обробки запиту сталась помилка. Повідомлення з описом помилки відправлено в службу підтримки системи «Мій Київстар». Перепрошуємо за незручності і зробимо все можливе, щоб виправити помилку в найближчий час.
Повернутися на сторінку входу

KOET
() автор топика

Почему у некоторых нет «Вхід по особистому паролю», все дело в том что Вы его не задавали. Нужно зайти в ЛК по паролю с смс, дальше нужно зайти в «Настройки користувача», там выбрать «Редагувати профіль», после того как выберите, прокрутив вниз страницу будет «Редагувати пароль». Именно там Вы и сможете задать стабильный пароль.

KOET
() автор топика
Ответ на: комментарий от JN

Ну немного понял. Вот только не знаю как правильно это сделать, с кого парсить начинать, с какой страницы?

KOET
() автор топика
Ответ на: комментарий от KOET

Привет всем! Тоже борюсь с этой проблемой, вот что пока накопал с помощью HTTPFox:

заходим на страничку https://account.kyivstar.ua/cas/login, вводим логин, после полного ввода логина HTTPFox регистрирует отправку браузером POST запроса на адрес https://account.kyivstar.ua/cas/auth/authSupport.rpc в нем параметры как то странно передаются - я такое первый раз вижу, в POST Data HTTPFox выдает строчку

7|0|6|https://account.kyivstar.ua/cas/auth/|F6A136C7CC1F442D7AC2B3A8D93F065D|ua.kyivstar.cas.shared.rpc.AuthSupportRPCService|getAccountShortDetails|java.lang.String/2004016611|+380671234567|1|2|3|4|1|5|6| Хотя обычно там наборы типа Параметр-Значение, а как эту строчку разбирать я даже непредставляю, пробовал ее напрямую запихивать в CURLOPT_POSTFIELDS, но ничего не получается, сервер возвращает «The call failed on the server; see server log for details», хотя браузеру приходит //OK[4,3,1,2,1,1,0,0,0,1,[«ua.kyivstar.cas.shared.model.AccountDetails/299460615»,«380671234567»,"",«msisdn»],0,7]

Собственно логинизация проходит дальше, при нажатии «вхiд по особистому паролю» и вводе пароля, логин/пароль отправляется на https://account.kyivstar.ua/cas/auth/authSupport.rpc POST запросом с параметрами 7|0|7|https://account.kyivstar.ua/cas/auth/|F6A136C7CC1F442D7AC2B3A8D93F065D|ua.kyivstar.cas.shared.rpc.AuthSupportRPCService|authenticate|java.lang.String/2004016611|380671234567|Password|1|2|3|4|3|5|5|5|6|7|0| ответ: //OK[1,2,1,1,[«ua.kyivstar.cas.shared.model.AuthResult/528887914»,«LT-57076-GCnLD2mwUitTP6IsEUljkztInFpr7a-s1n1»],0,7]

где LT-57076-GCnLD2mwUitTP6IsEUljkztInFpr7a-s1n1 - нужно для дальнейшей работы.

Ujin778
()
Ответ на: комментарий от Ujin778

После идет редирект на https://account.kyivstar.ua/cas/login, там HTTPFox показывает что параметры передаются нормально: execution e4s1 lt LT-195919-u6ARu3rvetEwM5W3wceHVIWyU4Wafl-s1n1 _eventId submit password Password username 380671234567 rememberMe true token LT-57076-GCnLD2mwUitTP6IsEUljkztInFpr7a-s1n1 authenticationType MSISDN_PASSWORD

значение token берется из предыдущего ответа, значение lt где взять пока непонятно, остальные параметры вопросов не вызывают.

Это пока все, непонятно что это за строчка такая с POST параметрами, на этом запнулся пока.

Ujin778
()
Ответ на: комментарий от JN

А если не затруднит, можно поподробней, я с json пробовал по примеру

http://www.lornajane.net/posts/2011/posting-json-data-with-php-curl

Но после например

$data = array(«name» => «Hagrid», «age» => «36»); $data_string = json_encode($data); echo $data_string;

строчка выглядит: {«name»:«Hagrid»,«age»:«36»} Совсем не похоже на то что я выше писал что на сервер уходит.

Ujin778
()
Ответ на: комментарий от Ujin778

Там это дело реализовано с помощью GWT, клиентская часть пишется на java, компилируется в javascript и общается с сервером с помощью удаленного вызова процедур (RPC). Сейчас там передаются пронумерованные данные, схема которых зашита в коде. Код обфусцирован, поэтому проще будет подобрать вручную.

JN
()
Ответ на: комментарий от JN

Звучит как «Ничего не выйдет».

Параметр LT я получаю парсингом на php post формы из ответа https://account.kyivstar.ua/cas/auth Впихиваю туда недостающие поля и получаю нечто такого вида:

array(8) {
  ["execution"]=>
  string(4) "e1s1"
  ["lt"]=>
  string(45) "LT-450371-u4YOhAGAJEOetkldTJCKAzjbfBreaR-s2n1"
  ["_eventId"]=>
  string(6) "submit"
  ["password"]=>
  string(8) "password"
  ["username"]=>
  string(7) "+380671234567"
  ["rememberMe"]=>
  string(4) "true"
  ["token"]=>
  string(0) ""
  ["authenticationType"]=>
  string(16) "ACCOUNT_PASSWORD"
}

Осталось выдрать где то значение [«token»] и послать на нужный URL. У народа уже получалось сделать авторизацию, но там JS.

cdj
()
Ответ на: комментарий от cdj

Товарищ выше же написал:

«значение token берется из предыдущего ответа, значение lt где взять пока непонятно»

JN
()
Ответ на: комментарий от cdj

Всех с прошедшими праздниками!

Вернулся опять к этой проблеме. С lt разобрался, спасибо. Теперь засада с token - как я выше писал браузер его получает после POST запроса на https://account.kyivstar.ua/cas/auth/authSupport.rpc должен придти ответ вида //OK[1,2,1,1,[«ua.kyivstar.cas.shared.model.AuthResult/528887914»,«LT-57076-GCnLD2mwUitTP6IsEUljkztInFpr7a-s1n1»],0,7], из которого и можно получить этот самый token. Вот полностью код который у меня получился:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://account.kyivstar.ua/cas/login");
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
curl_setopt($ch, CURLOPT_COOKIEJAR, "outfile.txt");
$res = curl_exec($ch);
//echo $res;
$lt_value_start_pos = "<input type=\"hidden\" name=\"lt\" value=\"";
$lt_value_end_pos = "\" />";
$pos1 = strpos($res, $lt_value_start_pos);
$pos2 = strpos($res, $lt_value_end_pos, $pos1);
$tmp = $pos1 + strlen($lt_value_start_pos);
$lt_value = substr($res, $tmp, $pos2 - $tmp);
echo "LT - ".$lt_value."<br>";

curl_setopt($ch, CURLOPT_URL, "https://account.kyivstar.ua/cas/auth/authSupport.rpc");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "7|0|7|https://account.kyivstar.ua/cas/auth/|F6A136C7CC1F442D7AC2B3A8D93F065D|ua.kyivstar.cas.shared.rpc.AuthSupportRPCService|authenticate|java.lang.String/2004016611|380671234567|Password|1|2|3|4|3|5|5|5|6|7|0|");
$res = curl_exec($ch);
echo $res;

В ответ получаю The call failed on the server; see server log for details.

Чего ему не нравиться? Выше писали про json, но на json-формат строчка отправляемая на сервер не похожа. Еще у меня подозрение вызывало вот это число в запросе: F6A136C7CC1F442D7AC2B3A8D93F065D. Но попробовав снять лог с нескольких разных компьютеров увидел что оно везде одинаковое.

Ujin778
()
Ответ на: комментарий от cdj

А у кого получалось, если не секрет?

Как я выше писал, token получается из ответа на запрос по адресу https://account.kyivstar.ua/cas/auth/authSupport.rpc, но параметры туда как то хитро передаются, структура не вида параметр-значение, а просто набор значений, отделенных знаком «|». Что это за формат непонятный нигде не нашел про такое информации. Из объяснений JN, понял только что строка формируется JavaScriptom на стороне пользователя, и сервер ее разбирает. Но почему сервер не устраивает та строка что я ему сделал, она вроде же точно такая же как браузер передает. Или ее как то не так надо передавать.

Ujin778
()

Так у меня ничего и не получилось. Думаю, что неправильно я на сервер строчку отправляю, я отправляю через curl_setopt($ch, CURLOPT_POSTFIELDS, «7|0|7|https://account.kyivstar.ua/cas/auth/|F6A136C7CC1F442D7AC2B3A8D93F065D|ua.kyivstar.cas.shared.rpc.AuthSupportRPCService|authenticate|java.lang.String/2004016611|380671234567|Password|1|2|3|4|3|5|5|5|6|7|0|»);

Но скорее всего надо как-то по другому, потому что этот метод рассчитан на обычный пост запрос, а тут совсем не то.

Ujin778
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.