?

Log in

No account? Create an account
dump -0f - /dev/mind
Я знаю Haskell, OCaml, GSM, эндофункторы и много других страшных слов
GSM: карты пополнения счета, прикольные и не очень. 
18th-Nov-2006 01:12 am
Чтобы иметь возможность лучше "отвечать за базар", смещусь-ка я из области рассказов о базовой сети GSM (которая все-таки от меня несколько далеко) в область GSM-related IT, которое мне гораздо ближе :)

Итак, заказной пост на тему: "В какой-то из древних баек встретил момент, когда бравый рассказчик отдаёт злоумышленникам сгенерированный код карточки пополнения счёта на большое отрицательное число. Такие бывают? Есть ли доступные методы генерации таких кодов, чтобы наказывать разных вредных личностей? :)"

Короткий ответ: карточки бывают, а методов - нет :)

Длинный ответ

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

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

А механизм работает очень просто.

В сети оператора есть сервер (назовем его ваучер-сервером), который хранит тройки (код карты, период валидности карты, сумма пополнения). К этому серверу обращается та система, через которую происходит пополнение (а оно может быть сделано по USSD, через IVR или "вручную" - при помощи оператора call center). При обращении происходит проверка наличия карточки с указанным кодом, попадание даты пополнения в период валидности карты, и собственно изменение пополняемого баланса на сумму пополнения.

Как видно, система проста, как автомат Калашникова и обладает некоторыми вроде бы очевидными свойствами:
1)Код карточки никаким образом не содержит информации о сумме пополнения
2)В ваучер-сервере хранится информация о реальных кусках картона/пластика - о картах, которые уже находятся в продаже или в процессе выпуска в продажу.

Очевидно, что доступного способа "сгененировать" карту пополнения с отрицательной суммой пополнения - нет. Сделать это может только тот, кто имеет доступ к ваучер-серверу.

А теперь - бонус. Рассмотрим, насколько реальны всякие "генераторы кодов пополнений", которые в изобилии продаются в интернете.

Очевидно, что код пополнения нельзя "сгенерировать". Масимум - его можно подобрать/угадать. Рассмотрим, насколько велика вероятность угадать код карты пополнения. Допустим, у оператора мобильной связи 20 млн абонентов. Оператор выпускает на рынок 200 млн карт пополнения разных номиналов (я преувеличиваю, но для красоты изложения, пусть так и будет). Код карты пополнения состоит из 14 цифр. Таким образом, всего может быть 10^13 разных кодов карточек, из которых использованы 2*10^8. Следовательно, вероятность того, что взятое наугад 14-и значное число является валидным кодом карточки пополнения составляет 2*10^8/10^13 = 0.00002.

Получается, что перебрав где-то десять тысяч номеров, у вас есть шанс угадать код карточки. Но стоит ли игра свеч? Врядли. Во-первых, интерфейс ваучер-сервера специально сделан так, чтобы перебор нельзя было делать быстро, и попытки подбора легко идентифицировались и докладывались "кому надо". Во-вторых, если карточку, код которой вы "угадали", кто-то купит, и обратиться к оператору с жалобой, что она уже использована, то конфликт с большой вероятностью будет решен в его пользу, а с вашего счета в лучшем случае спишут деньги, а в худшем - его заблокируют. В-третьих, если вы вдруг поставите дело "на поток", то вами наверняка заинтересуются неулыбчивые люди из СБ оператора, которые подключат неулыбчивых людей из госструктур и постараются напроситься в гости, что всегда неприятно :)

[1]: Напомню, о чем шла речь. Вам звонят/присылают SMS и сообщают, что вы победили в лотерее и выиграли СуперПриз, но чтобы получить его - надо заслать куда-то код пополнения с карточки, стоящей существенную сумму денег (вариант: пришлите нам код с карточки номиналом X, а мы вам пополним код на сумму 2*X). Если вы доверчиво покупаете карточку и сообщаете код, то злоумышленники тут же с помощью этого кода пополняют (на сумму Х) счет запечатанного "стартового prepaid пакета" стоимостью Y и продают его на улице за сумму Y+X/2 (напомню, что в украинских реалиях возможно стать абонентом, не предъявляя никаких ID/паспортов/...). Таким образом, злоумышленники получают прибыль в размере X/2, пострадавший теряет деньги на сумму X.

