Карта сайта Хакер в RSS Энциклопедия Хакера PDA версия сайта Почтовые рассылки Хакера    Хакер в Twitter Хакер в ВКонтакте Приложение Хакер для Facebook Хакер на Formspring.me
Журнал Новости Форум Видео Life Xakep Live (блоги)
Bugtrack Статьи Блог Поиск English
Взлом как образ мысли Взлом как образ мысли
Интервью с человеком, который, как оказалось, является не только талантливым пентестером в одной из крупных ИБ-компании, но и хакером-ветераном, который уверенными шагами вышел на свет и прикоснулся к истории российской хак-сцены....
Полный гид по накрутке онлайн-голосований Полный гид по накрутке онлайн-голосований
Конкурсы с голосованием привлекают большое количество посетителей, а трафик, как известно, — это деньги. Особый интерес вызывают конкурсы, где за победу предлагаются лакомые призы....

Дверной замок на Arduino

Bookmark and Share

Как известно человек стал человеком благодаря труду. Но ведь на этот труд его толкает бесконечная лень. Когда-то давно, когда обезьяне надоело лазить на дерево за бананами, она взяла в руки палку и начала сбивать их с земли. Вроде прогресс, а двигатель - лень!

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

Для воплощения данной идеи нам необходима сама флешка, пара светодиодов (я взял по стандарту зеленый и красный), пара метров удлинительного кабеля usb от ПК до замка, сервомоторчик и сердцем всей нашей системе будет контроллер Arduino (в одном из журналов о нем написана довольно неплохая статья, поэтому рассказывать что это не буду).

Для начала нам необходимо написать небольшую программку для определения id флешки. Писать будем на c++ в builder'е.

Собственно вот код:

GetVolumeInformation("h:", VolumeName.c_str() , 50, &SN, NULL, NULL, FSName, 50);

VolumeName - имя нашего устройства, а вот SN - необходимый нам id (он не физический, а назначается операционной системой при форматировании, поэтому для большей безопасности можно также задействовать и VolumeName).

Дальше нам просто нужно записать вычисленный нами id в какую-то переменную и сравнить его с тем, который мы получаем при очередном подключении флешки.

Эту задачку решим так: Кладем на форму таймер, а в нем пишем:

dtyp = GetDriveType("h:");
if (dtyp != 2)
{
    Timer2->Enabled=0;
    Button1Click (this);
}

Здесь мы проверяем диск h:\ на наличие в нем устройства, а результат кидаем в dtyp.

dtyp != 2 означает, что в порту что-то есть. Тормозим таймер и запускаем проверочную процедурку Button1Click в которой мы и проверим соответствие нашего id тому, что получили:

unsigned long MySn=2797188077; // это номер моей флешки+
hCom = CreateFile("COM3", GENERIC_READ + GENERIC_WRITE, 3, NULL, CREATE_ALWAYS, 0, NULL);

if (SN==MySn) {
// проводим сравнение и если есть совпадение, то записываем в com-порт 1, в //противном лучае - 0;
    buf=1;
    WriteFile(hCom, &buf, 1, &n, NULL);
    access=1;

}
else {
    buf=0;
    WriteFile(hCom, &buf, 1, &n, NULL);
}
CloseHandle(hCom); //и естесственно не забываем закрыть порт
}

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

Суть следующая.

Ситуация 1 - у нас есть закрытая дверь и "правильный" ключ. Тогда при подключении флешки диод радостно загорается зеленым цветом, сервомоторчик открывает дверь:

if (buf==254 && accsses) {
    digitalWrite (red,HIGH);
    digitalWrite (green,LOW);
    accsses=0;
    for(int pos = 0; pos < 180; pos += 1)
    {
        servo1.write(pos);
        delay(5);
    }
}

Ситуация 2 - у нас есть открытая дверь и "правильный" ключ. Тогда загорается красный диод и сервопривод поворачивается в обратную сторону, тем самым закрывает дверь:

if (buf==254 && !accsses) {
    digitalWrite (red,LOW);
    digitalWrite (green,HIGH);
    accsses=1;
    for(int pos = 180; pos>=1; pos-=1)
    {
        servo1.write(pos);
        delay(5);
    }
}

Ситуация 3 - у нас в руках оказался "неправильный" ключ. Что делать?! Дадим понять, что в usb-вход попало что-то не то поморгав красным диодом:

if (buf==252 && accsses) {
    digitalWrite (red,HIGH); digitalWrite (green,LOW);
    delay (300);
    digitalWrite (red,LOW);
    delay (300);
    digitalWrite (red,HIGH);
    delay (300);
    digitalWrite (red,LOW);
    delay (300);
    digitalWrite (red,LOW);
    delay (300);
    digitalWrite (red,LOW);
    digitalWrite (green,HIGH);
}

В общем вот и все. Теперь осталось собрать все в кучу, скомутировать и вешать на дверь - пугать соседей.



Теги: Arduino , программирование





