Russian Qt Forum
Ноябрь 22, 2024, 11:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Что за тип шифрования?  (Прочитано 10003 раз)
Zusykss
Гость
« : Июль 26, 2017, 09:23 »

не могу понять, как расшифровать строку.

1|JTg3JTkyJTdDJTk2dmZxJTk2c2hwWHQlN0IlOEVmdHglOEUlNUIlODQlN0QlN0NXciVBMWElNjA=|23649509   2|JThBJTk1JTdEJTk0dGtvJTk3cWx3WnJ6bCU5QnV2JTkyJTVFJTg2a3olNUN0bF9k|95446977   3|JTg1JTkybyU5N3pvJTgzJTkycWhsWnUlN0YlOTZf|40841102

Я так понимаю, нужно декодировать
JTg3JTkyJTdDJTk2dmZxJTk2c2hwWHQlN0IlOEVmdHglOEUlNUIlODQlN0QlN0NXciVBMWElNjA=

Подскажите кто сталкивался с таким.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Июль 26, 2017, 09:29 »

"JTg3JTkyJTdDJTk2dmZxJTk2c2hwWHQlN0IlOEVmdHglOEUlNUIlODQlN0QlN0NXciVBMWElNjA=" похоже на base64

А при его декодировании получилось: "%87%92%7C%96vfq%96shpXt%7B%8Eftx%8E%5B%84%7D%7CWr%A1a%60"

Получившаяся строка похожа на "URL encoding": https://en.wikipedia.org/wiki/Percent-encoding
Попытался декодировать ее, но получилось не очень: "\x87\x92|\x96vfq\x96shpXt{\x8eftx\x8e[\x84}|Wr\xa1a`"


Откуда у вас та строчка? Случаем не с какого-нибудь сайта с видео?
« Последнее редактирование: Июль 26, 2017, 09:38 от gil9red » Записан

Zusykss
Гость
« Ответ #2 : Июль 26, 2017, 10:10 »


Откуда у вас та строчка? Случаем не с какого-нибудь сайта с видео?


Это я пытаюсь расскодировать телефон, с сайта https://www.doska.ru/
Я после ввода капчи на снифере вижу ответ от сервера, такие строки, тоже перепробовал кучу вариантов декодирования...
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Июль 26, 2017, 10:15 »

Я вечером посмотрю на тот сайт, интересно стало Улыбающийся
Расшифровка значит происходит в скриптах сайта, на клиенте, т.е. в браузере

Можно бы посмотреть через инспектора какие там  скрипты и куда попадают эти зашифрованные данные
кст, а по той строке пришло 3 телефона?

Насчет инспектора в браузере и поиск в скриптах я как то подробно описывал на стеке
« Последнее редактирование: Июль 26, 2017, 10:24 от gil9red » Записан

Zusykss
Гость
« Ответ #4 : Июль 26, 2017, 10:22 »

Я вечером посмотрю на тот сайт, интересно стало Улыбающийся
Расшифровка значит происходит в скриптах сайта, на клиенте, т.е. в браузере

Можно бы посмотреть через инспектора какие там  скрипты и куда попадают эти зашифрованные данные
кст, а по той строке пришло 3 телефона?
Веселый
Вообще на сайте их 2 было, вот сейчас отправил запрос на получение 1 телефона а пришло в ответ:
1|JTg5eXYlOTZ5Z3QlOTRxanlfdCU3RmglQTBydiU5MVglOEMlN0QlN0ZYdmlfYw==|69654722   2|JTg0JTkycSU5NnJqJTdEJThFeWdsJTVDdHclOTFZ|24476830   3|JTg0JTkxayU5MHpuJTgwJThGc2drVm4lN0YlOTUlNUM=|21724214

Я подумываю, что телефон находится в коде странице, а это просто запутывание... Непонимающий
« Последнее редактирование: Июль 26, 2017, 10:45 от Zusykss » Записан
Zusykss
Гость
« Ответ #5 : Июль 26, 2017, 10:54 »

Насчет инспектора в браузере и поиск в скриптах я как то подробно описывал на стеке

Почитаю обязательно ...
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #6 : Июль 26, 2017, 19:06 »

Ну, у меня 2 новости, хорошая и плохая:
Хорошая: я разобрался в их коде и как они шифруют все это
Плохая: написал это на питоне и не буду переписывать после

