The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

25.10.2015 10:03  Mimic - утилита для подмены похожих символов, делающая отладку кошмаром

В рамках проекта Mimic реализована утилита для замены символов из набора ASCII на схожие по начертанию символы из таблиц Unicode. Утилита воплощает идею, высказанную одним из разработчиков из компании Twitter, что замена в исходном тексте программы символа точки с запятой (;) на визуально идентичный символ вопроса в греческом алфавите (;) превращает отладку программы в кошмар из-за того, что компилятор начинает указывать на ошибки в, на первый взгляд, корректных участках кода.

Таблицы Unicode содержат множество омоглифов - похожих по начертанию символов. Подобные символы-двойники присутствуют для пробела, восклицательного знака, кавычек, запятых, тире, математических операций, некоторых цифр и различных букв. После обработки утилитой текста, он остаётся визуально идентичен исходному варианту, но на уровне кодов символов содержимое меняется. Кроме режима полной замены, утилитой поддерживается выборочная замена определённого символа и восстановление текста в исходный вид.

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

Дополнение: для Vim подготовлен плагин, подсвечивающий подмену символов в коде.



  1. Главная ссылка к новости (http://developers.slashdot.org...)
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: mimic
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, bOOster (ok), 10:19, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]
  • +7 +/
    Хе. Ну сделаем обратный парсер. Делов то на 5 минут ))
     
     
  • 2.5, A.Stahl (ok), 10:23, 25/10/2015 [^] [ответить]    [к модератору]
  • +8 +/
    А нихрена не 5 минут. Слишком от контекста зависит. Вот и думай что было в тексте изначально: точка с запятой и греческий вопросительный знак.
    Обратная задача в общем виде не решаема вообще.
     
     
  • 3.21, виндотролль (ok), 11:34, 25/10/2015 [^] [ответить]    [к модератору]
  • +3 +/
    в общем виде — да. Но если известны  начальные условия — имели код с символами ASCII — то решается элементарно.
     
  • 3.23, тоже Аноним (ok), 11:40, 25/10/2015 [^] [ответить]     [к модератору]
  • +5 +/
    Да ладно Если речь об исходниках, то обратную замену можно смело делать везде, ... весь текст скрыт [показать]
     
     
  • 4.61, Аноним (-), 10:51, 26/10/2015 [^] [ответить]    [к модератору]  
  • +2 +/
    > И слова, в которых кириллица перемешана с латиницей, даже в литералах крайне маловероятны.

    https://translate.google.com/#ru/sr/%D1%8F%D0%B7%D1&#

     
     
  • 5.62, тоже Аноним (ok), 11:41, 26/10/2015 [^] [ответить]     [к модератору]  
  • –1 +/
    Хм туше Однако замена JE3ИK на JЕЗИК критична только в двух случаях ког... весь текст скрыт [показать]
     
     
  • 6.66, . (?), 16:57, 26/10/2015 [^] [ответить]    [к модератору]  
  • +/
    Да всё правильно. Ну будет у тебя трэш в строках, неприятно, но отладке не помешает никак.
     
  • 6.70, Sinot (ok), 19:11, 26/10/2015 [^] [ответить]    [к модератору]  
  • +/
    Например в примерах на каких-нибудь сайтах-учебниках с "уникальным" контентом. Иногда встречаются сайты с подобной защитой от копирования.
     
  • 3.30, Аноним (-), 12:57, 25/10/2015 [^] [ответить]    [к модератору]  
  • +18 +/
    надо сначала распечатать, а потом - распознать.
     
  • 3.42, vit (??), 18:22, 25/10/2015 [^] [ответить]    [к модератору]  
  • +1 +/
    а какая хрен разница. ну заменишь греческий впрос на точку запятой.
    Человек прочитает и не заметит
    а программа скомпилиться

    П_р_им_е_нить

    П_p_им_e_нить

     
     
  • 4.43, vit (??), 18:26, 25/10/2015 [^] [ответить]     [к модератору]  
  • –1 +/
    человек разницы не увидет a 928 959 953 959 962 949 943 963... весь текст скрыт [показать]
     
     
  • 5.64, тоже Аноним (ok), 14:16, 26/10/2015 [^] [ответить]    [к модератору]  
  • +/
    Тот редкий случай, когда действительно имеет смысл поиграть шрифтами ;)
     
  • 3.55, pavlinux (ok), 02:19, 26/10/2015 [^] [ответить]     [к модератору]  
  • +/
    Какого контекста, речь про ошибки препроцессора У него нет контекста, а есть ... весь текст скрыт [показать]
     
  • 2.69, Elhana (ok), 18:17, 26/10/2015 [^] [ответить]    [к модератору]  
  • –1 +/
    Так в самой утилите есть режим обратной замены.
     
  • 1.2, Аноним (-), 10:21, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    А диссернет так можно обойти?
     
     
  • 2.17, serega (??), 11:05, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    Зачем?
     
  • 2.20, Аноним (-), 11:31, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    > А диссернет так можно обойти?

    Мысли читаешь. Но их представитель говорил, они распознают и похожие.

     
     
  • 3.31, Аноним (-), 12:58, 25/10/2015 [^] [ответить]    [к модератору]  
  • +4 +/
    После введения запрета на пиратское ПО распознание проводится аспирантами.
     
  • 1.3, A.Stahl (ok), 10:21, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • –3 +/
    >может применяться для

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

     
     
  • 2.6, bOOster (ok), 10:23, 25/10/2015 [^] [ответить]    [к модератору]  
  • –1 +/
    В чем она сложнее то? Тыж не с визуальным отображениями работаешь а с ASCII/UNICODE..
     
     
  • 3.7, A.Stahl (ok), 10:24, 25/10/2015 [^] [ответить]    [к модератору]  
  • –1 +/
    Задача контекстнозависима. Как ты определишь нужен здесь греческий вопрос или точка с запятой?
     
     
  • 4.8, bOOster (ok), 10:28, 25/10/2015 [^] [ответить]     [к модератору]  
  • +/
    Аааа, ты в общем контексте Ну тады да Я остановился на заголовке новости и при... весь текст скрыт [показать]
     
  • 4.9, Знающий Истину (?), 10:46, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    везде точка с запятой
    .!.  .!.
     
     
  • 5.45, Michael Shigorin (ok), 19:23, 25/10/2015 [^] [ответить]    [к модератору]  
  • –2 +/
    > везде точка с запятой

    Предложил правку, где во втором месте ";" (;) из твита по ссылке.

    Да, тема старая, но только раскинувшаяся шире с юникодом...

     
  • 4.56, pavlinux (ok), 02:27, 26/10/2015 [^] [ответить]    [к модератору]  
  • +/
    > Как ты определишь нужен здесь греческий вопрос или точка с запятой?

    В стандарте на язык прописано.  

     
  • 2.19, EHLO (?), 11:25, 25/10/2015 [^] [ответить]    [к модератору]  
  • +6 +/
    >А это задачка посложнее будет. На много порядков сложнее.

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

    Аналогично можно с кодом поступить: нашел обфускацию, значит либо пасхалочка, либо нафиг такой "продукт".

     
  • 1.4, bOOster (ok), 10:22, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Помню во времена моей молодости, DOS НортонКоммандер и всякое такое - была утилита переворачивающая экран вверхтормашками. Обозвали утилиту как 255 символ и вставили в autoexec.bat. Наш товарищ "головой монитор разбил" ))))
     
     
  • 2.12, Аноним (-), 10:48, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    А есть подобное для текстового режима linux?
     
     
  • 3.16, GotF (ok), 11:03, 25/10/2015 [^] [ответить]    [к модератору]  
  • +1 +/
    > А есть подобное для текстового режима linux?

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

     
  • 3.32, Аноним (-), 13:00, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    в линуксе нет текстового режима - там есть терминал. это немного другое.
     
  • 3.57, pavlinux (ok), 03:15, 26/10/2015 [^] [ответить]     [к модератору]  
  • +/
    для VGA 80x25 1 Замутить terminfo файлик, скомпилить 2 Закинуть в usr sha... весь текст скрыт [показать]
     
  • 2.33, ano (??), 13:39, 25/10/2015 [^] [ответить]    [к модератору]  
  • +5 +/
    ti.com
     
     
  • 3.41, Аноним (-), 17:51, 25/10/2015 [^] [ответить]    [к модератору]  
  • +1 +/
    Точно! :)
     
  • 3.46, Michael Shigorin (ok), 19:29, 25/10/2015 [^] [ответить]    [к модератору]  
  • +2 +/
    > ti.com

    Фигассе память :)

     
  • 3.58, Аноним (-), 08:03, 26/10/2015 [^] [ответить]    [к модератору]  
  • –1 +/
    Друг пояснить просит
     
  • 1.10, YetAnotherOnanym (ok), 10:47, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +7 +/
    Когда я занимался составлением русских правил для SpamAssassin'а, обнаружил, что в русскоязычном спаме широко применяется метод смешивания русских и латинских букв, а также цифр (ноль вместо О, три вместо З, и т.д). Сделал правило, по которому за одно только смешивание русских и латинских букв в одном слове, при наличии ещё некоторых признаков, письмо получало некоторый балл, даже без анализа текста.
    Так что тут тоже самое - просто ищем символы выше 0x80 там, где их быть не должно, и всё.
     
     
  • 2.67, Аноним (-), 17:26, 26/10/2015 [^] [ответить]    [к модератору]  
  • –1 +/
    Отличная идея! Как раз недавно просматривал папку спама и удивлялся, как гуглу удаётся так хорошо настроить фильтры. У вас нет статей о подобном?
     
     
  • 3.77, YetAnotherOnanym (ok), 19:27, 28/10/2015 [^] [ответить]    [к модератору]  
  • +/
    Нет, статей у меня нет. Если есть желание - можете глянуть сами правила - http://sa-russian.narod.ru/
    Я их, если честно, забросил, потому что я сейчас почтой не занимаюсь...
     
  • 2.75, Очередной аноним (?), 16:18, 27/10/2015 [^] [ответить]     [к модератору]  
  • +/
    наверное тут ключевое там, где их быть не должно Если это листинг какой... весь текст скрыт [показать]
     
  • 1.11, Аноним (-), 10:47, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • –3 +/
    Дaвнo yжe зaмeняю. Правда из-за обессивно компульсивного синдрома и не в коде, в в сообщениях.
     
     
  • 2.22, Admino (ok), 11:34, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    И какие символы ты заменил в этом комментарии, колись?
     
     
  • 3.29, Аноним (-), 12:57, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    В первом предложении - очень многие.
     
     
  • 4.47, Michael Shigorin (ok), 19:30, 25/10/2015 [^] [ответить]    [к модератору]  
  • +1 +/
    > В первом предложении - очень многие.

    [CODE]$ export LANG=C
    $ echo <d0><94>a<d0><b2><d0><bd>o y<d0><b6>e <d0><b7>a<d0><bc>e<d0><bd><d1><8f><d1><8e>.^C[/CODE]

     
     
  • 5.59, Аноним (-), 08:15, 26/10/2015 [^] [ответить]    [к модератору]  
  • –2 +/
    Какой это язык и в чём суть этого кода? Смахивает на баш.
     
     
  • 6.71, Аноним (-), 19:15, 26/10/2015 [^] [ответить]    [к модератору]  
  • +/
    Вау, нет объяснений, а только один минус.
    Мне кажется или тот кто его поставил таки понимал суть. <,>, код символа (кажется).
     
  • 1.13, Аноним (-), 10:52, 25/10/2015 [ответить] [показать ветку] [···]     [к модератору]  
  • –1 +/
    Я использовал эту особенность когда регистрировался на oтветах Google после бана... весь текст скрыт [показать]
     
     
  • 2.14, Аноним (-), 10:53, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    PS: также можно использовать невидимый нулевой пробел.
     
  • 2.39, KOT040188 (?), 16:16, 25/10/2015 [^] [ответить]    [к модератору]  
  • +2 +/
    Скучаете по ещё одному бану? ヅ
     
  • 1.15, Dkg (?), 10:57, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Разработчикам IDE работы прибавиться.
     
     
  • 2.18, Anonymous_ (?), 11:07, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    Для Vim уже есть плагин
    https://github.com/vim-utils/vim-troll-stopper
     
  • 2.34, Петушок (?), 13:50, 25/10/2015 [^] [ответить]    [к модератору]  
  • +5 +/
    > Разработчикам IDE работы прибавиться.

    http://tsya.ru

     
  • 2.44, Аноним (-), 18:40, 25/10/2015 [^] [ответить]     [к модератору]  
  • +/
    Что сделае i т i Прибави i тся i Oн Что делае i т i Добивается Что с... весь текст скрыт [показать]
     
  • 2.72, аанноонниимм (?), 21:11, 26/10/2015 [^] [ответить]    [к модератору]  
  • +1 +/
    >Разработчикам IDE работы прибавиться.

                                     ^^^^^
    И Розенталю

     
  • 1.24, Аноним (-), 11:57, 25/10/2015 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    тоже мне идея - периодически натыкался на такую проблему при копировании примеро... весь текст скрыт [показать]
     
     
  • 2.28, all_glory_to_the_hypnotoad (ok), 12:43, 25/10/2015 [^] [ответить]     [к модератору]  
  • +/
    Стоит ли это понимать будто вы кодите в ворде Сценарий без ворда выглдяит как-т... весь текст скрыт [показать]
     
     
  • 3.37, Кукаретик (?), 15:41, 25/10/2015 [^] [ответить]    [к модератору]  
  • +9 +/
    >Стоит ли это понимать будто вы кодите в ворде?

    А в чём ещё кодить?

     
     
  • 4.68, Аноним (-), 17:29, 26/10/2015 [^] [ответить]    [к модератору]  
  • +/
    Некоторые ещё и /etc/passwd в нем редактируют.
     
  • 3.40, systemd_anonymousd (?), 17:44, 25/10/2015 [^] [ответить]    [к модератору]  
  • +2 +/
    > Сценарий без ворда
    > выглдяит как-то слишком фантастическим, ну просто во всём интернете навряд ли
    > найдётся онтопиковый ресурс

    Да не так и редко попадается. WordPress этим грешил раньше, по-моему. Некоторые форумы.


     
  • 2.48, Michael Shigorin (ok), 19:32, 25/10/2015 [^] [ответить]    [к модератору]  
  • +1 +/
    > тот же word такую подставу автоматически делает.

    word, который press -- похоже, тоже.

     
  • 1.25, Аноним (-), 12:10, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Не кормите троля
     
  • 1.26, Аноним (-), 12:29, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +4 +/
    Мне больше всего бесит буквы С и C...
     
     
  • 2.38, Кукаретик (?), 15:43, 25/10/2015 [^] [ответить]    [к модератору]  
  • +3 +/
    Операторы, вбивая данные, так ошибаются ежедневно.
     
  • 1.27, all_glory_to_the_hypnotoad (ok), 12:38, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    > Кроме шуток над коллегами, замена символов может применяться для скрытия текста от автоматизированных систем разбора, механизмов цензурирования и поисковых систем.

    глупости, давно уже все, кому нужно, умеют нормальизовывать текст с учётом таких трансформаций. Это самое простое что в таких системах делается с текстом.

     
  • 1.35, Аноним (-), 14:27, 25/10/2015 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    с буквами с такое нередко случается совершенно случайно на макбуке в режиме ... весь текст скрыт [показать]
     
     
  • 2.36, Eklykti (?), 15:30, 25/10/2015 [^] [ответить]    [к модератору]  
  • +6 +/
    > на макбуке в режиме "у каждого окна свой язык" переключение языка при переключении в окно происходит с задержкой

    Глобально, надёжно. Think different!

     
     
  • 3.49, Michael Shigorin (ok), 19:34, 25/10/2015 [^] [ответить]    [к модератору]  
  • +/
    > Think different!

    d1ff3r3n7, ага.

     
  • 1.51, Аноним (-), 20:03, 25/10/2015 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    не почти все эти случаи можно в обратку проверить, другое дело что подобная пров... весь текст скрыт [показать]
     
  • 1.52, Аноним (-), 21:02, 25/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    " highlight non ascii symbols
    highlight nonascii guibg=DarkGreen ctermbg=DarkGreen term=standout
    au BufRead * syntax match nonascii "[^\u0000-\u007F]"
     
  • 1.53, Аноним (-), 02:06, 26/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    класс, теперь легче помогать школьникам и студентам с "напишите программу за меня". С радостью!
     
  • 1.60, IMHO (?), 10:17, 26/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    ну и свободка
     
  • 1.63, Аноним (-), 13:46, 26/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    енжой йор юникод
     
     
  • 2.65, тоже Аноним (ok), 14:19, 26/10/2015 [^] [ответить]    [к модератору]  
  • +/
    Для кроссплатформенных исходников нормальных вариантов только два: либо ansi, либо юникод.
    Все остальное гарантирует пляски с бубном на ровном месте.
     
  • 1.73, Аноним (-), 23:07, 26/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Почему компиляторы не могут нормализовать?
     
  • 1.76, Аноним (-), 18:23, 27/10/2015 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Сдавайте курсачи в напечатанном виде.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor