• Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    У моих родственников есть строительных бизнес, так вот они предпочитают просто арендовать газельку для таких целей, а не использовать личное авто. Хотя бы из-за того, что чистка салона может дороже обойтись.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Ок, тонну плитки я смогу на легковушке увезти? А пару листов гипсокартона, не распиливая их пополам? А трёхметровые профили? А так, чтобы не испортить кожаный салон?
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Меняет диаметрально. На прилегающей территории пешеход имеет постоянный приоритет, где бы он ни находился, т.е. может не только переходить в любом месте, но и двигаться по проезжей части хоть зигзагом, а авто должны терпеть и пропускать.

    Причём здесь пешеходы вообще? Речь о том, что люди, которые хотят выехать из своих дворов, упираются в людей, которые хотят в этот двор въехать, потому что хотят доехать поближе к садику/школе.


    Ту не помню, можете посмотреть, какая рядом с 12к2, ну или парковка поменьше у 1200-ой (вообще, можете просто по спутнику посмотреть там парковки)

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


    Совсем проблемные же места в восточной части района.

  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Стройматериалы. Или вес огромный, или длина.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    +1
    Насчёт везти груз: я вот часто сталкивался с тем, что если автомобиль и нужен, то грузовой (мебель, стройматериалы).
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    +1
    Там нет дорог во дворах

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


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

    Номер школы в студию. Может быть, какая-нибудь одна школа в Новокосине и имеет парковку перед ней, но остальные школы/сад парковки не имеют от слова совсем, и родители паркуются в чужих дворах. Сам это каждый день наблюдаю, если что.


    А ещё смешно бывает: некоторые проезды не сквозные, и иногда получается довольно забавно смотреть, как такие люди пытаются разъехаться, особенно когда поставили столбиков, т.е. разъехаться, заехав на тротуар, уже не получится.

  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Ага, сначала люди покупают автомобили, а потом вынуждены ходить в зал, чтобы скоменсировать гиподинамию.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Там нужен просто умный светофор, который всегда горит зелёным для пешеходов и переключается на красный только при появлении автомобилей.

    Но умных светофоров у нас пока нет. Да и никто не будет жать на кнопку и ждать зелёного, когда можно перейти вотпрямщас, потому что дорога свободная.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Чем Новокосино так особенно? Там тоже дороги к школам проходят через чужие дворы. Каждый хочет подвезти ребёнка поближе к школе, и тоже приходится разъезжаться во дворах.
  • Эти токсичные, токсичные собеседования
    0
    Да и мытьё полов ежедневное не нужно. Раз в 2 недели мыть вполне достаточно, а в остальное время проходить пылесосом. А вот насчёт мультиварки не соглашусь: это просто кастрюля с контролем температуры и вылючением по таймеру. Самое долгое в готовке — помыть-порезать.

    Окна вообще нужно мыть, когда грязь на них начинает раздражать.
    Рубашку можно купить более суровую, но не требующую глажки, обувь протирать тряпочкой перед выходом — 1 минута и т.д.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Но тогда люди начинают массово переходить по нерегулируемому и тормозить движение. Ну не предусмотрен ПДД тип перехода, где приоритет имеет автомобиль.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Более того, в некоторых случаях переходить дорогу в 100 метрах от светофора оказывается даже безопаснее.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Дети (да и взрослые тоже) любят разнообразие. Отсутствие необходимости вообще куда-то ехать, т.е. вышел и гуляешь по дворам — это огромный плюс. А вот именно ездить, да ещё в один и тот же парк быстро надоест.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    0
    Съехать в сервисную (остановочную) полосу и вызвать эвакуатор.
    Просто так стоять на неё нельзя — будет штраф.
  • Проблемы эгоистов: дорожные пробки и парадокс Браеса
    +1
    Есть ещё третий тип водителей: которые ненавидят пробки настолько, что готовы ехать значительно дольше, но ехать. Для таких людей стоит подбирать маршруты не по времени езды, а по средней скорости.
  • Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов
    0
    Перевести с карты банка на виртуальную. Онлайн. Без комиссии.

    А переводить вы на неё деньги будете в веб-банкинге, написанном модными-стильными-современными js-кодерами… (см. комментарий выше)

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

    У нас их не было. А вот при поездках за рубеж один раз оплачивал именно так (было это в 2009 году).


    Опять таки, PIN додумались не писать на самой карте, почему нельзя CVV было бы также выдавать в конверте или вводить с терминала при получении карты

    Зависит от политики банка и платёжной системы. Многим магазинам CVV вообще не нужен, поэтому отсутствие CVV на самой карте не защищит от вывода с неё денен.

  • Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов
    +1
    Вы удивитесь, если узнаете, что в США до недавнего времени дебетовые карты были мало распространены, а были только кредитки с оффлайн-оплатой и практически нулевой защитой. Картой можно было расплатиться вообще где угодно: не нужно было ни электричество, ни интернет — только импринтер (девайс, делающий оттиск карты — собственно поэтому буквы на картах выдавлены), да даже можно было просто номер карты в тетрадочку переписать и всё. И узнать текущий баланс карты было нельзя — банк просто раз в месяц выставлял счёт со списком операций.
  • Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов
    0
    То есть у вас всегда при себе имеются наличные деньги на любую покупку?
    А где вы держите накопления?
  • Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов
    +1
    Ну так банальный core review и сборка из исходников

    Это не даст 100% гарантии, что в коде не содержится вредоносных фрагментов.


    Типичный пример: ослабление open source критографических библиотек спецслужбами. Никто об этом годами даже не догадывался, пока об это не сообщили явно.

  • Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов
    0
    А ещё через оффлайн-транзакции можно уйти в минус.
    Это когда оплатил в магазине сейчас, баланс на карте не изменился, смс не пришла, а реально списание произошло через 1-2 дня.
  • Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов
    +9
    О, получается ещё веселее алгоритм. чтобы что-то оплатить с виртуальной карты:

    1. Выйти на улицу, найти банкомат своего банка, чтобы снять деньги с зарплатой карточки.
    2. Чертыхнуться, потому что банкомат не работает и пойти в другое отделение.
    3. Отстоять очередь.
    4. Снять нужную сумму.
    5. Найти терминал, чтобы внести деньги на виртуальную карту.
    6. Чертыхнуться, потому что терминал отказывается принимать последнюю пятитысячную купюру.
    7. Вернуться к банкомату, отстоять очередь, снять ещё 5 тысяч рублей.
    8. Вернуться к терминалу.
    9. Дойти до дома.

    Да, ещё не забыть про комиссии.
  • Пишем бота-кликера на Python для Lineage 2
    0
    > отсюда и DLL-injection как вершина ботовского софта

    Скорее, имел место компромисс между уровнем зондирования и недовольством пользователей. Например, местный Frost банил игроков просто за сам факт наличия на жёстком диске бота. Для США/Европы такое немыслимо, поэтому GameGuard работал довольно мягко, просто не давая играть при определённых условиях

    А ещё в GameGuard есть белый список приложений, которым можно отправлять нажатия клавиш в окно игры. В этом список входят, например, драйверы клавиатур, Fraps и т.д. Не знаю, как сейчас, но раньше проверка была простая — по имени. То есть достаточно было переименовать AutoHotKey.exe в какой-то-там-panel.exe (от Logitech), и опа — всё работает.

    И, кстати, в случае невозможности использования инъекции DLL решение все равно бы было — сетевой шлюз внутри виртуальной машины, который у системы защиты вообще не было бы никаких шансов обнаружить, кроме самого факта запущенной виртуальной машины.
  • Пишем бота-кликера на Python для Lineage 2
    0
    /gmlist или /gmonline, точно не помню. Стандартная команда и, есессно, у ГМов есть опция «не отображать в списке онлайн» (с каких хроник — не скажу, но есть).

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


    Инстансы не создаются динамически и преград для доступа ГМов в инстансы нет.

    Тем не менее, инстансы защищают от случайных прохожих, могущих зарепортить ботов.

  • Пишем бота-кликера на Python для Lineage 2
    0

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


    Группа опытных ботхантеров 24/7 ингейм, патрулирующих все локации

    А ещё был GMChecker. ГМ в онлайне — боты прячутся.
    Ещё была технология определения местоположения любого игрока в игре.
    И да, с инстансами что делать?

  • Пишем бота-кликера на Python для Lineage 2
    +1
    > Мое предположение, что автокликеры используют WinApi для кликов/хоткеев, а игра использует DirectInput

    Именно так. Фильтр кликов внутри игры я делал, перехватывая соответствующие функции.
  • Пишем бота-кликера на Python для Lineage 2
    0
    — Персонаж 24 часа бегает в одном данже, бъет одних и тех же мобов 4 абилками, в чат не пишет, не делает релог.

    И как вы сможете это проверить? Насколько я помню, сервер L2 не пишет насколько детальную информацию в логи. Ну и даже если бы и писал, то автоматическое выявление ботов было бы серьёзной BigData задачей.


    Поэтому стандартный способ выявления ботов — вручную по репортам, либо через невалидные данные (невидимые мобы, например).

  • Пишем бота-кликера на Python для Lineage 2
    0
    А в чем собственно проблема запрограммировать бота на «разлогиниться в 2 часа ночи и залогиниться в 8 утра»…

    А зачем? Нахождение в онлайне 24/7 ещё не означает, что персонаж бот. Может, он просто торгует?

  • Пишем бота-кликера на Python для Lineage 2
    +1
    Могу вкратце написать, как я обходил GameGuard на еврооффе. Особенности GameGuard:

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

    Для перехвата соединений внутри клиента я использовал обычный DLL-injection и JMP-хуки (при этом меняется код системной библиотеки в памяти процесса). Всё это успешно делалось в первую секунду после старта процесса. При этом был обнаружен интересный факт: GameGuard препятствет установке хуков на recv(), send() — даже если они были установлены ранее, то GG восстанавлияет исходный код библиотеки, но позволяет устанавливать JMP-hook на функцию connect().

    Но не всё так просто: мы не можем просто взять и перенаправить вызов connect() на адрес, отличный от сервера L2 — это спалит система защиты. Но оказалось, что GameGuard нормально пропускает сокеты, переданные из другого процесса с помощью DuplicateAndClose. Поэтому внутри процесса настраивался pipe, а затем оба сокета передаётся в процесс-бот, ну а дальше дело техники.

    Ну и ещё мелочь: перехват кликов мышки для того, чтобы клики, сделанные поверх окна бота, не доходили до клиента. Здесь всё аналогично, но хуки навешивались уже на одну из библиотек DirectX.
  • Пишем бота-кликера на Python для Lineage 2
    0
    Аж передёрнуло от темы. В своё время (~10 лет назад) играл на еврооффе, и тоже писал своего бота. Причём писал тоже по-серьёзному: с кусей пользователей, сервером обновления бота. Собственно, для меня это был первый серьёзный проект, которых неплохо подтянул скилл программирования.

    Важный момент: система защиты на офсерверах (GameGuard) обходилась с полпинка, за ботами особо не следили, поэтому я работал непосредственно на уровне сетевого протокола.

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

    Немного жалею, что в те времена ещё не было средств разработки, которые доступны сейчас — сделал бы гораздо больше всего интересного. Дико не хватало асинхронного программирования. Ну и сейчас я бы попробовал использовать не захардкоженные алгоритмы, а ИИ для более правдоподобных действий ботов.
  • Анализируем локальные функции в C# 7
    +1
    Ну да. Я не понимаю боязни создания новых сущностей. И почему ради метода? Ради нескольких методов («в нём просматриваются отдельные блоки, которые для читаемости основной логики есть смысл вынести в отдельные методы»).

    А ещё дело в том, что локальные методы имеют ненулевой оверхед (описано в публикации) при обращении к сущностям вне локального метода. И учитывая, что, в отличие от лямбд в С++, захват осуществляется неявно, его довольно трудно проследить в сложном коде.
  • Анализируем локальные функции в C# 7
    0
    Это похоже на распространенную в последнее время практику, когда приватные методы располагаются в классе после публичных.

    Некоторые вообще следуют принципам SOLID и выделяют публичную часть класса в отдельный интерфейс.


    На мой взгляд, неудобно, т.к. когда нужно узнать, что делает тот или иной вызываемый метод, приходится "прыгать" вперед (вниз), а не назад (вверх).

    При использовании IDE этой проблемы нет. В VS вообще можно прыгать через Alt+F12 с сохранением истории переходов.

  • Анализируем локальные функции в C# 7
    0
    И в обоих случаях проблема решается созданием private nested класса. Вообще, локальные функции — шутка очень удобная. Но с дополнительным классом код получается более аккуратным.
  • 31 февраля
    +2
    Можно и так:

    return Day <= 28 + (0x3BBEECC + isLeap(Year) * 0x10 >> Month * 2 & 3);
  • Как именно работает Meltdown
    0
    1) Брутфорс никто не отменял. В случае Meltdown мы можем просто сдампить большой кусок памяти, а затем искать в ней какие-нибудь интересные строчки.

    2) Что-то поменяется, что-то нет. Здесь и не нужна 100% удача.

    А вот Spectre действительно имеет больше академический интерес — слишком много условий должно выполниться, чтобы было возможно прочитать память чужого процесса.
  • Как именно работает Meltdown
    0
    Атомарные операции выполняются с барьерами памяти

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


    В том коде они это делают 999 раз

    В том коде на каждой итерации делается вызов rdtsc. Я бы попробовал переписать код так, чтобы измерялось суммарное время 999 попыток, а не каждой из попыток в отдельности.

  • Как именно работает Meltdown
    0
    Точно, это я напутал: физически местоположение инструкции одинаково, различие только в адресе операнда, который ещё надо прочитать.
  • 31 февраля
    +1
    Бывают случаи, когда в 1 минуте возможно не 60, а 64 секунды, да вообще, когда на входе задана невалидная дата, и с этой датой нужно полноценно работать, а не поднимать лапки.

    Например, в FAT32 или ZIP-архивах можно назначить время создания файла 27:60:62. Будет весело, если программа, агрессивно валидирующая дату, будет падать на таких файлах.

    Ну или когда контроллер телекоммуникационной стойки без тени сомнения говорит, что на его часах 12:13:60 — с этим тоже нужно уметь работать.
  • Как именно работает Meltdown
    0
    Меня удивляет другое. Один из механизмов атаки — модификация адреса перехода в разделяемой библиотеке. Одна и та же физическая память отображается и в процесс жертвы, и в процессе атакующего. Далее мы меняем адрес перехода в своём адресном пространстве, при этом происходит CoW — изменённый участок памяти маппится на другую область памяти. Но при этом это действие влияет на результат предсказателя переходов в процессе-жертве.
  • Как именно работает Meltdown
    0
    Ну так у нас в арсенале имеется команда очистки кэша.