میدونی وقتی سوئیچ ریموت ماشین رو فشار میدی چه اتفاقی میفته؟
ریموت فرستنده باید یک سیگنال ارسال کنه به ماشین، تا در رو باز کنه، ولی این تازه شروع مشکلاته!
چون سیگنال فرستنده که فقط به سمت ماشین نمیره، بلکه به همه سمت منتشر میشه و هر کسی میتونی سیگنال رو دریافت کنه ، کپی کنه و دوباره انتشار بده!
مثل این میمونه که با هر بار فشردن کلید، هزارتا نسخه کپی از سوئیچ ماشین رو تا ۵۰ متر به اطراف پرت میکنی!
در مورد کرکره مغازه ها و دزدگیرهای ارزون ماشین، متاسفانه این مورد واقعیت داره!
ولی در مورد سوئیچ فابریک ماشین، یا دزدگیر های ژاپنی، راهکاری استفاده میشه:
راهکار به این شکله که هر بار کلید رو عوض کنید! و هر کلید فقط یک بار قابلت استفاده داره!
اینجاست که رمزنگاری به کار میاد!
ایران خودرو هم مثل چند شرکت دیگه میاد از الگوریتم KeeLoq برای رمزگزاری سیگنال بین فرستنده و گیرنده استفاده میکنه.
این الگوریتم رو شرکت میکروچیپ ابداعش کرده و همالکنون هم تحط لیسانس خودشه!
به عنوان مثال، آیسی HCS301 یک آیسی ریموت هست که به عنوان فرستنده در ریموت های هاپینگ که از این الگوریتم استفاده میکنند موجوده، مثل بتا ۲۰۱۱ .
گیرنده چی؟
موضوع اینجاست که جالب میشه!
هر بار کد دریافت شده متفاوته! رمز شده! چطور دیکد کنیم؟
الگوریتم کیلاک نیاز داره که یک کلید ۶۴ بیتی یکسان در فرستنده و گیرنده، پروگرام بشه، تا بتونه به درستی کار کند و دیکد رو انجام بده.
روش پروگرام کردن کلید ۶۴ بیتی در فرستنده .
حالا نیاز داریم یک کد داشته باشیم که با داشتن کلید ۶۴ بیتی در گیرنده، اطلاعات دریافتی رو با الگوریتم کیلاک دیکد کنه.
پیاده سازی انکد و دیکد کیلاک به زبان سی از لینک زیر قابل دریافته:
https://github.com/liyanboy74/KeeLoq
در هر کدوم از لینکها میتونید اطلاعات کاملتری رو پیدا کنید.
توی این پروژه ما از یک گیرنده رادیویی استاندارد 433 مگاهرتز و برد آرداینو برای دریافت و دیکد اطلاعات استفاده میکنیم.
مطابق شمای زیر مدار را میبندیم و برد آرداینو رو به کامپیوتر متصل میکنیم.
برنامه برد آرداینو رو میتونید اینجا پیدا کنید، برنامه رو دانلود کنید و روی آرداینو پروگرام کنید.
ترمینال سریال برد آرداینو را فعال کنید و مقادیر دریافت شده رو برسی کنید.