Никита Лихачёв
1 392

Простой парень из Казахстана случайно преодолел барьер в 140 знаков

Все мы давным давно свыклись с ограничением в 140 символов в Твиттере. Однако простой парень из Казахстана случайным образом преодолел этот барьер.

Известно, что ограничение в 140 символов появилось в Твиттере изначально, когда проект задумывался как возможность послать публичное SMS небольшой группе людей. Однако по мере того, как проект приобретал популярность в онлайне, стало понятно, что 140 символов в SMS и 140 символов в интернете — не одно и то же. Если в SMS используются простые символы, длина которых равна одному байту, то в интернете могут иметь место более сложные последовательности. Например, слово café может быть закодировано последовательностью из 5 или 6 байтов (в зависимости от того, как кодировать диакритический знак), хотя визуально очевидно, что в слове всего 4 символа. Иначе говоря, процесс кодирования твита и учёта количества символов гораздо сложнее, чем кажется на первый взгляд.

8 ноября простой парень из Казахстана по имени Анатолий Ли (кореец по национальности) случайным образом обнаружил дыру в алгоритме кодирования Твиттера. Используя QIP 2010 как клиент для Твиттера, Анатолий имел возможность использовать различные кодировки для отправки сообщения. Ему пришла идея отправить в Твиттер слово «ALMATY», набранное не буквами, а математическими символами. Случайным образом отправив сообщение в кодировке CESU-8, он получил следующее сообщение:

Поскольку CESU-8 официально не является частью стандарта Юникод, оказалось, что сообщения, закодированные в CESU-8, некорректно, но обрабатываются Твиттером, однако веб-клиент требует отображать всё в кодировке UTF-8 (стандартной кодировке Юникода). Написанное Анатолием сообщение веб-клиент Твиттера исказил, и вместо каждого символа отобразилось сразу 12 знаков, и общая длина твита оказалась равной 1305 знаков. Ребята из Stack Exchange подробно разобрались в этом первом сообщении, и оказалось, что за цифрами скрываются следующие знаки: 

í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨ í µ í ³ í µ í ³ › í µ í ³

Если использовать данные возможности польностью, можно отослать твит длиной 140×12=1680 знаков, но осмысленный текст всё равно ограничен длиной в 140 символов. Каждый может набрать такое сообщение у себя в QIP 2010, копируя символы из третьего столбца отсюда.

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

Мы взяли интервью у Анатолия.

Анатолий Ли

Чем занимаешься? Работа с кодированием как-то связана с твоей работой?

Вовсе нет. Я простой юзер. который общается в соц.сетях, блоге и твитттере со своими друзьями. К IT я не имею никакого отношения. Я не ожидал такого даже, если честно. Все думают, что я взломал каким-то путем, но, как и отписывался в своём блоге через два часа как затвиттил, это все ради забавы. Мне было просто интересно посмотреть, как разлетится по всему миру твит. Результат превысил просто все ожидания. Цель была только в этом, ну и, конечно, чтоб закрыли дыру. Что они и сделали уже после этого случая.

Говорят, что это далеко не первый случай, когда превышен лимит в 140 символов. Твой твит — это рекорд или можно легко отправить и больше?

Я отправил больше тысячи символов, 1305. Кстати если посмотреть в нете все мои mentions, то первая волна — это Россия, я делал это ночью когда КЗ спал, но путем ретвитов некоторых казахстанцев дошел до России, вот тогда началось разрывание моего твиттера. И немного со всего мира. Но потом приутихло. Хотя ретвитты идут постоянно, их дня три назад было больше 1300, а вот через неделю начала писать Индия, на след. день Бразилия, Мексика, Израиль. Иногда, бывает, натыкаюсь на новости в нете про этот случай. И то когда в Твиттере указывают мой аккаунт.

А можно при помощи кодировки CESU-8 или какой-то другой зашифровывать осмысленные сообщения, длина которых будет больше 140 символов? Или возможен обход только технического ограничения?

А вот это вот нет, жаль, конечно. Но, думаю, и это когда-нибудь можно преодолеть. Прочитал Hackplayers (ресурс, по статье с которого я вышел на Анатолия — прим. ред.) корявым переводом Google. Они мне писали в твитте, только я никому на mentions не отвечал там. Потому что их очень много. Написали Пользователь Россия. Хотя у меня как бы явно написано в профайле месторасположение.

 

Больше скриншотов и комментариев Анатолия можно найти в его личном блоге (но нужно залогиниться, например, при помощи учётки Твиттера). Вообще, конечно, приятно, что головастые ребята со Stack Exchange пишут «I guess some Russian "hakers"», говоря про простого парня из Казахстана. Похоже, нас боятся, а значит, уважают.

 

А у вас кодировка полетела,
Никита Лихачев,
The Twitter Journal

#Статья

{ "author_name": "Никита Лихачёв", "author_type": "self", "tags": ["\u0441\u0442\u0430\u0442\u044c\u044f"], "comments": 2, "likes": 10, "favorites": 0, "is_advertisement": false, "section_name": "default", "id": "46752", "is_wide": "1" }
Популярные материалы
Показать еще
{ "is_needs_advanced_access": true }

Популярные комментарии

Дискуссии по теме
доступны только владельцам клубного аккаунта

Купить за 75₽
Авторизоваться

Преимущества
клубного аккаунта

  • отсутствие рекламы
  • возможность писать комментарии и статьи
  • общение с членами клуба
Подробнее

Преимущества
клубного аккаунта

  • отсутствие рекламы
  • возможность читать и писать комментарии
  • общение с членами клуба
  • возможность создавать записи

Сколько это стоит?

Членство в клубе стоит всего 75₽ в месяц. Или даже дешевле при оплате за год.

Что такое клуб?

Клуб ТЖ это сообщество единомышленников. Мы любим читать новости, любим писать статьи, любим общаться друг с другом.

Вступить в клуб

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Вы не против подписаться на важные новости от TJ?

Нет, не против
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfk" } } }, { "id": 6, "disable": true, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byswn", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "cndo", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223677-0", "render_to": "inpage_VI-223677-0-130073047", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=cndo&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudv", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvc" } } } ]