Передо мной не стояла задача придумать протокол, достаточно удобный для практического применения, и это общая черта любых соревнований по спортивному программированию — если вам не нравятся его правила, не занимайтесь им. Под современными системами передачи данных подразумевается протокол TCP? В задаче не указано, что этот протокол его использует. Первый раз слышу, если честно, что в сетях Ethernet используется такой же бит четности, как в передачах по COM-порту, можно ссылку? Задача состояла в реверсинге сетевого протокола, а не в придумывании своего и обнаружении, что они совпадают. "Грамотно" спроектированный протокол, которым протокол из задачи, конечно, не является, не представил бы для участников никакой трудности.
Мда... короче нада было хотябы штук 5-10 примеров "отловленных пакетов" дать =) 3 явно мало для быстрого решения задачи =( канечно зная решения можно сказать "какиеже вы идиоты, нада было выкинуть лишние биты а оставшиеся 7 бит обратно в 8 собрать" => чуть больше данных и задача решаема Вопрос про условие в 50000 остался открытым -> типа условие для отвода глаз =) ??? 01604 = 900 = 384h - ещё раз скажу - для быстрого решения - мало данных (ну или последовательность с рабочими свичами чуток подлинее =)... насколько я понимаю для олимпиады нужно быстрое решение, так что ваше задание на "как повезет" =(
Вспомнился анекдот: - Угадай что у меня в кармане на "ж" - Низнаю. - Жажигалка! А теперь угадай что на "и" - Низнаю - Ище одна жажигалка. Ultrin Faern указал вам на все ошибки и как стало уже понятно задача в стиле "разберите что я намутил" никак не может служить для проверки знаний. На приведенном вами сайте я нашел: "Логика — главное оружие программиста. Она позволяет решать сложнейшие задачи, ориентироваться в незнакомых областях и познавать необходимые технологии." Так вот чтобы было понятно Логика - это и есть умение здраво мыслить и оценивать ситуацию. Данный протокол не логичен в корне. Во вторых в нем не найдены какие-либо данные связанные с последовательностью пакетов, протокол не контролирует целостность отправленных пакетов. Максимум что мы можем передать -1514 байт по ethernet в одном пакете, массив живых считчей в данные рамки не умещается если учесть что кол-во свитчей может быть 50000 (это 100 килобайт если передавать в WORD'ах). Поэтому логично предположить что протокол используется поверх TCP который отвечает за правильную последовательность и целостность передаваемых пакетов. Следовательно ожидался единичный байт отвечающий за доп. проверку, но не более. Использовать такой ненадежный метод представления данных (разбиранием и собиранием битов) в протоколе который предназначен для использования в крит. ситуациях не есть логично. Да и не знать откуда начинаются номера битов и сказать что 8й используется для контрольной суммы при этом еще раз введя кодеров в заблуждение это признак того что вам противопоказано программирование протоколов. Мне вообще ваш метод понравился нестандартностью, но ужас в том что этот тест используется для проверки знаний на олимпиаде! Ведь возможно что вполне нормальный кодер пролетит из-за этого задания (как я однажды встретив задание по вычислению веса какого-то дырявого прямоугольника).
im1111 Правильно, олимпиадные задачи должны решаться четко и однозначно (но нетривиально!), смотрите задачи математических олимпиад.
Быстрое решение задачи не требовалось, контест длился 2 недели. 50000 — это условие, которое позволяет думать о word. Этот контест (и это написано в его слогане) проверяет (или пытается проверить) не знания, а логику, конкретно эта задача способность к анализу и поиску "красивого" и короткого ответа. Многочисленные нумерологические изыски и участников и несколько в этой теме иллюстрируют, что я хочу сказать Здравое мышление и логика — вещи не только не совпадающие, но и достаточно часто противоположные. Не критикуйте протокол, критикуйте задачу. В реальных задачах по проектированию протоколов, которые мне иногда приходится решать, не стоит задача запутать реверсера. crypto: Ваше высказывание об олимпиадных заданиях несколько узко. Посмотрите, к примеру TopCoder Marathon.
Не надо опять запутывать, понятия несколько виртуальные, но определения к ним можно применить. )))) Ло́гика (др.-греч. λογική «наука о рассуждении», «искусство рассуждения» от λόγος — «речь», «рассуждение»). * Наука о формах, методах и законах интеллектуальной познавательной деятельности, формализуемых с помощью логического языка. * Наука о достижении истины в процессе познания с помощью выводного знания — знания, полученного опосредованным путём, посредством не чувственного опыта, а из знаний, полученных ранее; знания, полученного разумом. * Наука о мышлении * Научная дисциплина, изучающая способы доказательств и опровержений. Здравый переводится не иначе как разумный/правильный. То есть правильное мышление (рассуждение) = логика. Полгодика назад тут в разделе по криптографии постились различные задачки, так вот там были именно задачки на логику, посмотрите вам будет полезно.
Не нужно разбивать эту идиому на 2 части. Здравый смысл — то, с чем большинство людей согласятся, то, что большинством людей принято за истину в повседневной жизни. (http://ru.wikipedia.org/wiki/%D0%97%D0%B4%D1%80%D0%B0%D0%B2%D1%8B%D0%B9_%D1%81%D0%BC%D1%8B%D1%81%D0%BB). Т.е. это бытовое мышление, мало имеющее общего с логикой и пасующее на простейших парадоксах.
Такие задачи к логике \ мышлению и иже с ними никакого отношения не имеют. Эти задачи проверяют только одно - удачливость испытуемого.
Sharp Если ты у нас такой умный и обладающий логикой, то давай я замучу подобный же черезжопный протокол, а ты его угадаешь.
Agent666, не находите, что использование 7 бит данных на байт, единственная хитрость этого протокола, немного маловато для того, чтобы называть его «черезжопным»? А если переставить 2 фиксированных бита в каждом байте, он тоже станет невзламываемым? В то время, как ломают гигабайты защищенного кода, вскрывают протекторы с полиморфизмом и виртуальными машинами, находят и реверсят сложнейшие руткиты, ведут поиск ошибок в коде, связанных с взаимодействием десятков крупных модулей, вы спасовали перед удалением восьмого бита в каждом байте?
Ну так эти вещи делаются не путем гадания на кофейной гуще, а путем реверсинга кода конкретной реализации. Если бы вы выложили тут бинарник программы реализующей ваш протокол, то будь он хоть в 100 раз сложнее, его бы разреверсили за пару часов. З.Ы. если я сделаю свой черезжопный протокол, вы уверены что сможете по дампам двух пакетов полностью понять его формат?
Четырех пакетов из условия вполне достаточно для реверсинга протокола. Большее количество примеров ничего не дало бы (хотя действительно, стоило бы для предупреждения их предоставить), только запутало бы. Статистический подход здесь бесполезен. Могу и про это. В то время как атомные силовые микроскопы собирают логотипы всех, кого ни попадя на металлической подложке, «Нанотех» доблестно осваивает выделенные им 130 миллиардов рублей, а нейронные сети распознают CAPTCHA лучше человека, вас смутил лишний бит в байте? А что, если бы там были, например, коды Хэмминга?
Sharp Четырех пакетов недостаточно, поскольку они не связанны логической зависимостью. Проще говоря, при данных 4х пакетах, можно сконструировать 5й таким образом, что все предыдущие догадки на счет протокола сойдут на нет. И спорить тут бессмыслено. В конечном счете в чем вы нас пытаетесь убедить? В том что весь васм и люди на ваших тестах тупые и неспособные решать нестандартные задачи?? Хотите показать свое превосходство..?
Если вы можете предоставить примеры хотя бы 2 протоколов, которые проще, чем ответ, и оба удовлетворяют пакетам, предоставьте. Если не можете — ваше высказывание о нелогичности задачи всего лишь ваша гипотеза. Я всего лишь пытаюсь выяснить, связана ли ваша реакция действительно с тем, что задача не решается без знания ответа, либо с тем, что вы не потратили и 5 минут на раздумье и сформировали мнение до ответа, а ответ оказался неожиданно простой. И wasm, и его посетителей я очень уважаю, именно поэтому выбрал его для проверки на решабельность, когда мне показалось, что задача сложнее, чем я думал.
Sharp Я тебе попробую обьяснить, в эта задача РЕШИМА, НО в ней есть тупой ПЕРЕГОР и ВЕЗЕНИЕ т.е. с чего вдруг мы должны "выкидывать" именно первый бит, почему не 2,3,7 но это еще что по сравнению с перегрупировкой байта это антилогично для протоола, привиди пример реализации обработчика протокола, а мы на его красоту посмотрим