bash.im ithappens.me zadolba.li

Умная техника

966

Брутфорс и здравый смысл

Однажды на нашем ФГУПе слетела программа, обслуживающая электронный замок входной двери с электронными же пропусками.
Всё бы ничего, но за древностью лет инсталляха этой софтины была утеряна, и даже поиск в интернете ничего не дал. Дистрибьюторы оборудования предложили скачать новую версию, но сообщили, что поддержка нашего контроллера прекращена, так как он относится к раннему мезолиту.

Собственно, принципиальное отличие нового софта было лишь в формате БД. Контроллер в нём не определялся, но сигналы входа/выхода и ID карточки давал исправно. Я решил поправить таблицы вручную, благо, они были в формате Access, но столкнулся с проблемой — база была запаролена.

Тут же скачал несколько ломалок паролей «на попробовать». Как водится, утилиты заявляли: «Пароль я подобрала, купите меня, и я вам его скажу». Естественно, платить 20–30–80 единиц СКВ я никому не собирался, да и не пришлось — одна из программ добродушно выдала три первых знака пароля и 9 звездочек после, доказывая свою полезность и предлагая заплатить за остаток.

Выглядел пароль так: «1qa*********». Надеюсь, не надо объяснять, как я достроил его до полного?

946

Мейнфрейм-секундомер

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

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

Сначала попытался наваять программу на Си. Поняв, что овчинка выделки не стоит, я решил использовать таймстампы в «блокноте» — тоже не слишком удобно вышло. После нескольких минут мучений я, вспомнив молодость, открыл командную строку.

Попробовал поиграться с time /t и разочаровался, ведь эта команда возвращала время только в формате ЧЧ:ММ, в то время как нам требовалась точность в десятые доли секунды. Задумавшись, решил изменить формат приглашения командной строки: prompt $T$G.

Жизнь наладилась — при каждом нажатии на Enter на экране появлялся таймстамп с точностью до сотых долей секунды. Помните, даже в Windows, полностью завёрнутой в красивую графическую оболочку, не стоит сбрасывать со счетов консоль!

921

Быдло-трекер

Долгое время искал программу-«антивор» для коммуникатора. Нашел три-четыре подходящих, но все они, к моему сожалению, умели связываться с внешним миром только путём отправки СМС. Об A-GPS программы тоже не слышали, поэтому время нахождения координат было неприлично большим. Короче, практической пользы в программах не было — так, игрушки.

Ну что же, разве мы не кодеры? Напишем свой антивор, «с блекджеком и шлюхами».

Заседание совета проходило у друга дома. К трём утра прога была работоспособна — естественно, с зачаточным интерфейсом и без «свистелок». Наш «антивор» без проблем цеплял IMSI сим-карты, через виндовый GPS-интерфейс за 30–40 секунд находил координаты и рапортовал по джаббер-протоколу.

Сразу после компиляции первой работающей версии у нас кончились сигареты. Друг отправился в палатку и по пути домой наткнулся на двух гопников. Чёрт его дернул на автомате сказать «не курю» — удар в спину, встреча с асфальтом и осознание того, что новенький коммуникатор удаляется в неизвестном направлении.

Стоп, почему в неизвестном? Вот он, долгожданный бета-тест!

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

888

Сила привычки

Работаю в небольшой конторке, занимаемся поставкой различной съедобной продукции.
Имеем две базы 1С: одна управленка, а другая чисто бухгалтерия. И так уж вышло, что директория с бухгалтерией находится в директории базы-управленки. Всё это бэкапится хорошей (на мой взгляд) программкой-бэкапером.

Спустя некоторое время пришлось переселить управленку на SQL, а бухгалтерию оставить, как было, в файловом хранении, в той самой папочке со старенькими файликами управленки. Настроили бэкапер на бэкап скульной базы и отключили бэкап старой, файловой базы, позабыв о работающей бухгалтерской.

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

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

824

У программ свои биоритмы

28 апреля 2009, 08:00

Сидел я за проектом, заработался до глубокой ночи (приблизительно, до трех). Сохраняю исходники, начинаю отлаживать, а прога берет и вылетает с критической ошибкой. Я, ударяясь в панику, начинаю перелопачивать код в поисках огреха, но напрасно. Немного помучившись, я случайно глянул на часы и решил, что утро ночи мудренее.