И вот такие злоумышленники звонят жене сотрудника одного из операторов и представляются сотрудниками этой же компании-оператора. Жена тут же звонит мужу, чтобы уточнить, действительно ли есть такая мега-акция. В результате, муж передает жене код ваучера, пополняющего счет на некую отрицательную сумму, и злоумышленники, таким образом, оказываются ни с чем.
Comments 
18th-Nov-2006 12:11 am (UTC)
тут, если я правильно понял схему, в проигрыше оказывается только покупатель запечатанного "стартового prepaid пакета", нет?
18th-Nov-2006 01:19 pm (UTC)
Нет, почему же? Он как раз в выиграше. Повторяем еще раз:

Был запечатаный стартовый пакет с 5-ю гривнами на счету, который оператор продает за, допустим, 25 грн (типа, 20 грн - стоимость симки). Жулики потратили 25 грн и купили его в магазине.

Жулики выдурили у жертвы ваучер на 100 грн, и пополнили этот пакет. Теперь там 105 грн.

Жулики продают этот пакет ушлому покупателю за 75 грн. Ушлый покупатель при них вставляет симку в телефон и убеждается, что там реально 105 грн, и, довольный, уходит.

Считаем:
Ушлый покупатель купил карточку со счетом в 105 грн за 75 грн вместо 125 грн. Итого - экономия 50 грн.

Жулики потратили 25 грн, а затем получили 75 грн. Итого - навар 50 грн.

Жертва потратила 100 грн и не получила ничего. Эти 100 грн "поделили" между собой ушлый покупатель и жулики.

Аналогия из компьютерного мира: представьте, что кто-то "раскачивает" персонажей WoW или Lineage 2, выдуривая игровые "деньги", ресурсы, ману или что там для этого нужно, у других игроков. А потом продает "раскачаных" героев за реальные деньги ленивым игрокам.
18th-Nov-2006 12:40 am (UTC)
А зачем в ваучер-сервере отрицательные суммы пополнения? Оплата услуг каких-нибудь?
18th-Nov-2006 01:20 pm (UTC)
Ну, я вполне себе могу придумать несколько услуг, для которых это будет полезно - например, лотореи, в которых ваучеры являются лотерейными билетами, или какие-то добровольные пожертвования.

Хотя, возможно, это и багофича.
18th-Nov-2006 12:48 am (UTC)
1. Про коды это все правда в предположении, что коды карточек образуются из генератора псевдослучайных чисел. Я искренне надеюсь, что это так и есть ;)

2. То есть, если в базу будет занесена запись о карточке с отрицательной суммой, то она сработает. Но для этого нужно иметь прямой доступ к базе. А вот вопрос - поле данных в базе, в котором хранится сумма пополнения - оно знаковое или беззнаковое? ;)
18th-Nov-2006 02:22 pm (UTC)
1. Да, так оно и есть.

2. А оно - знаковое :) (понятное дело, что не факт, что в любом ваучер-сервере любого поставщика это так)
18th-Nov-2006 02:07 am (UTC)
видать сотрудник особо приближенный к императору, если смог сделать INSERT с отрицательной суммой :) ибо мне получить через знакомых мой-же IMSI+Ki не удалось :(
18th-Nov-2006 02:27 am (UTC)
да никакой не приближенный - хакер обычный :)))
18th-Nov-2006 07:24 am (UTC)
> Код карты пополнения состоит из 14 цифр. Таким образом, всего может быть 10^13 разных кодов карточек,

А куда ещё один разряд делся?
18th-Nov-2006 10:29 am (UTC)
Скорее всего, одна цифра зарезервирована для контрольной суммы.
18th-Nov-2006 11:18 am (UTC)
А как обрабатывается модное сейчас пополнение счета на определенную сумму? (e-port и т.д.)

Спасибо.
18th-Nov-2006 02:49 pm (UTC)
Я не знаю, что такое E-PORT, но предположу, что речь идет либо об услуге перевода "денег" с одного счета в рамках мобильной компании на другой, либо о генерации "электронного" ваучера на произвольную сумму.