СВЯЗАННЫЕ СТАТЬИ
Дверной замок на Arduino
ПРЕДЫДУЩИЕ СТАТЬИ
Веб-камера на сервоприводах: совмещаем простой код и железо с помощью Arduino
CUDA мы катимся: технология NVIDIA CUDA
Bluetooth Remote Control: управление компьютером с мобильника
Мидлет на Pascal: мобильный арканоид своими руками
GPS изнутри
Написание драйвера в подробностях №4
Написание драйвера в подробностях №3
Написание драйвера в подробностях №2
Написание драйвера в подробностях №1
Delphi и Siemens
ОБСУЖДЕНИЕ СТАТЬИ
Логин:
Пароль:
Если у вас есть форумный логин - вы можете использовать его, иначе анонимный гостевой доступ.

Для оставления комментария вы можете зарегистрироваться по упрощенной процедуре.

Обсуждение этой статьи на forum.xakep.ru
Для отправки сообщения введите код, указанный на картинке
Сообщение

UserГость
09.12.2010 13:45:10
Ответить Ссылка
а можно попробовать замутить ключ не на флешке, а на своём iButton: http://robocraft.ru/blog/arduino/118.html
UserГость
09.12.2010 16:32:16
Ответить Ссылка
"Как известно человек стал человеком благодаря труду."
Человек стал человеком благодаря Богу.
UserГость
09.12.2010 17:35:10
Ответить Ссылка
@Человек стал человеком благодаря Богу.@

Полностью согласен!
UserГость
09.12.2010 19:04:09
Ответить Ссылка
бред Arduino использовать в качестве моргалки!!
да еще и комп нужно что бы был вкючен и что то считывал с флешки.
при нормальном раскладе Arduino и сама сможет с флешки считать все что надо, даже с юсб, просто нужен контроллер соответствующий подцепить.
а так для указанных вами целей можно и LPT использовать, что почти на 1000 руб. дешевле)) мигайте им сколько надо, да и через транзюк замок сможете подцепить.
UserГость
09.12.2010 20:30:12
Ответить Ссылка
@Человек стал человеком благодаря Богу.@
Покажите мне этого Бога...
UserГость
09.12.2010 20:37:32
Ответить Ссылка
@Покажите мне этого Бога...@
Ну тогда, исходя из этой предпоссылки
"Как известно человек стал человеком благодаря труду.", покажите мне этот труд :)
UserГость
10.12.2010 1:20:28
Ответить Ссылка
ты не хочешь доказывать то, что не существует, не существовало и не могло быть биологически и физически. ты говоришь полнейшую ересь, поэтому ты строчишь свои тупые предложения, типа *Ну тогда, исходя из этой предпоссылки
"Как известно человек стал человеком благодаря труду.", покажите мне этот труд :)*. вот тебе и труд.
UserГость
10.12.2010 2:21:27
Ответить Ссылка
Мужики, не философскую тему тут обсуждаем, лучше поможем аффтару найти библиотеку для работы с флешкой, чтобы можно было сделать независимый девайс. Хотя с компом идея тоже хороша, ведь можно вести журнал аудита(когда какая флеха пыталась отпереть твой замок...), что на одном лишь ардуино сделать проблематично
UserГость
10.12.2010 8:29:51
Ответить Ссылка
За неправильную флешку формат )
UserГость
10.12.2010 9:01:08
Ответить Ссылка
а где схема самого замка хотя бы примерного (как туда программу заливать?)
AvatarThe Joker
10.12.2010 9:15:35
Ответить Ссылка
quote:

ORIGINAL: Guest

а где схема самого замка хотя бы примерного (как туда программу заливать?)
Через замочную скважину.
UserГость
10.12.2010 13:54:15
Ответить Ссылка
Идея класс!!! Нефиг всякую байду пихать xDD
UserГость
10.12.2010 13:22:47
Ответить Ссылка
влияние Б-га на прогресс не доказано
UserГость
10.12.2010 14:06:15
Ответить Ссылка
Чарльз Дарвин красавчик!!!
UserГость
10.12.2010 21:38:52
Ответить Ссылка
МОЛОДЕЦ дерзай дальше. мысль о использовании "черного ящика" для запоминалки всех посещений имеет право на жизнь.К богам не обращайся, не помогут...
UserГость
11.12.2010 5:30:21
Ответить Ссылка
юные натуралисты!=) Я в шоке с вас ну пиздец!
UserГость
11.12.2010 17:07:44
Ответить Ссылка
вопрос к аудитории критично настроенной к реализации данной идей .
пример.. как быть если замок такого плана нужен не для одной флешки а к примеру для десятка флешек?
имея бд всё очень просто настраивается.. а вот чисто на ардуино при появлении нового ключа вы что будите брать програматор и перебивать идшники?
идея имеет право на существование
UserГость
11.12.2010 19:11:27
Ответить Ссылка
Вот для этого и работа ведется через комп
UserГость
12.12.2010 14:04:24
Ответить Ссылка
УГ
UserГость
12.12.2010 14:23:04
Ответить Ссылка
За неправильную флешку можно не формат а скинуть какой нибудь вирь чтоб потом комп грохнул в который эту флешку воткнут чтобы не повадно было покушаться на чужое имущество xD
UserГость
13.12.2010 20:10:11
Ответить Ссылка
бог существует только пока мы в него верим.пысы: я не верю ))
UserГость
19.12.2010 13:46:45
Ответить Ссылка
Бог внутри нас




Keywords: zPOSTz zHARDz, zSOFTz, zHOWz, zINFOz, zYANDEXz z54247z
Для Авторов: edit Lock delete Lock



    Rambler's Top100