Утром, продрав глаза, я снова первым делом окинул взглядом проект и решил во что бы то ни стало определить, где же возникала ошибка. Запускаю... и все нормально. И так, и сяк — все прекрасно работает! Начинаю думать, уж не приснилось ли мне.

Ответ оказался прост. Дело было в последнее воскресенье октября. И надо же было попасть именно в три ночи. Программа, "созданная" через час после того, как ее запускают, работать не хотела...

779

Домовой, домовой, проводил бы лучше девушек...

Место действия: небольшой офис, локалка на 7 машин. Один комп, за которым гнездится программист-системщик, "раздает всем инет". Интернет поступает от провайдера по оптоволокну, оно воткнуто в свич, от свича к компу программера — 2 веревки, воткнутые в сетевую карту — внешний выход и собственно локалка.

И вот в один не самый прекрасный день начинается ерунда. Регулярно пропадает интернет (а локалка работает как часики). Пропадает, появляется, пропадает... Иду разбираться с хозяином "сервера" — и узнаю, что он с утра в командировке. А за компом, с разрешения директора, сидит бухгалтерша. Говорит, что ничего не делает, а что такое прокси вообще не знает.

В итоге, после доолгих танцев с бубном и скрытого наблюдения, была установлена роковая цепочка. Бухгалтерша отвлекалась от компа. У того, как оказалось, в настройках энергоснабжения стоял переход в слип-мод через 10 минут простоя. Комп засыпал. В свойствах сетевухи стояла птичка "это устройство можно отключать для экономии энергии". Сетевуха отключалась — инет умирал. Дама оживляла комп. Сисема обновления винды замечала, что патч не качается — пинала проксик. Тот просыпался — пинал сетевуху. Та включалась — появлялся интернет.

Выяснилось, что хозяин компа и не знал о "хитрых" настройках — у него комп больше 3-х минут не простаивал. Все оказалось так просто. А мы чуть не переругались на тему "Какая сволочь инет вырубает?!"

713

Есть контакт!

29 марта 2009, 08:00

У приятеля на хорошей иномарке начала глючить антиблокировочная система. Он отправился в фирменный сервис-центр, где холёные инженеры сразу отправили машину на «новейшую компьютерную диагностику».

Загнали на стенд, подсоединили кучу датчиков к бортовому компу и давай гонять автомобиль во всех режимах. С умным видом смотрят на графики и кучу цифр — утверждают, что с машиной все в порядке, проблем быть не должно. Так сервисмены ничего и не починили.

Звонит мне приятель и говорит: «Ты же электронщик и админ, может, сами посмотрим?» Захватив осциллограф, отправляюсь в гараж, ищу провод, по которому идет сигнал с датчика оборотов колеса — сигнал слабый и «плавает». Напильником подтачиваю площадку под датчиком, собираю — аллилуйя, все работает!

Каким бы технически оснащенным ты ни был, светлую голову и напильник никто не отменял!

709

Кто кого обманет

Задача: протестировать оптимизирующий компилятор С++ (gcc, естественно) для встраиваемого PowerPC-процессора.

Тестовый стенд: отладочная плата, на ней проц, основной способ взаимодействия с которым - интерфейс RS-232. Чтобы не заморачиваться с передачей данных по COM-порту, я решил смухлевать — сделал все тестовые данные константными.

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

Уровень оптимизации 0. Код толстый и красивый, все вычисления выполняются самым прямолинейным, тупым и очевидным способом. Предсказуемо...

Уровень оптимизации 1. Код стал компактнее, откровенно тупые действия вырезаны, но некоторая рыхлость всё ещё есть. Не впечатляет.

Уровень оптимизации 2. Объекты пропали. Память больше не задействована, вместо нее работают 32 регистра процессора. Так держать!

Уровень оптимизации 3. Загрузка вычисленного значения в регистр как константы. Всё. Объём кода - 8 байт, или две инструкции (две, потому что загрузка константы на этой архитектуре идёт по полуслову).

Домухлевался. Один-ноль в пользу компилятора!

647

AI Интеллектович

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

Так вот, при сдаче процедурка где-то забарахлила и потрясенному преподавателю комп расстрелял все корабли хода за полтора - ну, повезло железяке, что попадала часто, бывает! - оставив каждому ровно по одной(!) целой клеточке! А затем, на секунду задумавшись, и, клянусь, злорадно ухмыляясь, бездушная вроде бы железяка одной длинной "очередью" садистки добила всех оставшихся на плаву.
Зачет мне поставили, не задумываясь.