Category: it

Category was added automatically. Read all entries about "it".

manandmoon

Колесо жизни

Большинство программистов когда-нибудь писали программу, печатающую свой собственный текст.
Японец Юсуки Эндо, один из разработчиков языка Ruby,  довел задачу до абсурда, cоздав программу на Ruby, печатающую программу на Scala, печатающую программу на Scheme, печатающую программу на Scilab, .... и так по ста языкам программирования, пока опять не распечатается исходная программа на Ruby.



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

Джаваскрипт и пробелы

Давно известно, что джаваскрипт допускает использование юникода в сорсах, что позволяет писать пассажи типа

var переменная, блин, ᕙᐛᕗ;


пользоваться одинаковыми на вид буквами с разной кодировкой:

>臭 = 1, 臭 = 2;
>臭+臭
3


и даже писать справа налево:

var ש = 1;


Чего я не знал, это что джаваскрипт считает за буквы даже несколько пробелообразных* символов:

> ᢪ= + 1,ㅤ= + 2
>ᢪ+ㅤ
3


и что один из этих символов тоже пишется справа налево:

>function ᢪ ( ؠ2) { return 1 - ؠ2}
>function  ㅤ( ؠ2) { return ؠ2 - 1}
> ᢪ( 2 ) - ㅤ( 1 )
-1


Веселого программирования!

---
* Использовались стандартные шрифты на макинтошевских Хроме и Файрфоксе. Кто скажет, как оно на виндах/линуксе выглядит, у меня под рукою сейчас нет?

Update: на виндах кажется все выглядит более понятно. Мораль: тестируйте код на всех платформах
manandmoon

Про фишинг

Здравствуйте, дорогие оставшиеся в живых френды!
Федеральная Служба Опасности кажется возвращается в эфир после долгого перерыва. Не то что мы тут фигней страдали, но занимались работой, далекой от хакеров и взломов. А теперь вот вернулись.

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

Вот если например взять любую ссылку и открыть ее в новом окне, то новой странице передастся refer(r)er. Оказывается, и это и есть та самая фича, передастся еще и объект window.opener указывающий на предыдущую страницу. Делать с объектом особенно ничего нельзя, поскольку живет он на другом сайте, кроме одного: можно перенаправлять на другой адрес. Вот так:

if (window.opener) {
  window.opener.location = 'http://some.other.site/';
}


Какого хрена эту возможность вставили, я не знаю, хороших применений я тут придумать не могу. А негативное пожалста: берешь сайт типа ЖЖ, Эвернота или веб-почты, желательно с часто слетающей авторизацией, постишь туда ссылку на свой злой сайт. На злом сайте какие-нить котики для отвлечения внимания, и джаваскрипт, перенаправляющий исходный сайт на фейковую страницу авторизации. Посмотрит пользователь котиков, вернется домой, поцокает языком да и, глядишь, попробует назад залогиниться...

Простая демонстрация. Вместо фейкового логина идет на логин lj.rossia.org

Интересный момент - если фейковая страница не устанавливает титул, то старый титул остается на месте, то есть визуально вообще ничего не прыгает и пользователя не пугает

Как бороться. Тут авторы браузеров еще не пришли к общему знаменателю. Обсуждение идет, добавление rel="noreferrer" в код пользовательских ссылок вроде стирает opener на всех браузерах.

<a href="http://some.site/" rel="noreferrer">

Бонус: Referer тогда тоже не передается, как следует из названия. Иногда можно пользоваться rel="nofollow"(вы думали оно нужно только для оптимизации поисковиков?) но только на вебките, на файрфоксе не работает.
manandmoon

Тест Тьюринга

Онлайновая общественность взбудоражена новой версией робота телемаркетера, который представляется Самантой Вест и предлагает купить медицинскую страховку. Дело обычное. если б не нюанс: в отличие от обычных телефонных спамилок, этот наследник традиций Хрумера всячески отрицает свою причастность к расе роботов и даже пытается отмазываться от провокационных вопросов. "Какой вчера был день недели?" "Вас плохо слышно"
Получается, надо сказать, неплохо, многие даже верят.



Обсуждения звонков можете почитать, если погуглите телефон (484) 589-5611



Записи разговоров с роботом


Статья в блоге журнала Time


Сайт компании Premier Health Agency, от лица которой идет спам (сайт снесли, но кэш гугля помнит)



Update:
Разоблачение:


posted on dreamwidth [comment count unavailable comments]
manandmoon

Джаваскрипт антидебаг

