Pull to refresh
21

Пользователь

6
Subscribers
Send message

Это необязательно — в смарткарту (а симка — это смарткарта) можно внедрить специальную информацию, такую, как биометрические данные и данные паспорта. Тогда госструктурам не потребуется получать доступ к информации оператора связи. Пример — билет "тройка" на SIM-карте — там метрополитен не имеет доступа к данным оператора и обратное тоже верно.

Интересно, видел ли кто живьем HSM "от НСК + ИТМиВТ" в виде продуктивного образца…
Вот Жемальтовский — хотя бы на фотке виден (см. выше).

Просто излюбленная стилистика журналистики и PR. Их, как бы, ДНК.
Здравомыслящие люди всегда понимают, что «серебряной пули» нет.

На роуминг не повлияет — в роуминге абонент регистрируется в сети с помощью AuC своего оператора. А на шифрование радиочасти инициатива не влияет (пришлось бы прошивки всех телефонов менять).

Описанный вариант хорош при использовании стримообразного программирования, при наличии методов map и forEach он органично вписывается в поток. А исключения туда сложнее вписывать (предполагаю, такова задумка авторов Stream API).

А абстрактный дженерик класс это не перебор? Как-то мне это глаз резануло и в реализации автора статьи. Вроде бы это два разных механизма обеспечения абстракции и интуиция шепчет мне «не смешивай». Но, я не профи, может и врет интуиция.
PS: прямо как с алкоголем

Я, в свое время, набросал вот такое (буду благодарен за конструктивную критику, т.к. решено чуть иначе):


Union
import java.util.Optional;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.stream.Stream;

/**
 * Объект-контейнер, который может содержать один из двух типов объектов.
 */
class Union<T1, T2> {
    private final Optional<T1> first;
    private final Optional<T2> second;

    Union(T1 first, T2 second) {

        assert (first == null && second != null) || (first != null && second == null);

        this.first = Optional.ofNullable(first);
        this.second = Optional.ofNullable(second);
    }

    public boolean isFirstPresent() {
        return first.isPresent();
    }

    public boolean isSecondPresent() {
        return second.isPresent();
    }

    public <U> Stream<U> map(BiFunction<T1, T2, U> function) {
        return Stream.of(function.apply(first.orElse(null), second.orElse(null)));
    }

    public void forEach(Consumer<? super T1> whenValue1, Consumer<? super T2> whenValue2) {
        first.ifPresent(whenValue1);
        second.ifPresent(whenValue2);
    }
} 

Result
final class SuccessOrFailure extends Union<String, BatchExceptions> {

    private SuccessOrFailure(final String batchName, final BatchExceptions someException) {
        super(batchName, someException);
    }

    public static SuccessOrFailure createFromSuccess(final String batchName) {
        return new SuccessOrFailure(batchName, null);
    }

    public static SuccessOrFailure createFromFailure(final BatchExceptions someExceptions) {
        return new SuccessOrFailure(null, someExceptions);
    }
}                    

В смысле, там каждый APDU шифруется и/или подписывается? Понятно, что финансовых операций не совершим, но выбрать/прочитать какие-то файлы можно (если знать об их существовании)? Или там общение происходит "инвелопами", типа как OTA в телекоме?

С банковскими картами я незнаком, но предполагаю, что часть команд ISO 7816-4 должна поддерживаться (хотя бы SELECT, GET RESPONSE, READ BINARY, READ RECORD). Команды, думаю, стандартные, но стандарты там свои.
Схема там, судя по интернетам, обычная для UICC — выбираем приложение по AID и вперед.
AID для Visa и MC известны.

Во второй части будут только несколько разных APDU. Остальное есть в указанных в начале стандартах.

Про Clojure полностью разделяю мнение автора, а про Python нет. Сам был в похожей ситуации, когда «вкусил ФП». Тоже вдохновился и начал выдавать подобные штуки: list(map(filterfalse(и т.д.))) — мне казалось, что так красивее и читабельнее. Однако, через пол-годика — годик, когда стал снова копаться в своем коде «функционального периода», я уже был совсем недоволен своими синтаксическими эквилибрами (ведь встроенной композиции в языке нет, а лепить свою или тащить внешние зависимости я даже под эйфорией не хотел).


В итоге все вернул на круги своя: пайтону — пайтоново. Конечно, самое дельное из ФП, вроде избегания глобального состояния, чистые функции, маленькие функции с говорящими именами и т.п. я оставил при себе и использую в Python.


А если хочется ФП и есть возможность — я беру в руки Clojure, программировать на нем не меньшее удовольствие, чем на Python (как будто пазлы разгадываешь).

Вероятно для того, чтобы создать самодокументированный код (к чему очень стимулирует, хотя бы, clojure). Типа вместо filter(много параметров), который затрудняет чтение кода, мы, сначала определяем filter_none() и потом его используем как предикат. Читающему глазу уже становится легче.

Лето в том году было тёплым, солнечным. Особенно удачно получилось, что оно пришлось на выходные.

Это оговорка/шутка или климат на Сахалине настолько суров?

Еще, собственно, историями
В упомянутом документе с описаниями сценариев было сказано, что для осуществления всех этих атак нужна одна малость — подключение к сети оператора. Причем не такое, какое можно получить легально (будучи, к примеру, контент-провайдером). Оно прямо у вас было на этом тесте? Если да, то получено легально, по договоренности с оператором? В моем понимании это основополагающий момент для всей публикации.
Кстати, он собирает уже готовые к запуску исполняемые файлы, а не инсталяторы.


По крайней мере под Win собирает отличные инсталляторы (именно, которые инсталлируют ваш питоновский собранный exe)

msi_opts = {
    'upgrade_code': '{98A12636-475E-42A5-8EDD-E072890046EA}',
    'add_to_path': False,
    'initial_target_dir': r'[ProgramFilesFolder]\{}\{}'.format(company_name, product_name),
}
setup(
    version=version.get_new_version(),
    description='My App',
    author='Author',
    name='My Application',
    options={
        'build_exe': exe_opts,
        'bdist_msi': msi_opts,
    },
    executables=[exe]
)
Так это не таксисты жалуются (ибо в я.такси и гетте тоже таксисты работают, не знаю, как в юбер), а жалуются владельцы таксопарков или «другие аггрегаторы», которые не так популярны или ведут бизнес по устаревшей модели. Т.е. видим жалобы менее успешных конкурентов на более успешных.
Если украдены данные карт с Миленажем, то даже знания ключа аутентификации еще недостаточно для изготовления клона.
4. На карте есть место для загрузки вредоносного апплета

Information

Rating
6,603-rd
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity