من الصعب بالطبع الاستيلاء على مفاتيح التشفير ونسخ المفاتيح الرئيسية لـ Mifare لأجهزة الاتصال الداخلي ، لكن من الممكن تمامًا تجميع جهاز يقوم بذلك. لن أتحدث هنا عن ماهية Mifare والاطلاع على التفاصيل الفنية ، سأقول فقط أن هذه التقنية تُستخدم الآن ، على سبيل المثال ، في أجهزة الاتصال الداخلي ، ولكي تنسخ سلسلة مفاتيح الاتصال الداخلي ، فأنت بحاجة إلى معرفة مفاتيح التشفير التي تم إغلاقها بها.
تحذير! هذا المقال هو لأغراض تعليمية فقط. نذكرك بأنه يمكن مقاضاة أي اختراق في أنظمة المعلومات بموجب القانون.
ربما يكون لدى العديد من الأشخاص المهتمين بتقنية MIfare أبسط قارئ / كاتب بطاقة Mifare / fob ، يتكون من وحدة PN532 ومحول USB-UART:

من خلال تحسين بسيط وغير مكلف ، يمكن تصنيع هذا الجهاز للاستفادة منه
بيانات مصادقة القارئ ، بمساعدة مفاتيح التشفير ، وهي ضرورية للقراءة والنسخ. هناك أيضًا أجهزة متوفرة تجاريًا لهذا الغرض - SMKey و Proxmark3 و Chameleon وبعضها الآخر. هذه هي الأجهزة مع العديد من الوظائف ، ومريحة ، ولكن ليست رخيصة.
أوجه انتباهكم إلى خيار ميزانية أكثر استنادًا إلى "مجموعة الرجل الصغير" المماثلة من وحدة PN532 ومحول USB-UART ، والذي يسمح لك بالتقاط البيانات من قارئ Mifare ، مثل الاتصال الداخلي ، وحساب مفاتيح التشفير التي يشير إليها القارئ إلى العلامة.
يحتوي الجهاز المطوّر بشكل أساسي على لوحة تصحيح "رخيصة" وغير مكلفة تعتمد على معالج STM32F103C8T6 ، يُطلق عليه أيضًا "BluePill" مع وحدة PN532 ومحول USB-UART المتصل به. هذه الوحدة متصلة عبر كابل USB-OTG بهاتف ذكي على نظام Android. يتم تجميع كل هذا في نسخة وهمية دون لحام ، بمساعدة لاعبا ، ولديه شيء من هذا القبيل ، على الرغم من أنه غير قابل للتمثيل ، لكنه يعمل بشكل جيد:

مخطط التجميع بسيط للغاية ويتم تقديمه في شكل نص:
PN532 ___________________STM32F103C8T6
SCK _____________________ PA5 (SPI1_SCK)
MISO ____________________ PA6 (SPI1_MISO)
MOSI ____________________ PA7 (SPI1_MOSI)
SS ______________________ PB0 (GPIO_OUTPUT)
SIGIN ___________________ PB11 (TIM2_CH4)
SIGOUT __________________ PA12 (TIM1_ETR)
SIGOUT __________________ PA0 (TIM2_ETR)
VCC _____________________ + 5V
GND_____________________GND
USB-UART ________________ STM32F103C8T6
RX ______________________ PA9 (USART1_TX)
TX ______________________ PA10 (USART1_RX)
+ 5V _____________________ + 5V
GND_____________________GND
! هام يجب ضبط مفاتيح واجهة PN532 على وضع SPI! يمكنك وميض STM32 باستخدام الأداة المساعدة FlashLoaderDemonstrator من خلال محول USB-UART الموجود.
إليك عرض توضيحي لالتقاط مفتاح تشفير من جهاز محاكاة قارئ هاتف الباب (Arduino + PN532):
نظرًا لأن قارئات IronLogic (IL) ، للعمل مع من تم تطوير هذا الجهاز ، تحاول قراءة علامة بمفتاح تشفير محسوب على أساس UID لهذه العلامة ، يجب أولاً تعيين UID. يمكنك القيام بذلك بطريقتين - يدويًا أو القراءة من العلامة. بعد ذلك ، نقوم بالتقاط وانتظر حساب مفاتيح التشفير.
تستخدم علامة التبويب التالية لبرنامج "Record on Classic" قدرة الإصدارات السابقة من قارئات IL على كتابة نسخ إلى فراغات Mifare Classic الرخيصة. تعتمد هذه الطريقة على حقيقة أن قارئ IL بعد التفويض يرسل إلى الاتصال الداخلي ليس UID الأصلي للعلامة ، ولكن المعلومات المسجلة في الكتلة الأولى (في الحالة العامة ، هي نفس معرف المستخدم الأصلي). للقيام بذلك ، نحتاج إلى التقاط وحساب مفتاح التشفير الخاص بالتسمية ، والذي سيكون بمثابة الفراغ ، وإغلاق قطاع الصفر به ، وكتابة أربع وحدات بايت لمعرف UID الخاص بالتسمية ، والتي تعمل كنموذج أولي ، في الكتلة الأولى من هذا التصنيف. للقيام بذلك ، نحن لسنا بحاجة حتى إلى الحصول على مفتاح التشفير الأصلي وإزالة تفريغه ، وهو يكفي لمعرفة معرف UID الخاص به ، لكن هذا صحيح فقط إذا كان الأصل "أصليًا" وليس نسخة ، فلا يزال عليك قراءة الكتلة الأولى بالفعل الكتابة إلى نسخة. لجعله أكثر وضوحًا ، ضع في اعتبارك هذا المثال - لنفترض أننا نريد إنشاء نسخة من المفتاح الأصلي باستخدام UID 0xEBD52AC5 ، والذي تمت كتابته أيضًا في الكتلة الأولى من الأصل ، على ملصق Mifare Classic عادي مع معرف مستخدم ، ويقول 0x12345678. للقيام بذلك ، بمساعدة الجهاز المقدم ، والذي تم استدعاؤه على نحو مناسب من قبل أحد الرفيقين Shaitan-Mashina ، نجد مفتاح التشفير لهذا UID وللكائن المحدد (المدخل ، المنزل ...) الذي نحتاجه. دع مفتاح التشفير يكون 0xABCDEF098765 ، ثم قم بتحرير القطاع صفر من تفريغ النسخ كما يلي:

