Конкурс "Системный Администратор 2013", Первые IT-шные олимпийские игры |
Здравствуйте, гость ( Вход | Регистрация )
Конкурс "Системный Администратор 2013", Первые IT-шные олимпийские игры |
25.7.2013, 16:33
Сообщение
#1
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Конкурс IT Starz 2013 Поздравляю коллег, всех IT'шников с наступающим днем системного администратора! Если кто помнит в прошлом году на страницах нашего форума активно обсуждался Конкурс "Системный Администратор 2012". В этом году традиционный конкурс для системных администраторов стартует в День системного администратора - 26 июля. Цитата С каждым годом наш проект рос и становился лучше. В 2013 году мы выводим его на совершенно новый уровень: сильно расширяем аудиторию, добавляем зачет для программистов, командный зачет, еженедельные состязания для всех участников. Регистрируйтесь на Первых Айтишных Олимпийских Играх прямо сейчас, и вы получите приглашение первым! А 26 июля вас будет эдать эксклюзивный ивент, приуроченный ко Дню системного администратора. (с) http://itstarz.ru/ p.s. В 15:00 по Москве, по информации от организаторов, нас ждет увлекательный ивент с эксклюзивным призом. Подробности на официальном сайте конкурса. p.p.s. Цитата Каждую неделю среди участников со статусами Гуру и Профи проводится розыгрыш айпадов. Главный приз для победителей Квеста – поездка в Грецию на двоих. Команда, которая займёт первое место по итогам гонки, получит квадракоптер. Промо-коды
Теги: Системный администратор 2013, конкурс ко дню системного администратора, день сисадмина, конкурс ко дню сисадмина, itstarz.ru конкурс, sysadmin day, ideco, первые it-шные олимпийские игры, первые айтишные олимпийские игрыпервые it-шные олимпийские игры, Конкурс IT Starz 2013 -------------------- |
|
|
31.7.2013, 22:42
Сообщение
#2
|
|||
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Здесь я думаю мы попытаемся разбирать вопросы, но без особенного фанатизма. Т.е. так, чтобы "натолкнуть на мысль", и в то же время не давать готовых ответов. Начну я не с самого начала, а с вопроса №5.
Вопрос 5 Системный администратор Василиас устроился на новую работу и первым делом решил понять, как работает корпоративная сеть. От предшественника ему осталась схема маршрутизации, нарисованная неровной рукой на мятом клочке бумаги. Через маршрутизатор прошли пакеты со следующими IP заголовками: Код 45 00 00 3d 0f 6d 40 00 40 11 1c 63 1f 50 8b 18 0a 50 5a 28 ... 45 00 00 26 be 16 40 00 40 11 f8 e6 0a 00 a8 c0 10 0a c0 ff ... 45 00 00 54 00 00 40 00 40 01 30 8d 0a 50 3e 23 c0 a8 01 01 ... 45 00 00 26 41 1e 40 00 01 11 ba 3f 0a 00 a8 c0 c0 a8 0b 01 ... На сколько увеличатся счетчики отправленных пакетов на интерфейсах маршрутизатора? Ответ вводить в следующем формате: ppp0=x ppp1=x ppp2=x Первое что приходит на ум при решении данного вопроса - прочитать про формат заголовков IP. Прочитав, понимаем, что разбирать формат вручную - крайне муторно и что процесс неплохо бы автоматизировать. Тут на ум приходит Wireshark, который отлично разбирает любые пакеты. Но как "затолкать" туда необходимую информацию? Сходу я понял что Wireshark Version 1.8.3 (SVN Rev 45256 from /trunk-1.8) отлично понимает формат K12 Text File, в котором первый пакет будет выглядеть примерно так: Код +---------+---------------+----------+ 18:01:41,000,000 ETHER |0 |20|52|45|43|56|00|20|53|45|4e|44|00|08|00|45|00|00|3d|0f|6d|40|00|40|11|1c|63|1 f|50|8b|18|0a|50|5a|28|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00| 0 0|00|00|00|00|00| Что ж ... добавим туда остальные пакеты по тому же принципу, т.е. подставив заголовок Ethernet фрейма - Ethernet II, Src: Send_00 (20:53:45:4e:44:00), Dst: Receive_00 (20:52:45:43:56:00) и получим на выходе примерно следующее: Где мы видим, что через маршрутизатор прошло 3 UDP и 1 ICMP пакет. Т.к. часть относящаяся к UDP пакету у нас "потеряна", то поле Length протокола UDP имеет нулевую длину. Т.е. размер данных прошедших через интерфейс маршрутизатора (под данными будем понимать размер заголовка пакета, плюс размер данных, т.е. фактически весь траффик) нужно смотреть в поле Total Length IPv4 (длина пакета в октетах, включая заголовок и данные. Минимальное корректное значение для этого поля равно 20, максимальное — 65 535). Для первого пакета Total Length = 61. Также мы знаем IP адрес отправителя и получателя: Код Internet Protocol Version 4, Src: 31.80.139.24 (31.80.139.24), Dst: 10.80.90.40 (10.80.90.40) На основании которого мы можем определить через какие интерфейсы прошел пакет. p.s. Пакеты из задания в формате Wireshark / TcpDump - q5packets.7z ( 250 байт ) Кол-во скачиваний: 264 p.p.s. онлайн ip калькулятор - может помочь, не в этом задании, а вообще, с расчетом подсетей и масок. -------------------- |
||
|
|||
1.8.2013, 2:16
Сообщение
#3
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Вопрос 16
У одного пользователя провайдер настроил примитивный контент-фильтр. Конечно же у пользователя сломалось обновление его любимой программы. Пользователь негодует и утверждает, что во всем виноват админ веб-сервера. Но мы-то знаем что это не так! До провайдера не дозвониться, доступа к компьютеру пользователя нет. Однако, известно, что его программа постоянно пытается скачать файл с вашего сервера по URL: http://1.2.3.4/data.dat После долгих разбирательств вы поняли, что контент-фильтр не пропускает пакеты в которых есть слово: test Менять содержимое файла нельзя. Перезапускать или останавливать веб-сервер нельзя. Мысли Итак, у нас есть доступ только к серверу. На клиенте сделано: Код iptables -A INPUT -m string --string test --algo kmp -p tcp -j REJECT --reject-with tcp-reset Т.е. пакеты содержащие строку тест не проходят. Сам файл /tmp/data.dat имеет такой вид: Код aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaa test aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Клиент пытается скачать его с помощью wget. Естественно, что не получается. У меня пока что никаких мыслей нет. Вернее есть, траффик не между клиентом и сервером не должен передаваться в открытом виде, чтобы простейший анализатор пакетов в iptables на клиенте не заметил в нем паттерна test. Как вот только это сделать, если мы имеем доступ только к серверу? Включить на нем gzip? Или же https? Начал мудрить в сторону openssl с опцией s_server, но клиент коннектится четко к http://1.2.3.4/data.dat ... т.о. если мы не трогаем сам mini-httpd (именно на нем у нас web-сервер), то мы должны все входящие с 80 порта куда-то переадресовать. Допустим на наш HTTPS сервер и тогда wget спокойно заберет файл ... но это пока только на уровне мыслей. Если есть идеи - высказывайте, будем рады. -------------------- |
|
|
1.8.2013, 21:19
Сообщение
#4
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Вопрос 13
Этот вопрос касается создания IPv6-in-IPv4 туннеля. Предварительно можно ознакомиться с этими материалами: http://habrahabr.ru/post/85777/ http://liberatum.ru/blog/nastroika-ipv6-v-linux http://www.networkcenter.info/calcs/v4v6convert http://tomsalmon.eu/2011/02/ipv6-over-ipv4...nux-using-6to4/ Ну а далее переходим к созданию самого туннеля: Код Starting Linux JSLinux started, initializing... root@ipv6-clnt:/# ip tunnel add tun6to4 mode sit remote 1.2.3.4 local 5.6.7.8 root@ipv6-clnt:/# ip link set dev tun6to4 up root@ipv6-clnt:/# ip -6 addr add fec0::1/128 dev tun6to4 root@ipv6-clnt:/# ifconfig tun6to4 tun6to4 Link encap:IPv6-in-IPv4 inet6 addr: fec0::1/128 Scope:Site inet6 addr: fe80::506:708/128 Scope:Link UP POINTOPOINT RUNNING NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@ipv6-clnt:/# ip -6 r fe80::/64 via :: dev tun6to4 metric 256 expires -21sec mtu 1480 advmss 1420 ho plimit 0 root@ipv6-clnt:/# ip -6 route add fec0::/64 dev tun6to4 На второй машине аналогично. Profit -------------------- |
|
|
1.8.2013, 22:07
Сообщение
#5
|
|
Newbie Группа: Пользователи Сообщений: 13 Регистрация: 3.8.2012 Пользователь №: 1210 |
Если есть идеи - высказывайте, будем рады. По поводу https - думаю, не вариант, т.к. перезагружать сервер нельзя. Есть такая идея: а что, если файл разделить на два пакета (или больше) как раз по слову test изменением величины MTU (чтобы части слова оказались в разных пакетах). Теоретически - должно прокатить, т.к. фильтр провайдера примитивный Осталось только подобрать размер MTU |
|
|
1.8.2013, 23:43
Сообщение
#6
|
||
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
По поводу https - думаю, не вариант, т.к. перезагружать сервер нельзя. Есть такая идея: а что, если файл разделить на два пакета (или больше) как раз по слову test изменением величины MTU (чтобы части слова оказались в разных пакетах). Теоретически - должно прокатить, т.к. фильтр провайдера примитивный Осталось только подобрать размер MTU Отличная идея ... и более простая. Я забрался в какие-то дебри, а-ля запустить новый http сервер, включить на нем принудительно gzip для передачи текстовых файлов, перенаправить запрос пользовательской машины с помощью iptables на новый сервер и т.п. Сейчас кручу в JSLinux tcpdump: Код tcpdump -n -i sl0 host 1.2.3.4 and port 80 -X -t -X задает вывод дампа в шестнадцатеричном и ASCII-формате без заголовков канального уровня. Эта опция может быть очень удобна при анализе новых протоколов. p.s. 2sergobx: Твоя догадка подтвердилась. На скриншоте почти разрубленный пакет )) Еще несколько пассов руками и клиент успешно скачает data.dat ... -------------------- |
|
|
||
2.8.2013, 17:17
Сообщение
#7
|
|
Junior Member Группа: Пользователи Сообщений: 44 Регистрация: 11.8.2012 Пользователь №: 1267 |
Предлагаю просто включить сжатие, содержимое файла при этом не измениться =)
Сообщение отредактировал Decker - 2.8.2013, 18:07
Причина редактирования: Оверквотинг
|
|
|
2.8.2013, 18:09
Сообщение
#8
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Предлагаю просто включить сжатие, содержимое файла при этом не измениться =) Вначале я тоже шел по этому пути, однако, как я понял, в mini-httpd принудительно активировать gzip для mime текстовых файлов - нельзя. p.s. Просьба не давать прямого ответа на этот вопрос тут Сама идея / направление уже высказана sergobx - этого более чем достаточно. -------------------- |
|
|
3.8.2013, 8:08
Сообщение
#9
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
А кто-нибудь решил Вопрос 8 из теста для разработчиков, про crc32? Я так понимаю там сначала значение salt надо подобрать. А какой диапазон для перебора брать? Сколько символов, каких? Или я не в том направлении иду?
-------------------- |
|
|
3.8.2013, 23:15
Сообщение
#10
|
|
Junior Member Группа: Пользователи Сообщений: 44 Регистрация: 11.8.2012 Пользователь №: 1267 |
Кто нить получил Гуру?
Вопрос 5 Кстати там один адрес заканчивается на .255 :-) |
|
|
4.8.2013, 1:12
Сообщение
#11
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Кто нить получил Гуру? Вопрос 5 Кстати там один адрес заканчивается на .255 :-) А TTL в одном из пакетов ... тссс ... ) p.s. Разгадываем в команде тест для разработчика ... вроде бы все разобрали ... кроме вопроса с crc32 ... будем признательны за идею. На данный момент написан брут, который подбирает значение salt, проверяя три равенства. Однако перебор по большинствую общедоступных словарей ничего не дал, может быть дело в самой идее? Изначально мы хотели подобрать salt и вычислить ответ. Однако критерий для перебора неясен. Может быть символы добавлящиеся после salt'а это окончание английских слов, а salt общий корень у них ... а может ... вообщем пока не ясно. p.p.s. 1. А может быть стоит еще ознакомиться с Как подделывают CRC16/32 ... 2. А еще меня волнует другой вопрос, можно ли по имеющимся данным, без знания salt как-то рассчитать ответ. Может быть значения CRC при постоянной соли, как-то напрямую зависят от слов с которыми объединяется salt? -------------------- |
|
|
4.8.2013, 4:20
Сообщение
#12
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Кстати, благодаря этому конкурсу я познакомился с замечательным сервисом "программирования в облаке" - http://ideone.com/ - Online IDE & Debugging Tool >> C/C++, Java, PHP, Python, Perl and 40+ compilers and interpreters. Более 40 компиляторов и интерпретаторов доступны онлайн, хотите скомпилировать и посмотреть результат выполнения программы на C++ / Python или еще каком-нибудь языке? Теперь нет ничего проще, все можно сделать в окне собственного браузера.
-------------------- |
|
|
4.8.2013, 15:43
Сообщение
#13
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Уффф ... вопрос с CRC разрешился. Оказывается существует несколько алгоритмов подсчета CRC: CRC-32 и CRC-32B, который используется в основном используется в форматах zip и png. Так вот в задании речь идет именно о CRC32B (!) ... т.к. если на PHP считать хеши как:
Код echo "CRC32 : " . hash('crc32',$salt . 'away') . "\r\n"; echo "CRC32B: " . hash('crc32b',$salt . 'away') . "\r\n"; То при верном значении $salt получаем: Код CRC32 : 6df88f88 CRC32B: cb2a3b76 Кстати в случае, если считать CRC используя функцию hash('crc32', ... ) задача решения не имеет, а вот в случае с hash('crc32b', ... ) - решение очень даже есть. Поэтому переносим этот вопрос в разряд простых Мое изначальное предположение оказалось правильным. p.s. The difference between crc32 and crc32b is explained on mhash man page. crc32 is the one used on ethernet, while crc32b is the one used on zip, png... They differ on the table used. -------------------- |
|
|
4.8.2013, 20:40
Сообщение
#14
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Завтра готовимся к старту квеста ... ! По идее (если посмотреть HTML код станицы "Мой кабинет") нас ждут дополнительные баллы за приглашенных друзей, за вступление в группу Ideco в соц. сетях Вконтакте, Facebook и Twitter, а также за лайки в VK. Плюс, промокоды, которые пока еще не публиковались.
Кстати, насущный вопрос. Кто-нибудь копал в этом году линуксовую консоль глубже? Интересует метод Copy & Paste'а туда из Windows Clipboard. Т.е. свойства, методы и т.п. Пожалуй поясню по-другому. При активной в браузере странице с JSLinux, как с помощью консоли JavaScript от Google Chrome или Opera Dragonfly сэмулировать пользовательский ввод? Чтобы не набивать какой-то код по новой, а вставить его непосредственно в консоль JSLinux. В прошлом году с консолью "разобрались" ... а в этом у кого-то есть успехи? -------------------- |
|
|
5.8.2013, 10:20
Сообщение
#15
|
|
Junior Member Группа: Пользователи Сообщений: 44 Регистрация: 11.8.2012 Пользователь №: 1267 |
Лично меня напрягает тот факт, что есть логи консоли, который отсылается вместе с ответом
Код Content-Disposition: form-data; name="logs" Starting Linux JSLinux started, initializing... root@ipv6-clnt:/# ec h ho fec0::10 > /dev/clipboard И вопрос 5 - честно говоря тоже. Баллов как таковых за него так и не дают. |
|
|
5.8.2013, 14:56
Сообщение
#16
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Лично меня напрягает тот факт, что есть логи консоли, который отсылается вместе с ответом Ну если отвечать на вопросы так, как в приведенном тобой примере, то дисквалификация обеспечена Я бы вообще на месте разработчиков проверил всю базу пользовательских ответов на предмет пустых логов консоли, и наличия при ответе паттерна "/dev/clipboard" ... все что удовлетворяет этим признакам - аннулировать. -------------------- |
|
|
5.8.2013, 20:19
Сообщение
#17
|
|
Junior Member Группа: Пользователи Сообщений: 44 Регистрация: 11.8.2012 Пользователь №: 1267 |
Ну если отвечать на вопросы так, как в приведенном тобой примере, то дисквалификация обеспечена Я бы вообще на месте разработчиков проверил всю базу пользовательских ответов на предмет пустых логов консоли, и наличия при ответе паттерна "/dev/clipboard" ... все что удовлетворяет этим признакам - аннулировать. Лично мне не интересно отвечать на вопросы где под капотом лежат ответы... тот же вопрос с umount казалось бы интересный ход. А нет... под капотом лежит пресловутый id="XXXX" и т.д. по коду Любой первокурсник программист его увидит с закрытыми глазами. P.S. на месте организаторов я бы именно таким и давал призы, которые применяют нестандартное подход к решению заданий. А не толпе людишек, которые срисовали ответы с форумов - ради статуса в одноклассниках =) Которые потом еще пол года будут кричать - А ГДЕ МОЯ ФУТБОЛКА И ФЛЕШКА :-) |
|
|
5.8.2013, 21:43
Сообщение
#18
|
|
Junior Member Группа: Пользователи Сообщений: 44 Регистрация: 11.8.2012 Пользователь №: 1267 |
Цитата Daria Zvedeninova Модератор • 5 часов назад − Участники! В связи с проведением работ по отсеву недобросовестных участников старт Квеста переносится на завтра. О начале Квеста уведомим рассылкой по почте. Подготовка на нуле, впрочем как и в прошлые года. |
|
|
6.8.2013, 0:42
Сообщение
#19
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Лично мне не интересно отвечать на вопросы где под капотом лежат ответы... тот же вопрос с umount казалось бы интересный ход. А нет... под капотом лежит пресловутый id="XXXX" и т.д. по коду Любой первокурсник программист его увидит с закрытыми глазами. Ты видимо давно первокурсников не видел )) Они не умеют заглядывать под капот, а воспользоваться услугами сервиса - им религия, отсутствие денег не позволяет. В результате ситуация патовая. Ну а если серьезно, представь себе жизнь, в которой для получения ответа на любой вопрос, достаточно перевернуть карточку с ним на другую сторону. Стал бы ты их все переворачивать? Я думаю - нет, иначе бы скучно жить стало. Мне по-крайней мере бы точно, жизнь она для того и нужна чтобы открывать для себя что-то новое, узнавать, исследовать ... (на этом лирическое отступление закончено) ... Ну а что касается теста - лично мне интересно было. Взять хотя бы последний вопрос про data.dat ... согласись, в любом случае идеи (о реализации поговорим позже) оригинальные, интересные и достойны уважения. К тому же, помимо конкурсов и т.п. - в жизни ведь и так полно интересных задач ... и касающихся IT в том числе ) P.S. на месте организаторов я бы именно таким и давал призы, которые применяют нестандартное подход к решению заданий. А не толпе людишек, которые срисовали ответы с форумов - ради статуса в одноклассниках =) Которые потом еще пол года будут кричать - А ГДЕ МОЯ ФУТБОЛКА И ФЛЕШКА :-) Отсеять основную массу школоло-ло принятые организаторами меры более-менее позволяют. Ну а то, что каждый год у них так или иначе некие огрехи всплывают (то что ты назвал плохой подготовкой), дык они исправляются, в этом году, имхо, интереснее чем в прошлом ... Ну а если и дальше пойти, то вон, к примеру, Microsoft в своем ПО до сих пор дырки заделывает, равно как и я ядре Linux уязвимости находят и по сей день ... Так что взвесив все "за" и "против" - конкурс в целом интересный и полезный. Мы ведь не ради призов участвуем ... скорее на интерес ... интерес посостязаться, интерес посмотреть что дальше, соревновательный интерес ... ну как-то так p.s. Давай лучше направим энергию на завтрашний квест, если ему все-таки суждено будет состояться ... плюс на исследование консоли JS ... мне вот интересно, как все-таки организовать туда метод copy & paste ... (см. несколькими постами выше) -------------------- |
|
|
6.8.2013, 9:04
Сообщение
#20
|
|
Junior Member Группа: Пользователи Сообщений: 44 Регистрация: 11.8.2012 Пользователь №: 1267 |
p.s. Давай лучше направим энергию на завтрашний квест, если ему все-таки суждено будет состояться ... плюс на исследование консоли JS ... мне вот интересно, как все-таки организовать туда метод copy & paste ... (см. несколькими постами выше) Код var j1 = new JSLinuxWithGUI(document.getElementById('terminal1'), 'linux1', jslinux_prefix); Убери var и переменная станет глобальной. |
|
|
Текстовая версия | Сейчас: 30.1.2025, 9:52 | |