Пример:
Код
Python
def _ph_dec(g, r, k):
   from base64 import b64decode
   decode_base64 = b64decode(g).decode('utf-8')
 
   import re
   g = re.sub(r'%([a-fA-F0-9]{2})', lambda m: chr(int(m.group(1), 16)), decode_base64)
 
   n = len(r)
   d = len(g)
   c = ''
   f = 0
 
   while f < d:
       q = g[f: f + 1]
       p = r[f % n: f % n + 1]
 
       if k == 1:
           q = ord(q[0]) - ord(p[0])
       else:
           if k == 2:
               q = ord(q[0]) - ord(p[0]) + 14
           else:
               q = ord(q[0]) ^ ord(p[0])
 
       c = c + chr(q)
       f += 1
 
   return c
 
 
def gpzd(data, key):
   key = int(key)
 
   key = key * 6 - 47289 + 517
   return _ph_dec(data, str(key), 2)
 
 
def get_phone(cmd):
   cmd = cmd.split('\t')
   for i in cmd:
       data = i.split('|')
 
       b = gpzd(data[1], data[2])
       phone = _ph_dec(b, 'K0dbVwzGrpLa-wRs2', 2)
       print(phone)
 
   print()
 
 
cmd = '1|JTg0JTkxbyU5NnVqJTdDJThGc2drWnR6JTkxWA==|22481814 2|JTg1JTk3cCU5NHZscyU5NHloeVlyJTdCJTk0aXIlN0UlOEUlNjAlODQlOTElN0MlNUR1aWclNjA=|31950540 3|JTg1JTk0cCU5NnVmJTg0JTk2dWhuJTVCdHolOEQlNjA=|44314626'
get_phone(cmd)
 
 
cmd = '1|JTg3JTkyJTdDJTk2dmZxJTk2c2hwWHQlN0IlOEVmdHglOEUlNUIlODQlN0QlN0NXciVBMWElNjA=|23649509 2|JThBJTk1JTdEJTk0dGtvJTk3cWx3WnJ6bCU5QnV2JTkyJTVFJTg2a3olNUN0bF9k|95446977 3|JTg1JTkybyU5N3pvJTgzJTkycWhsWnUlN0YlOTZf|40841102'
get_phone(cmd)
 

Консоль:
Цитировать
-00-00
11-822-14
-00-00

94-711-03
54-829-39
-00-00



А теперь как так вышло:

