Архив рубрики ‘Compact Framework’

Заметки шпиона

Posted: Октябрь 25, 2010 in .NET, Compact Framework

Однажды был я на днях открытых дверей факультета менеджмента СПбГУ. Факультет очень мажерный, и денег туда вкачано очень много. На лестнице даже есть табличка с указанием фамилий тех, кто больше всего пожертвовал. На первом месте, кстати, стоит Владимир Владимирович. Мы с другом поднялись на второй этаж, послушали о том как хорошо учиться на факультете и уже собирались уйти как нас одолело огромное желание погулять по факультету. Но так как денег было влито немало, то и охрана там непростая. На входе вас проверяют дяденьки как из американских кино про телохранителей, по всему факультету стоят датчики движения и каждый посетитель отслеживается. Но мы этого не знали и стали гулять и фотографироваться на фоне аудиторий. Потом на первом этаже нас поймали охранники и приказали удалить все фото из фотоаппарата. А ведь события могли бы развернуться немного по-другому…

Для этого факультета было закуплено довольно крутое оборудование. В серверной стоят несколько шкафов с надписью IBM и мигающими лампочками в духе стар трека. Но вот беда, эти сервера никак не используются! И были специально приглашены люди с мат-меха, чтобы хоть что-то с ними делать. Так вот, я — шпион с мат-меха, засланный на факультет менеджмента с целью разведать обстановку. Нужно сделать как можно больше фотографий. Фотоаппарат уж очень сильно заметен, а всяких шпионских штучек у меня нет. Есть только старенький коммуникатор на базе Window Mobile 5.0 со встроенной камерой. Вооружившись этим нехитрым предметом, я отправился на день открытых дверей. На середине презентации я вышел якобы в туалет, а сам тем временем, незаметно прошмыгнув по коридору, начал потихоньку фотографировать.
Но ведь меня могут поймать охранники?! Предвидя такой исход событий, я предварительно хорошо подготовился. Сначала зарегистрировал бесплатный сайт с возможность пополнения контента через фтп сервер. Далее нашел на codeplex-е бесплатную библиотеку OpenNETCF для работы с фтп сервером через .NET CF, так как Compact Framework не поддерживает работу с фтп напрямую, приходится обходить через сокеты.
С этой библиотекой идет тестовое приложение, которое вполне можно приспособить для своих нужд.
Далее вот что происходит: я открываю приложение и нажимаю кнопку Upload File. Запускается встроенная камера, которая сохраняет путь к фотографии

CameraCaptureDialog cameraCaptureDialog = new CameraCaptureDialog();
cameraCaptureDialog.Owner = this;
cameraCaptureDialog.Title = "Spy camera";
cameraCaptureDialog.Mode = CameraCaptureMode.Still;
if (cameraCaptureDialog.ShowDialog() == DialogResult.OK &&
  cameraCaptureDialog.FileName.Length > 0)
{
	pictureFileName = cameraCaptureDialog.FileName;
}

Устанавливается соединение с интернетом (синхронно)

ConnectionManager connManager = new ConnectionManager();
connManager.Connect(ConnectionMode.Synchronous);

Устанавливается соединение с фтп сервером (асинхронно, по-другому нельзя)

m_ftp = new FTP(server.Text);
m_ftp.ResponseReceived += new FTPResponseHandler(m_ftp_ResponseReceived);
m_ftp.Connected += new FTPConnectedHandler(m_ftp_Connected);
m_ftp.BeginConnect(user.Text, password.Text);

В программе предусмотрена возможность ввода сервера, имени пользователя и пароля, но для быстроты их можно зашить в код.
Также для быстроты файл предварительно сжимается с помощью еще одной бесплатной библиотеки — DotNetZip, найденной на просторе codeplex и поддерживающей сжатие в CF

using (ZipFile zip = new ZipFile())
{
	zip.AddFile(pictureFileName, "images");
	zipFileName = Path.GetFileNameWithoutExtension(pictureFileName) + ".zip";
	zipFileName = Path.Combine(GetApplicationPath(), zipFileName);
	zip.Save(zipFileName);
}

После отправки все файлы затираются, и процесс повторяется снова

File.Delete(pictureFileName);
File.Delete(zipFileName);

Я уже рядом с серверной, вот оно, ради чего я здесь! Сейчас сфотографирую и пойду хвастаться своими проделками на кухне перед друзьями. «Эй ты» — окрикрул меня грозный голос. Я в страхе поворачиваю голову, и самый страшный кошмар стал явью: меня заметил охранник. «Стой, здесь нельзя фотографировать!» Потеряв голову я бегу к лестнице на второй этаж. Охранник что-то передает по рации и я уже слышу шум сверху. «Стой» — кричат они мне. О нет! Сокет выдал ошибку, файл не отправлен на сервер. Сопливые сокеты!!! Я заперся в ближайшей аудитории и начал судорожно искать куда я сохранил фото. В дверь уже ломятся. Я нахожу папку с установленным приложением и удаляю ее полностью. Далее в корне нахожу папку «Мои документы» и удаляю ее полностью тоже. Тут дверь открывается. «Что случилось?» — говорю я и чем-то тяжелым получаю по голове. «Ну ты, @#$%» — говорит один из охранников и заламывает мне руки. Обыскивают меня и находят только старенький коммуникатор. Проверяют исходящие звонки, смс и, конечно же, фотографии. «Все чисто» — говорит лысый верзила. Зачем убегал? *Какая-то несусветная ложь, в которую даже моя мама не поверит* Охранники недоверчиво смотрят на меня. Еще несколько вопросов и глупых ответов, после которых все заканчивается, меня отпускают. Это, конечно, было весело, но помогать им нагружать серверы я не стал.

Реклама