في الكتلة الأولى ، نكتب UID الخاص بـ 0xEBD52AC5 الأصلي ، وفي الكتلة الثالثة تكون وحدات البايت الست لمفتاح التشفير التي تم العثور عليها لشغل العمل هي 0xABCDEF098765. نكتب تفريغ إلى فارغة ، والحصول على نسخة من مفتاح الاتصال الداخلي. شيء من هذا القبيل ، يقوم SMKey بعمل نسخ من IronLogic إلى Mifare Classic العادي ، وهذا ما يفعله برنامج التسجيل هذا. في حقل "الرمز" ، ندخل أو نقرأ يدويًا 4 بايتات من معرف UID من المفتاح الأصلي ، وسيتم تسجيله في الكتلة الأولى من النسخة. نبدأ ثم نتبع مطالبات البرنامج. أولاً نقرأ UID الخاص بشغل الشغل ، ثم نأتي بالجهاز إلى الاتصال الداخلي ونلتقط بيانات المصادقة. بعد اكتمال الحساب ، سيقدم البرنامج إحضار الفراغ لتسجيل البيانات. إذا تم العثور على أكثر من مفتاح تشفير ، فبعد تسجيل الخيار الأول ، ستتاح له فرصة التحقق من النسخة المستلمة. إذا لم تكن النسخة مناسبة ، فعليك تجربة المفتاح المحسوب التالي ، أو مسح (استعادة) الفراغ للاستخدام في المستقبل. قد لا تعمل النسخة أيضًا لأن الكود المكتوب في الكتلة الأولى من النسخة قد تم تعريفه بشكل غير صحيح - على سبيل المثال ، إذا حاولت كتابة معرف UID الحقيقي وليس فوب المفتاح الأصلي ، ولكن نسخة تم إنشاؤها باستخدام الطريقة المذكورة أعلاه. في هذه الحالة ، يجب ألا تستخدم UID التسميات ، والبيانات من كتلة 1st ، والتي يمكن الحصول عليها في قسم "نسخ القطاع".
لن تعمل هذه الطريقة أيضًا مع أحدث إصدارات برنامج قارئ IL. في هذه الحالة ، يمكن عمل نسخة عن طريق نسخ القطاع 0 بأكمله (4 كتل) على قطعة عمل تسمح لك بتسجيل القطاع 0 باستخدام قسم "نسخ قطاع" في التطبيق. هنا ، نجد أولاً مفتاح العملة المشفرة الأصلي ، وقراءة قطاع الصفر الخاص به ، ثم اكتب إلى الفراغ. نظرًا لعدم وجود فراغات OTP و OTP-2.0 في متناول اليد ، تم اختبار هذه الميزة حتى الآن فقط على فراغات ZERO ، على الرغم من أن الإصدارات الأحدث من القراء تتطلب استخدام OTP-2.0.
حسنًا ، بالنسبة للمبتدئين - يسمح لك قسم "Record UID" في التطبيق بتغيير UID ، واستعادة الكتلة التالفة ، وإعادة تعيين مفاتيح التشفير الخاصة بفراغات ZERO إلى الافتراضي.
لذلك - لتلخيص لفترة وجيزة. لعمل مثل هذا الجهاز ، نشتري أو نبحث عن وحدة PN532 وأي من محولات USB - UART FTDI أو PL2303 أو CH340 أو CP2102 ، لوحة تصحيح STM32F103C8T6 ، واحدة وستة عشرات لاعبات ، ومحول USB-OTG وهاتف ذكي (كمبيوتر لوحي) على Android مع OTG. نقوم بتجميع الجهاز نفسه وفقًا للرسم البياني أعلاه ، ومضة * .bin مع ملف STM32 وتثبيت * .apk من
الأرشيفعلى الهاتف الذكي. للتشغيل الصحيح ، يجب تشغيل التطبيق على الهاتف الذكي عند توصيل محول USB-UART ، إما بشكل افتراضي أو عن طريق التحديد اليدوي ، وإلا فلن يتمكن التطبيق من الوصول إلى المحول.
أريد أن أقول بضع كلمات حول الوحدة النمطية PN532 - ليست كل هذه الوحدات "مفيدة على قدم المساواة"! من بين الوحدات الثلاثة (كما في الصورة أعلاه) التي اشتريتها ، لم يقرء أحدها ويكتب العلامات ، خاصة ZERO و OTP-2.0 ، لكنه كان يعمل بشكل طبيعي في وضع المبني للمجهول مع قارئات الاتصال الداخلي ، بينما تصرف الآخر عكس ذلك تمامًا ، والثالث هو الآخر أقل التعامل مع كل من العلامات والاتصال الداخلي (على الرغم من أسوأ من الأولين). ربما أكون محظوظًا وقد تبين أن هذه المجموعة المعينة من الوحدات ليست بأفضل جودة ، لكن هناك أشخاص آخرون يشكون منها. ومع ذلك - لشخص محظوظ كما. ماذا اقول؟ ظهرت وحدات PN532 معروضة للبيع لتصميم مختلف قليلاً ، وهي أغلى ثمناً ، ولكن وفقًا للمراجعات ، لا تواجه هذه المشكلات:

إذا صادف شخص ما PN532 ، وهو لا يكتب ويقرأ الملصقات بشكل جيد ، فيمكنني أن أوصي بإضافة وحدة RC522 إلى الجهاز ، وهو أمر يستحق فلسًا واحدًا ، لكنه يؤدي وظائفه بشكل مثالي ، وفقًا للمخطط التالي:
RC522____________________STM32F103C8T6
RST ______________________ PB12 (GPIO_OUTPUT)
SCK ______________________ PB13 (SPI2_SCK)
MISO _____________________ PB14 (SPI2_MISO)
MOSI _____________________ PB15 (SPI2_MOSI)
SDA ______________________ PA8 (GPIO_OUTPUT)
VCC ______________________ + 5V
GND______________________GND
في هذه الحالة ، لن يعمل PN532 إلا عند التقاط البيانات من القارئ ، وسيكون عبء العمل مع العلامات بالكامل على عاتق RC522.
في الختام ، أريد أن أقول إن أداء الجهاز في الظروف الحقيقية تم اختباره فقط على أجهزة قراءة IronLogic من الجيل الأول ، بدون مرشحات ZERO ، OTP ، OTP-2.0. الإصدارات الأخرى ببساطة لا تستطيع الوصول ، لذلك بالنسبة لقراء IL الأكثر حداثة ، ستكون هناك حاجة لتطوير البرمجيات ، وبطبيعة الحال ، وجود هؤلاء القراء.
أرشيف