Самое интересное на сайте находится по ссылке: https://i.doska.ru/w_inc/js/main.mobile.ru.doska.js?v=400 (или https://i.doska.ru/w_inc/js/main.ru.doska.js?v=400)
Там куча обфусцированного кода (ссылка на читаемый код https://pastebin.com/0HAYPHzT)

Для обработки строк вида "JTg3JTkyJTdDJTk2dmZxJTk2c2hwWHQlN0IlOEVmdHglOEUlNUIlODQlN0QlN0NXciVBMWElNjA=|23649509" вам нужно будет найти там функцию gpzd, но эта функция спрятана в этом куске кода:
Код
Javascript
eval(function (n, b, r, f, g, q) {
 g = function (d) {
   return d.toString(36)
 };
 if (!''.replace(/^/, String)) {
   while (r--) {
     q[r.toString(b)] = f[r] || r.toString(b)
   }
   f = [
     function (c) {
       return q[c]
     }
   ];
   g = function () {
     return '\\w+'
   };
   r = 1
 }
 while (r--) {
   if (f[r]) {
     n = n.replace(new RegExp('\\b' + g(r) + '\\b', 'g'), f[r])
   }
 }
 return n
}('4 7(1,0){0=0*6-3+5;9 8(1,b a(0),2)}', 12, 12, 'key|data||47289|function|517||gpzd|_ph_dec|return|String|new'.split('|'), 0, {
}));
 

Я понял что тут ее спрятали и пытался понять что же здесь творится, в итоге открыл инспектора браузера и выполнил в консоли эту функцию, добавив перед "return n" команду "console.log(n)" и получил строку "function gpzd(data,key){key=key*6-47289+517;return _ph_dec(data,new String(key),2)}"

После в том же файле нашел функцию _ph_dec и переписал ее

В моем варианте код внутри функции get_phone это в js функция_send_phone_ajax, в которой было:
Код
Javascript
   cmd = b.responseText;
   if (cmd) {
     cmd = cmd.split('\t');
     if (cmd[0] == 'w' && cmd[1]) {
       _alert(JS_GLOBAL_DATA['w' + cmd[1]]);
       return
     } else {
       if (cmd[0] == 'phone_code') {
         show_phone_code_form(0, cmd[1]);
         return
       } else {
         if (cmd[0] == 'show_phone_code_form') {
           show_phone_code_form(1, cmd[1])
         }
       }
     }
     for (i in cmd) {
       data = cmd[i].split('|');
       print_phone(gpzd(data[1], data[2]), data[0], MOBILE)
     }
     _show_phone(2)
   }
 

Видно знакомые split'ы? Улыбающийся

После нашел функцию print_phone:
Код
Javascript
function print_phone(c, g) {
 var f;
 if (!c || !(f = el('ph_td_' + g))) {
   return
 }
 var d = p2 = _js_decode(c);
 if (MOBILE) {
   var b = el('ptd2_' + g);
   if (b) {
     b = b.innerHTML;
     b = b.split('>');
     b = b[1];
     b = b.split('<');
     b = b[0];
     b = b.replace('(', '');
     b = b.replace(')', '');
     p2 = d.replace('-', '');
     p2 = p2.replace('-', '');
     p2 = p2.replace('-', '');
     p2 = b + '' + p2
   }
   f.innerHTML = '<a href="tel:' + p2 + '">' + d + '</a>'
 } else {
   f.innerHTML = d
 }
 f.style.visibility = 'visible'
}
 

В ней больше всего заинтересовала функция _js_decode, кст, второй параметр print_phone это числа от 1, 2, 3 в тех закодированных кусках
Код
Javascript
function _js_decode(b) {
 return _ph_dec(b, 'K0dbVwzGrpLa-wRs2', 2)
}


Кст, если заинтересовало как после расшифровки того куска текста и получении 3 телефонов скрипт узнает какой номер заполнить.
Когда внутри _send_phone_ajax скрипт получает команды, прогоняет их через gpzd и начинает вызывать print_phone, то в print_phone передаются номера, которое в el('ph_td_' + g) используются для поиска элементов с id=ph_td_1, id=ph_td_2, id=ph_td_2. И если какой-то из элементов нашелся, то в него через f.innerHTML прописывается номер.


Еще заметил что для объявлений с одним телефоном почему-то обычно вторая команда имеет номер телефона, а также что на странице элементы с номером имеют следующее отношение:
#ph_td_1 -> "Телефон"
#ph_td_2 -> "Тел. моб."

А т.к. обычно указывают номер в "Тел. моб.", то и получаются команды вида ["-00-00", "11-822-14", "-00-00"] Улыбающийся




Немного сумбурно написал, т.к. после работы сразу засел за это и порядком устал и заколебался Улыбающийся
doska.ru хорошо защитили номера, во-первых, запутали их очень хорошо, во вторых нужно капчу отправить чтобы их получить

Если будут вопросы, задавайте, только не просите код за вас написать Улыбающийся
« Последнее редактирование: Июль 26, 2017, 20:29 от gil9red » Записан

Zusykss
Гость
« Ответ #7 : Июль 26, 2017, 21:49 »

Благодарю, за подробное описание) буду завтра решать всю эту кашу)
Записан
Zusykss
Гость
« Ответ #8 : Август 01, 2017, 14:12 »

а что вы можете посоветовать с таким вариатом
http://evende.ua/obyavlenie-nikopol-dnepropetrovskaya-obl/yaponskiy-khin-vyazka-ksu-fci-MTc1NjQw.html

Я открыл в инспекторе, и вижу эти номера, захожу на страницу и не вижу, как так? Они что находятся на отдельной странице, не могу понять...

и если интересно самый тяжелый для меня пример рисуют телефон по пикселям

https://autodmir.ru/offers/volkswagen/passat/32282309/
Нужно отсылать ajax запрос
В ответ приходит:
<div class="dm-figure-container">
    <div class='dm-figure'>+</div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 1px 1px 0 0;'></div><div class='dm-figure-box2' style='border-width: 0 1px 0 0;'></div></div><div class='dm-figure'>(</div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 1px;'></div><div class='dm-figure-box2' style='border-width: 0 1px 1px 0;'></div></div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 1px 1px 1px 0;'></div><div class='dm-figure-box2' style='border-width: 0 0 1px 1px;'></div></div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 1px 0 0 1px;'></div><div class='dm-figure-box2' style='border-width: 1px;'></div></div><div class='dm-figure'>)</div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 0 1px 0 1px;'></div><div class='dm-figure-box2' style='border-width: 1px 1px 0 0;'></div></div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 1px 1px 1px 0;'></div><div class='dm-figure-box2' style='border-width: 0 0 1px 1px;'></div></div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 1px 0 0 1px;'></div><div class='dm-figure-box2' style='border-width: 1px;'></div></div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 1px 1px 1px 0;'></div><div class='dm-figure-box2' style='border-width: 0 0 1px 1px;'></div></div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 0 1px 0 0;'></div><div class='dm-figure-box2' style='border-width: 0 1px 0 0;'></div></div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 1px;'></div><div class='dm-figure-box2' style='border-width: 0 1px 1px 0;'></div></div><div class='dm-figure'><div class='dm-figure-box1' style='border-width: 1px;'></div><div class='dm-figure-box2' style='border-width: 0 1px 1px 0;'></div></div>