В первом случае, человек-отправитель посылает SMS или USSD специальной структуры, в котором указан получатель и сумма. Специальный сервер проверяет доступность получателя и доступность суммы, и выполняет собственно перенос "денег" с одного счета на другой, запрашивая необходимые подтверждения и уведомляя участников.

Во втором случае, платежный терминал после приема денег от абонента связывается с ваучер-сервером, просит того "сегенрировать" новый ваучер на указанную сумму, принимает от ваучер-сервера код такого виртуального ваучера, и печатает код на бумажном чеке. После чего все происходит обычным порядком - код вбивают в телефон, он валидируется, и происходит пополнение.
Возможность мошенничества в этом случае можно отсекать, проверяя приход нужной суммы денег через банковский платежный интерфейс до того, как генерируется ваучер.
18th-Nov-2006 12:16 pm (UTC)
а какой софт стоит у ОПСОСов ? какие протоколы используются для взаимодействия между составными частями такими как IVR, "ваучер-сервер" и т.д. оно стандартизированно?
18th-Nov-2006 02:55 pm (UTC)
Хм. Однако :)

Отвечу вопросом на вопрос: а какой софт стоит у провайдеров интернет? Или даже не так: а какой софт стоит у пользователей персональных компьютеров? :)

Если коротко - то всякий :) Если длинно - то могу рассказать про reference model-и бизнес-процессов компаний-операторов мобильной связи, и про _минимальный_ набор функций (реализуемый в софте), который необходим для их выполнения. Хотя что-то я не уверен, что у меня получится сжато и внятно это рассказать... Ключевые слова: e-TOM.

По поводу протоколов тоже все непросто. С одной стороны, сейчас есть сразу несколько попыток все стандартизировать и причесать, с другой стороны - этим попытки были предприняты достаточно недавно, и у многих операторов к тому моменту уже был пестрый зоопарк решений и протоколов, который чем дальше, тем становится больше и пестрее :) Ключевые слова, имеющие отношение к предмету: NGOSS, Parlay API, JAINE API.
19th-Nov-2006 11:18 pm (UTC)
Насколько я помню, в тех историях шла речь о том, что некий знакомый, имеющий доступ к софту, сгенерил, забил в базу и выдал рассказчику код для записи с отрицательной суммой пополнения. Сдаётся мне, это вполне реально, особенно на начальном этапе развития ГСМ-провайдера, когда этот знакомый имел возможность позвонить Самому Главному Начальнику и спросить разрешения на такой хитрый ход, а Самый Главный Начальник ещё обладал некоторым чувством юмора в отношении своей компании.
20th-Nov-2006 07:20 am (UTC)
Плюс ко всему, даже если разрешения Начальника не было - чем бы это грозило сотруднику?

Даже если бы мошенник захотел из принципа пойти качать права - кому бы он стал жаловаться и какие доказательства предъявлять? :)
3rd-Dec-2006 12:00 pm (UTC)
Привет!
Опоздал к обсуждению, но все же кину свои 5 копеек.
Карточка в "ваучер-сервере" имеет гораздо больше состояний, чем простые "В печати", "В продаже". Работал с биллингом, в котором таких состояний было 13 или 14. Сегментация состояний делается как раз для того, чтобы снизить вероятность подбора кодов. Ну, т.е. допустим в базе хранится 100млн карт, а в розничной сети крутится 10000 карт, т.е. закинуть на баланс можно только те карты, которые помечены как доступные, не смотря на то, что карта с угаданным пин-кодом реально существует. Вероятность подбора пин-кода вообще пренебрежимо мала.
(Deleted comment)
7th-Dec-2006 03:08 pm (UTC)
>Во-вторых, если карточку, код которой вы "угадали", кто-то купит, и обратиться к оператору с жалобой, что она уже использована, то конфликт с большой вероятностью будет решен в его пользу, а с вашего счета в лучшем случае спишут деньги, а в худшем - его заблокируют.

По сути, это и есть карточка пополнения счёта на отрицательное число. Алгоритм такой: покупается карточка, номер отдаётся мошенникам, а потом делается обращение с жалобой к оператору.
This page was loaded Nov 23rd 2017, 6:35 pm GMT.