Очередная фенька для браузеров. Работает в Chrome, Safari и Firebug-e (но не в новом встроенном файрфоксовском дебаггере).
var x = {};
x.__defineGetter__('__proto__', function() {
  console.log('Inside debugger');
  return {};
});
При попытке просмотра переменной x в дебаггере или консоли, срабатывает console.log При нормальном же использовании x в скрипте все остается тихо (конечно, если не лезть в x.__proto__ специально). Понятно, что в настоящем антидебаге вместо вывода на консоль надо подменять значение x или вовсе его стирать. Если кому интересна тема скрытия от браузерных отладчиков, то самый урожайный код в Вебките находится в файле InjectedScriptSource.js. В частности, кусок, отвечающий за описанную фичу, выглядит так:
for (var o = object; injectedScript._isDefined(o); o = o.__proto__)
    this._generateProtoPreview(/** @type {!Object} */ (o), preview, propertiesThreshold, firstLevelKeys, secondLevelKeys, isTable);
posted on dreamwidth [comment count unavailable comments]
manandmoon

Про домены и запреты

Как известно, лучший способ заставить человека спрыгнуть с моста - это написать "Прыгать с моста строго воспрещено!" Повесили табличку, и тут же - посты в блогах, жаркие дискуссии на форумах, нахальные видео на ютюбе. Чуть позже, глядишь, и профильные площадки появляются, с объявлениями "Прыгну с вашей рекламой в руках! За подробностями в личку" Хозяева моста недоумевают: за минувшую неделю на мост зашло девятьсот восемьдесят человек, а сошло трое. Такова волшебная сила таблички.

Это я к чему. Самый известный запрет в веб программировании - это запрет на обмен запросами с другим доменом, знаменитая Same Domain Origin Policy. Как и следовало ожидать, человечество придумало множество методов запрет обойти, запросы отправить: это и JSONP, и фокусы с айфреймами, и совсем-легальный-но-малоиспользуемый заголовок "Access-Control-Allow-Origin". Вот и я решил внести свой малюсенький вклад. Не факт, что я метод придумал первым, но сам я его раньше не видел. Тоже фокус с айфреймами, но не совсем стандартный.

Пусть страница на сайте mysite.com хочет отправить запрос на сайт yoursite.com (предположим, что GET, POST тоже можно, но больше мороки). Как водится страница пакует запрос в URL и пихает в айфрейм:

var ifr = document.createElement('IFRAME');
ifr.style.opacity = "0";
ifr.src = "http://www.yoursite.com/something?q=" + encodeURIComponent(request);
document.body.appendChild(ifr);


yoursite.com принимает запрос, обратбатывает, но ничего не рисует. Вместо этого он отвечает редиректом (да простят меня читатели за пхп, это чисто для иллюстрации, чесслово):

$request = $_GET['q'];
$reply = process(request);
header('Location: ' . 'http://mysite.com/reply?' . urlencode($reply));


Обратный адрес может быть указан в запросе или вычисляться, например. из реферера. По адресу http://mysite.com/reply располагается простейший скрипт:

parent.callback(location.search.substr(1));

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

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

posted on dreamwidth [comment count unavailable comments]
manandmoon

Carberp

Как известно, недавно утекли в публичный доступ исходники троянов Carberp - почти два гигабайта архивов. Вероятно, было украдено содержимое чьей-то рабочей машины - кроме основного трояна в набор попали выдержки из отчетов антивирусных компании, записи чатов, земпляры конкурирующих продуктов и прочий справочный материал.

Желающие ознакомиться могут скачать архив по адресу ниже. Пароль Kj1#w2*LadiOQpw3oi029)K Oa(28)uspeh
mega.co.nz.
Yandex.Disk

Если не хочется качать столько байтов, то для удобства кто-то залил часть проекта на github:
https://github.com/hzeroo/Carberp/tree/master/source%20-%20absource/pro/all%20source

Другие энтузиасты заботливо перевели найденые текстовые файлы на английский язык:
https://docs.google.com/file/d/0B9FW2svQegfPdWJnZ2Z4eDB0djg/edit?pli=1


Охочие до жареных фактов безопасники набросились на код и делятся первыми впечатлениями:

Разбор модуля anti-rapport, обходящего защиту от фирмы Trusteer (от Adlice)

Обзоры от месье Хylitolа с разоблачением уязвимостей в веб-админке и рабочим эксплоитом (Часть 2, Часть 3)
Статья в Коммерсанте об аресте преступных программистов, участвовавшей в разработке софта

Обсуждение слива исходников на kernelmode.info

Пригодятся, возможно, также старые статьи от ESET:

Carberp Gang Evolution: CARO 2012 presentation
Rovnix bootkit framework updated
Win32/Carberp: When You’re in a Black Hole, Stop Digging
Carberp Evolution and BlackHole

Update:
 eas7 обнаружил в свалке личную инфу одного из авторов.

Update2:
обнаружилА


Нахуй руки оторву за такую писанину! -
коментарий в коде Carperp
 

posted on dreamwidth [comment count unavailable comments]