</div>

И я вот думаю как его рассшифровать после получения пикселей?))
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #9 : Август 01, 2017, 16:26 »

а что вы можете посоветовать с таким вариатом
http://evende.ua/obyavlenie-nikopol-dnepropetrovskaya-obl/yaponskiy-khin-vyazka-ksu-fci-MTc1NjQw.html

Я открыл в инспекторе, и вижу эти номера, захожу на страницу и не вижу, как так? Они что находятся на отдельной странице, не могу понять...

Конечно, раз запроса не было, ищите на самой странице или в загружаемых скриптах. Вот что в увидел в каком-то из скриптов того сайта:
Код
Javascript
// Расшифровка телефонов -----------------------------------------------
$(".info_block span[for]").before(function() {
var ok = $(this).closest('.goode').length,
num = evCore.fn.base.dec(ok ? $(this).html() : $('.goode span[for]').html());
num = ('0'+num).substr(-10,10);
if(ok) this.innerHTML = num.replace(/(\d{3})(\d{3})(\d{2})(\d{2})/,'($1) $2 $3 $4');
num = num.match(/\d/);
return "<span class='tel38'>"+(num && num[0] == 9 ? "+7" : "+38")+"</span>";
});
 


Цитировать
И я вот думаю как его рассшифровать после получения пикселей?))
Когда я писал библиотеку для написания парсеров и по ней разные парсеры, то для авито писал парсер картинки с номером телефона (в той ссылке он есть), правда уже потом я случайно узнал, что если зайти в мобильную версию авито, то с сервера буду приходить не картинки с телефоном, а такой конкретный текст -- чтобы можно было с телефона тыкнуть на номер и позвонить
Записан

Zusykss
Гость
« Ответ #10 : Август 01, 2017, 17:05 »


Когда я писал библиотеку для написания парсеров и по ней разные парсеры, то для авито писал парсер картинки с номером телефона (в той ссылке он есть), правда уже потом я случайно узнал, что если зайти в мобильную версию авито, то с сервера буду приходить не картинки с телефоном, а такой конкретный текст -- чтобы можно было с телефона тыкнуть на номер и позвонить
[/quote]

Я когда с этим столкнулся, через мобильную версию делал...
Записан
Zusykss
Гость
« Ответ #11 : Август 01, 2017, 17:19 »

Подскажи, как через инспектор можно просматривать как в дебагере?
Я пытаюсь найти это место в странице и не могу, пытаюсь через инспектор, не могу понять как отловить событие нажатия по кнопке... Непонимающий
« Последнее редактирование: Август 01, 2017, 17:54 от Zusykss » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #12 : Август 01, 2017, 18:13 »

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

хз, я смотрел у элементов их класс или id и искал их на страницу или в скриптах Улыбающийся
так то неплохо было узнать как событие клика ловить, расскажете если узнаете? Улыбающийся
Записан

Zusykss
Гость
« Ответ #13 : Август 01, 2017, 18:28 »

Я что-то найти не могу.
Да я разобрался с дебагером вот скрин http://cdn1.savepice.ru/uploads/2017/8/1/90e5d80dd499292eff525a57742d2381-full.png, и если надо статья, там в конце статьи про дебагер написано

https://learn.javascript.ru/debugging-chrome
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #14 : Август 01, 2017, 18:49 »

Я что-то найти не могу.


Я через Firefox смотрю -- мне удобнее Улыбающийся


UPD.
Посмотрел статью, это хорошо, но немного другое хотелось -- отловить какой код и где выполняется при клике Улыбающийся
« Последнее редактирование: Август 01, 2017, 18:55 от gil9red » Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.111 секунд. Запросов: 23.