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



У Viber есть одна интересная фича: синхронизация начинается с момента установки. То есть если вы установили Viber на PC в 10.00, то сообщения, отправленные и полученные в 9.58 в истории вы не увидите. Зато все последующие, вне зависимости от того, запущена была программа или нет, при запуске подхватятся автоматически.



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

Ну ладно, попробуем другой способ — полный перенос программы. Для тех, кто не знаком с Viber для Windows, расскажу, что сам себя и всю информацию он хранит в личной папке пользователя. Для Windows 7 это %USERPROFILE%\AppData\. В подпапке Local хранится сама программа, а в Roaming — то, что нас более всего интересует, волшебная папка с номером телефона. Ещё, конечно, не лишним будет упомянуть о папке ViberDownloads в Documents, которая является кладезью для любителей украсть провокационные фото. Что ж, условия были практически идеальные — на старом и новом компьютерах была установлена Win7 x64, имя пользователя и доменное имя на обоих PC было одинаковым. Пробуем просто перенести и вуаля — получаем при запуске следующее сообщение:



Результат меня удивил — историю на фоне я таки увидел. При нажатии кнопки «Продолжить» проходит новый процесс регистрации, при котором, конечно же, всё стирается. Я решил копать в этом направлении дальше.



В Roaming в папке с номером телефона я нашёл 2 файла *.db и решил подсунуть только их. Результат тот же. А по отдельности?



Вуаля! С viber.db прокатило! Но, правда, пришлось предварительно пройти регистрацию.

Итак, для переноса истории сообщений требуется:

  1. Предварительно скопировать файл %USERPROFILE%\AppData\Roaming\ViberPC\%номер_телефона%\viber.db
  2. Пройти регистрацию на новом компьютере
  3. Перенести наш файл viber.db в %USERPROFILE%\AppData\Roaming\ViberPC\%номер_телефона%\ на новом PC

Но на этом я не остановился. А что, если попробовать забрать файл viber.db с другого номера? И…



Заработало. Выходит, я могу прочитать сообщения пользователя, имея доступ к его профилю. Отправлять от его имени не смогу, как и читать сообщения, пришедшие/отправленные уже после копирования файла другого пользователя. Радоваться мне от этого или грустить, я не решил. Но зато решил уведомить об этом службку поддержки Viber. Три тщетных попытки и месяц ожидания ответа — не то, что я ждал от довольно крупной компании.

Если на Хабре есть представители компании, я бы хотел, чтобы они ответили на вопрос: это баг или фича?

P.S.: Первый запрос в службу поддержки был отправлен 30 декабря прошедшего года. 24 января (!) мне, наконец, ответили и попросили расписать ситуацию подробнее. Справедливости ради, я смог это сделать только 1 февраля. Но с тех пор ни слуху, ни духу, поэтому с чистой совестью публикую этот материал.

