?

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 11:18 am (UTC)
А как обрабатывается модное сейчас пополнение счета на определенную сумму? (e-port и т.д.)

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

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

Во втором случае, платежный терминал после приема денег от абонента связывается с ваучер-сервером, просит того "сегенрировать" новый ваучер на указанную сумму, принимает от ваучер-сервера код такого виртуального ваучера, и печатает код на бумажном чеке. После чего все происходит обычным порядком - код вбивают в телефон, он валидируется, и происходит пополнение.
Возможность мошенничества в этом случае можно отсекать, проверяя приход нужной суммы денег через банковский платежный интерфейс до того, как генерируется ваучер.
This page was loaded Sep 19th 2019, 6:28 am GMT.