Комментарии (52)


  1. k12th
    08.02.2016 13:06
    +4

    если вы установили Viber на PC в 10.00, то сообщения, отправленные и полученные в 9.58 в истории вы не увидите</blockquote
    историю нельзя восстановить

    Чудесный мессенджер, ничего не скажешь.

    Люся, где мессенджеры, где история? У нас же все это было в великолепном джаббере с сотнями клиентов на любой вкус и с сотнями же серверов, почему гики променяли это все на какие-то убогие скайпы-вайберы?


    1. Cheater
      08.02.2016 14:39
      +5

      Я сам категорически против всей этой всеобщей любви к проприетарным мессенджерам, но к сожалению сообщество jabber/xmpp само виновато в сложившейся ситуации. На дворе 2016 год, а в мире XMPP до сих пор не осилили кроссплатформенную аудио- и видеосвязь. Покажите хоть 1 работающий кроссплатформенный клиент (или хотя бы связку клиентов) для *nix, win, mac, android, ios — чтобы я мог позвонить с линуксового лэптопа на iphone собеседника и наоборот, с андроидного планшета на win машину, и т.д. С текстовыми сообщениями хоть слава богу всё хорошо, десятки клиентов под все платформы на любой вкус, но это ничто по сравнению с тем же скайпом, на который кликаешь кнопку установки под любой ОС и через 3 минуты можешь звонить собеседнику опять же на любое устройство с любой ОС. Это я ещё не говорю про внутренние проблемы формата XMPP.


    1. kAIST
      08.02.2016 15:32
      +5

      почему гики променяли это все на какие-то убогие скайпы-вайберы?

      Это не гики променяли, а обычные пользователи. А гикам приходится подстраиваться.


      1. k12th
        08.02.2016 15:36
        -3

        Боюсь, что гики. Подсчитайте количество постов и комментариев на хабре с содержанием «уииии, стикеры ^_^»:)


        1. inkvizitor68sl
          08.02.2016 16:17
          +4

          Гики всё ещё сидят в irc, xmpp и аське. А хабр заполонили как раз таки «обычные пользователи».


          1. k12th
            08.02.2016 16:18

            А в аське еще кто-то сидит?


            1. inkvizitor68sl
              08.02.2016 16:19

              Почти все те же лица. Отвалилось может процентов 20 контактов.


              1. k12th
                08.02.2016 16:20
                +2

                Ничего себе. Вспомнить, что ли, пароль…


    1. Nagg
      08.02.2016 16:33
      -1

      >> У нас же все это было в великолепном джаббере с сотнями клиентов на любой вкус
      А можно мне хоть один из этих клиентов под Windows чтобы поддерживал MUC и хай-дпи экран и не выглядил как нечто ущербное из 90ых (ткаббер, пидгин, квип, пси не подходят под эти требования). И под iOS с MUC тоже пожалуйста.


      1. k12th
        08.02.2016 16:41

        Джаббер сдох задолго появления хайдпи под виндой. Я же говорю — профукали все полимеры.


  1. Gray_Wolf
    08.02.2016 13:10

    Три тщетных попытки и месяц ожидания ответа — не то, что я ждал от довольно крупной компании.

    Это вы с IBM видимо не общались. Российский офис отправляет текст по тикету на L3, где он и пропадает на пару недель.

    это баг или фича?

    Т.к. Viber не позиционируется как защищённое средство связи то это фича. Как и у кучи других программ. В том-же MS Outlook история по умолчанию не шифровалась в старых версиях.(как обстоит дело сейчас не знаю)


    1. Dreyk
      09.02.2016 12:31

      ага, а когда я у них спрашивал, почему бы не добавить поддержку прокси в PC-клиенте, они мне ответили, что это очень несекурно, мои разговоры тогда могут слушать, а переписку читать


  1. archerz
    08.02.2016 13:11
    +4

    viber.db — по сути ничем не защищенная sqlite база. Видимо по этому и нет никакой привязки в программе к номеру телефона под которым вы её открыли, так как базу можно открыть в любом sqlite просмотрщике.


    1. redmanmale
      08.02.2016 14:06
      +2

      Как у скайпа main.db, например.


    1. wrewolf
      08.02.2016 16:20

      так родной клиент самый удобный просмоторщик.


  1. isotoxin
    08.02.2016 13:25
    +6

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

    Справедливости ради, придумать защиту от этого довольно сложно. Точнее, все решения можно поделить на три группы:
    1. С привязкой к железу/ос без шифрования
    2. С привязкой к железу/ос с шифрованием
    3. С шифрованием паролем

    У всех способов есть недостатки, и весьма существенные:
    1 Вообще не решает проблему. Зная алгоритм привязки, всегда можно данные прочитать.
    2 Большая вероятность потерять все данные при смене параметров привязки (например, привязавшись к mac адресу сетевой карты, вы теряете профиль, если эта сетевая карта у вас сгорит)
    3 Требует от пользователя ввода пароля, что может быть неудобным.

    PS. В Isotoxin'е я использовал 3-й вариант (опционально)


    1. xhumanoid
      08.02.2016 14:40

      третий вариант не сильно решает проблему:
      1) есть 2 компа и история синкается
      2) на одном из них поменяли пароль на вайбер
      3) на втором уже этим паролем не прочитать сообщения

      поэтому придется выбирать одно из 2х:
      1) на историю делаем еще один пароль именно для шифрования истории
      2) храним ключ шифрования на сервере и после логина высылаем его на клиент

      как делать правильно лично я признаюсь не знаю


      1. Temmokan
        08.02.2016 15:35
        -1

        3. Ключ для шифрования истории пользователь создаёт сам, желательно — на этапе установки. Желательно сразу же нарисовать сто окон, в каждом из которых потребовать сохранить ключ где-нибудь в надёжном месте и тут же проверить, в действии. После этого ключ нигде не хранить — сама идея его хранения вместе с зашифрованными данными выглядит очень странно («ключ под ковриком»).

        Потерял ключ — сам себе злобный Буратино. Может, немного жестковато, но как минимум просмотр установленной программы и анализ созданных ею файлов не поможет злоумышленнику прочесть чужую историю.


        1. xhumanoid
          08.02.2016 15:56
          +1

          а вот теперь расширьте это на:
          1) у меня есть компьютер и телефон
          2) ноуты я периодически меняю
          3) телефоны бывают меняются еще чаще

          как это все ДОСТУПНО объяснить рядовому пользователю например того же viber?
          да он пошлет всех в известном направлении еще на этапе установки, так как каждое лишнее действие на этапе установки-настройки это потерянная аудитория.

          поэтому есть масса людей которым плевать на их приватность (соцсети как пример), а уж если тебе так дорога приватность, то ты настроишь нормальные права доступа к папкам, все это запихаешь на шифрованный раздел, ну и конечно просто не будешь пользоваться этими мессенджерами которые всю историю хранят в открытом виде на серверах компании

          p.s. кстати, я что-то не уловил часть: как нам читать наши же сообщения, если ключ где-то далеко, ну или ключ шифровать текущим паролем и сохранить рядом, но тогда остается вопрос что если у тебя украли пароль, то из старых баз вытянут твой ключ?


          1. Temmokan
            08.02.2016 16:01

            Безопасность и удобство не уживаются.

            Хотите, чтобы регистрировался человек, которому забить на безопасность рядовой пользователь — сделайте пометку «Advanced...» для тех, кому не всё равно. Кому всё равно — пусть жмёт на «Next», «Next»… и так далее до полного счастья. А я вот выберу режим максимальной паранойи, чтобы никакие ключи не хранились на вашем сервисе. Ибо нефиг.

            Поскольку помимо того, что я сам настрою всё по-человечески, есть ещё уязвимость by design: если сервис при любых обстоятельствах может выслать ключ шифрования почтой или ещё чем-нибудь — самый смысл шифрования теряется.


            1. xhumanoid
              08.02.2016 16:31

              да, это идеальный вариант, но тут начинаются чисто финансовые вопросы: а стоит ли делать еще один режим работы ради 0.01% пользователей или эти же ресурсы потратить на улучшение существующего функционала и увеличить аудиторию на +10%?

              ответ я думаю ожидаем =( мне это самому не нравится, но бизнесу не интересны технологии ради технологий, он строится немного для другого


              1. Temmokan
                08.02.2016 16:35

                Бизнес, простите, о рисках в принципе думает? Если думает, то, простите, чем?

                Если увести историю с учётной записи в принципе возможно в любой ситуации — то скандалы на этот счёт — всего лишь вопрос времени. Если бизнес считает, что подобная огласка и ярлык производителя, которому начхать на безопасность, пойдёт только на пользу — без проблем.

                Но конкретно я Viber пользоваться теперь поостерегусь. Подобное небрежение безопасностью многое говорит о разработчиках.


                1. xhumanoid
                  08.02.2016 16:49
                  +1

                  ну давайте посмотрим состояние индустрии:
                  1) аська никогда не хранила переписку в закрытом виде + логи на сервере
                  2) skype никогда не хранил переписку в закрытом виде + с недавнего времени логи на сервере
                  3) viber никогда не хранил переписку в закрытом виде + логи на сервере
                  4) whatsapp не хранит переписку в закрытом виде + логи на сервере
                  5) telegram не хранит переписку в закрытом виде ( habrahabr.ru/post/240521 с того момента вроде ничего не поменялось), хотя и позиционируются как защищенный мессенджер, но политика разрабов «конечные устройства защищайте сами»

                  поэтому я могу смело сказать: производителям начхать на безопасность конечных точек, максимум что они беспокоятся это о mitm атаках, а конечные устройства должны защищать сами пользователи (шифрованный раздел для desktop, шифрованная sd для телефонов и тд)

                  если у вас есть другие примеры, то с удовольствием выслушаю


                  1. Temmokan
                    08.02.2016 17:22

                    Конечные точки и так должны защищать себя сами, НО: в самой архитектуре приложения не должно быть уязвимости вида «ключ под ковриком».

                    Касательно того, чем пользуюсь: меня вполне устраивает XMPP+OTR, или BitMessage.

                    Не то чтобы я не пользовался всем перечисленным. Приходится — если абонент именно в Skype, нелепо пытаться перегнать его в BitMessage. Вот и приходится осознавать масштаб возможной опасности и действительно приватное уводить в другие каналы.


                1. khim
                  08.02.2016 17:10

                  Бизнес, простите, о рисках в принципе думает? Если думает, то, простите, чем?
                  Кошельком он думает, кошельком. При этом глобальная катастрофа могущая случиться раз в пять лет — считается нормой: за это время бизнес, скорее всего, разорится.

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

                  Грубо говоря раз в 20-30 лет платить пострадавшим от Чернобыля дешевле, чем стоить реакторы, которые не взрываются. Увы.


                  1. Temmokan
                    08.02.2016 17:22

                    Воистину увы.

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


  1. Seekeer
    08.02.2016 15:39
    +1

    offtopic: с недавнего времени Viber стал очень сильно грузить проц. 10%, а временами и до 25 доходит. Просто когда в фоне висит и ничего не делал, раньше такого за ним не наблюдалось. Никто не сталкивался?


  1. bigfatbrowncat
    08.02.2016 16:27
    +9

    Есть такой дизайнер — Роман Воронежский. Долго работал на студии Лебедева. Вот его цитата про цвета:

    Цвет — явление идеологическое. Идеология такая: сам по себе цвет не значит ничего. Вообще ничего. Беседы о том, что какие-то цвета с какими-то не сочетаются или что-то означают в отрыве от контекста — шаманство хуже гороскопов. «Красный означает опасность», — говорит человек, который сегодня утром мужественно съел помидор и не дрогнул. «Черный — слишком мрачный», — утверждает второй, который сегодня утром читал черные буквы на белом листе и смеялся. «Серый скучный», — жалуется третий. Сами вы скучный. Посмотрите на Бастера Китона — весь из оттенков серого, а повеселей вас будет. «Синий символизирует надежду, зеленый — обновление», — вешает лапшу дизайнер. Дизайнер, не вешай. Клиенту лучше честно сознаться: вот 16 млн цветов (если rgb) или веер (пантон), тыкайте пальцем. Покрасим в любой. Но кнопка «Удалить» останется красной (а с этим клиент никогда и не спорит). Когда мне говорят, что красный с зеленым не сочетаются, я сатанею. Посмотри на грядку клубники, дундук!

    Оригинал, к сожалению, найти не могу, но ссылка на цитату есть в «Ководстве».


    1. bigfatbrowncat
      08.02.2016 16:32

      Ой, пардон! Коммент оставил не в тот пост. Целился в этот: megamozg.ru/company/redhelper/blog/23930

      Не обращайте внимания. ВООБЩЕ НЕ РЕЛЕВАНТНО.


  1. WaveCut
    08.02.2016 17:02
    +4

    Имея доступ к профилю пользователя я могу не только читать его историю, а еще и ходить по его сайтам, писать и читать его почту, смотреть его документы.

    Не имея доступа к профилю ничего из этого не могу.

    Проблема высосана из пальца, безопасность обеспечивается средствами ACL вашей операционной системы по выбору — Windows, Linux, OS X.


    1. Iamgavr
      08.02.2016 17:18

      Не спорю. Но зачем создавать мнимое ощущение безопасности сообщением о том, что сессия завершена?

      Проблемы как таковой в этом не вижу. Проблема в том, что viber:

      а) не имеет внятного официального способа сохранения переписки;
      Если переписка хранится в открытом виде — почему нельзя использовать это для переноса, а не писать, что бэкап невозможен?

      б) не может нормально организовать поддержку пользователей.
      Когда я обратился в техподдержку второй раз спустя неделю ожидания, получил такой ответ: «There is no need to submit any further tickets – the agent will be in touch with you as soon as possible.».


      1. WaveCut
        08.02.2016 17:23

        Такой попап, например, выскочит, если к данным допступ будет получен случайно или намеренно, путем копирования. Или произойдет реальная деактивация учетки в Вайбере. Результат — ваша история не останется на девайсе, с которого осуществляется попытка доступа. Что тут мнимого то?

        а) не могу комментировать.

        б) не могу оценить. :-)


        1. Iamgavr
          08.02.2016 17:29

          Имея доступ к профилю пользователя я могу не только читать его историю, а еще и ходить по его сайтам, писать и читать его почту, смотреть его документы.

          Такой попап, например, выскочит, если к данным допступ будет получен случайно или намеренно, путем копирования.

          Так зачем этот попап? Не совсем понимаю вашу мысль.

          UPD.
          Или произойдет реальная деактивация учетки в Вайбере.

          Вот в этом случае он нужен, я согласен.


          1. prizzrak
            08.02.2016 22:44

            Попап появился, потому что вайбер задетектил, что база была перемещена с одного компьютера на другой и после этого деактивировался. Самого удаления базы данных не происходит для того, что пользователь мог совершить fast registration — регистрацию на тот же номер без потери данных. Если совершить регистрацию на другой номер — база удалиться.


            1. Iamgavr
              09.02.2016 05:14

              Если бы база не пропадала целиком после появления такого попапа — этой статьи бы не было. Все данные после нажатия кнопки «Продолжить» удаляются.


    1. Temmokan
      08.02.2016 18:24
      -5

      Если историю можно прочитать, просто получив доступ к файлу на чтение, это вполне реальная проблема безопасности.

      Шифрование для подобных ситуаций и придумано. В любом случае, полезно в документации по продукту такие тонкости указывать, чтобы не было потом неприятного сюрприза.


      1. WaveCut
        08.02.2016 18:40
        +4

        Ну, возьмем к примеру всеми любимый Skype:
        image
        Они тоже отдают приватность истории на откуп операционной системе, и ничего — апокалипсиса не случилось.

        Я посторюсь: проблема высосана из пальца.


        1. Temmokan
          08.02.2016 21:51
          -5

          Похоже, разное понимание того, что такое безопасность.

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

          Оставайтесь при своём убеждении, у вас его никто не отнимает. Для вас это — надуманная проблема, в третйи раз можете не повторять.


        1. ivn86
          09.02.2016 11:14

          Они тоже отдают приватность истории на откуп операционной системе, и ничего — апокалипсиса не случилось.

          Буквально 18 часов назад: Новый вирус ворует переписку и записывает звонки в Skype
          начинает копировать переписку


          P.S. Почему Вы открываете бинарную БД текстовым редактором? habrahabr.ru/post/160315


          1. WaveCut
            09.02.2016 11:36

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

            P.S. Потому что мне лениво для комментария ставить клиент sqlite.


    1. Nagg
      08.02.2016 23:18

      Справедливости ради, когда я сохраняю локальные данные в Андроид приложении в data — никакое другое приложение в них не залезет и не сольет их (если не рут, но тогда ССЗБ). А в Windows 90% пользователи понятие не имеют про ACL и данные тырятся простейшим копированием файлика. Тут ничего не поделаешь и это на деле реальная проблема. Поставишь какой-нибудь, возможно, даже доверенный софт, а он незаметно сольет базы скайпа, вайбера и ничего не заметишь. Как по мне так стоило бы хотя бы симметричным шифрованием с ключем на основе телефонного номера + соль (не гарантия, но отпугнет бОльшую часть какеров).


  1. kvo
    08.02.2016 17:50

    В вайбере удивило отсутствие поддержки прокси «изкоробки».


    1. prizzrak
      08.02.2016 22:46
      +1

      Это больной вопрос. Поддержка есть во внутренних сборках, выдавать в продакшен не хотят, видимо считается что слишком много настроек будет, не знаю.


  1. achekalin
    08.02.2016 20:15
    +2

    Меня в вайбере много устраивает, кроме его надоедливости на телефоне (Android, если быть точным). Если я получил сообщение, но не «прочел его» (по факту, я, скажем, увидел текст области уведомлений, и уже «смахнул» его), то вайбер через некоторое время начинает опять напоминать про него. Крайне неудобно: скажем, едешь в машине, получил, прочел, а телефон через время опять внимание к себе привлекает. Еще проще юскейс, когда человек читает сообщение на смартчасах без обратной синхронизации (Pebble как пример) — обратной связи, что человек что-то прочел, нет, и вайбер продолжает и продолжает долбить юзера на телефоне тем же сообщением (

    «Фичу» не отключить, увы.


    1. WaveCut
      08.02.2016 23:55

      Так это, там же на андроидах куча настроек всплывашек и нотификаций. У меня яблоко, но помню смутно, что отключается окно и назойливость :)


  1. creker
    09.02.2016 00:23
    +6

    Обожаю такие срывы покровов. Так мило и наивно все это выглядит. Особенно негодование в конце, когда служба поддержки игнорирует это величайшее открытие.


    1. Iamgavr
      09.02.2016 05:22
      +1

      Прежде всего, статья писалась, чтобы показать способ переноса сообщений. В статье лишь 5 строк о «ужасной уязвимости, ставящей под угрозу существование человечества. Или вы видите жёлтый заголовок про тот самый срыв покровов?

      Техподдержка могла элементарно ответить о том, что всё ОК и они знают об этом, не о чем беспокоиться, мол, так и задумано. Я бы поверил и обрадовался.


  1. Gero
    09.02.2016 04:41

    Viber для PC настолько убог и кастрирован, даже по сравнению со своей мобильной версий, что даже не хочется его обсуждать.


  1. Pinsky
    09.02.2016 11:04

    А что там с серверами авторизации уже решили проблемы?
    У меня на блэкберри классическая ошибка, что номер не валиден.