صناعة Hex NFC: التطبيق الأمثل لأدوات NFC

Hex NFC أداة NFC بمستوى احترافي طُوّرت من الصفر على مدى 4 أشهر، ويستعرض هذا المقال كيف طُوّرت وما الذي تطلّبه ذلك.

Matthew Scott13 دقيقة قراءة
An NFC chip with a passport on the left and a PASMO transit card on the right.

ملاحظة

سيصدر Hex NFC خلال الأيام القليلة المقبلة، اعرف المزيد على apps.hex.pro/hex-nfc

قبل نحو 4 أشهر، وخلال رحلة في عطلة نهاية الأسبوع إلى ملبورن، اصطدمت بي فكرة أول تطبيق لـ Hex Pro كشاحنة يقودها سائق ثمل. وهذه المقارنة في محلها، لأن هذا بالضبط ما شعرت به بعد شهرين من بدء المشروع.

NFC: وضع يرثى له

قبل ذلك بأيام، كنت أساعد صالة الألعاب الرياضية المحلية في إعداد حل دفع لثلاجتها الصغيرة (التي تبرعت بها بكل كرم بعد 3 أيام من شرائها من Bunnings بمبلغ 1000 دولار أسترالي واكتشافي أنها أعلى صوتاً بكثير من أن توضع في غرفة نومي). كان الشاب الطموح الساعي إلى كسب بضعة دولارات إضافية من بيع مشروبات الطاقة يخطط لأن يدفع له الناس عبر PayID. وبوصفي مهندس برمجيات يحترم نفسه، لم أستطع أن أسمح له باتباع نهج مهمل كهذا. فتطوعت لتنفيذ حل دفع عبر NFC مجاناً.

لم أكن في الحقيقة قد عملت مع بطاقات NFC قط آنذاك، لكنني أجريت بحثي ثم دخلت إلى AliExpress وطلبت عبوة من 10 بطاقات NTAG213. ثم جمّعت على عجل بوابة دفع بسيطة باستخدام Stripe. وعندما ذهبت لبرمجة بطاقات NFC الجديدة بعنوان URL الخاص بالبوابة، صادفت شيئاً مثيراً للاهتمام. أكبر تطبيق NFC على App Store لنظام iOS كان لديه 14,000 تقييم، بل مئات الآلاف من التثبيتات إن لم يكن الملايين. فثبّته بطبيعة الحال وجرّبته. فماذا وجدت؟ كان التطبيق سيئاً للغاية متواضع الجودة. لم أصدق أن هذا هو المتصدر. هل حقاً لا نستطيع أن نفعل أفضل من هذا؟ وبصراحة، لا أقصد التقليل من شأن مطوّر ذلك التطبيق. فبالنظر إلى الوراء، أفهم الآن التحديات التي لا بد أنه واجهها في تطوير تطبيقه. لكن يمكن القول إنه كان الشرارة التي أطلقت Hex NFC.

مقدمة إلى NFC

لغير الملمّين، ما هو NFC فعلاً؟ إنه اختصار لـ Near Field Communication (الاتصال قريب المدى)، وهو مصطلح «تقني للغاية» يعني: «قرّب الجهاز من البطاقة لمسحها».

شرائح NFC هي في الواقع حواسيب صغيرة جداً، رقائق سيليكون حقيقية قادرة على إجراء عمليات منطقية وتخزين البيانات. معظمها أبسط من أن يقوم بالأولى، لكن بعضها يستطيع تنفيذ إجراءات مثل التشفير وإجراء عمليات رياضية على أرقام عشوائية (استجابات التحدي). وأروع ما في شرائح NFC أنها لا تملك مصدر طاقة خاصاً بها. وبدلاً من ذلك، يبث جهاز القراءة لديك (في هذه الحالة، iPhone) مجالاً كهرومغناطيسياً يغذّي شريحة NFC بالطاقة. تقنية عبقرية حقاً، والأمر يزداد روعة. ثم تولّد الشريحة في الاستجابة تذبذباً مغناطيسياً إيقاعياً يكتشفه القارئ ويحوّله إلى بتات قابلة للقراءة.

الجزء الصعب هنا هو وجود مجموعة متنوعة من طرازات شرائح NFC ومصنّعيها، ولكل منها بروتوكولاته وبنيته الخاصة، وليست كل أوراق بياناتها شفافة بوجه خاص.

تحديات العمل مع NFC

أول ما فعلته بعد عودتي من ملبورن إلى Sunshine Coast هو البدء في بناء محاكيات افتراضية لشرائح NFC المختلفة. لم يكن لدي آنذاك سوى عدد قليل من بطاقات NFC. كان مخزوني في البداية 5 بطاقات NTAG213 من مغامرة صالة الألعاب، وبطاقتي نقل عام غامضتين (بطاقة Pasmo يابانية وبطاقة Myki من ملبورن)، كان iPhone قادراً على مسحهما لكنه لم يعطِ أي تلميحات واضحة عنهما.

افترضت أنه إذا كان توثيق شرائح NFC على الإنترنت متيناً بما يكفي، فيمكنني تجنب الحاجة إلى امتلاك شرائح NFC مادية من كل نوع. سأكتفي بتشغيل منطقي عبر المحاكيات وأعرف من هناك أنه يعمل. كم كنت ساذجاً حينها.

سارت أمور NTAG213 في الواقع على نحو جيد إلى حد معقول. فهي أكثر أنواع شرائح NFC الاستهلاكية شيوعاً وموثقة جيداً. جهاز مجرّب في الميدان يُستخدم عالمياً ومتوافق بقوة مع المعايير المفتوحة.

وعندما بدأت العمل على بطاقتي النقل الغامضتين، أدركت أن الأمور لن تكون بالبساطة التي تصورتها. تبيّن أن بطاقة Pasmo من صنع Sony، وهي بطاقة ذكية من نوع FeliCa تُستخدم في جميع أنظمة النقل العام في اليابان، بقدرات تفوق عملياً كل الشرائح الأخرى من النوع المماثل. أما Myki فكانت MIFARE DESFire EV3 للقراءة فقط، من صنع NXP، المصنّع نفسه لـ NTAG213.

كان الهدف إنشاء أداة NFC المثلى، شيء يتفوق على الأدوات الأخرى بفارق شاسع. ومع توسع متطلبات القدرات، ومع معرفتي المتزايدة بعدد الشرائح المتاحة فعلاً وتنوعها، أدركت أنني لا أستطيع تجنب الاختبار في العالم الحقيقي. فطلبت تشكيلة واسعة من الشرائح في محاولة لتعظيم تغطيتي. يمكنك الاطلاع على القائمة الكاملة هنا.

وهكذا بدأ تطوير المحاكيات بجدية. حصلت كل شريحة على محاكٍ خاص بها، واختبرت بدقة كل عملية وقدرة على سيليكون حقيقي لضمان مطابقة المحاكيات للشرائح الحقيقية بأقرب ما يمكن. ليس بالأمر الهيّن، ويستهلك وقتاً طويلاً للغاية، لكنه يستحق العناء بنسبة 100%. أمضيت مئات الساعات لأحصل على موثوقية مبهرة وعلى القدرة على إجراء اختبارات الوحدات مقابل كل طراز من السيليكون الحقيقي.

الترخيص ومصدر البيانات وحزم الأطراف الثالثة

من العقبات الكبرى في هذا المشروع أنني أردت تطوير هذه الحزمة دون أي اعتماد على مكتبات أو اعتماديات خارجية (باستثناء Apple). فالروح الكاملة لـ Hex Pro هي الخصوصية والثقة والنزاهة. إنها مجموعة من الأخلاقيات غُرست فيّ منذ الطفولة، وأعتقد حقاً أن فعل الأشياء على الوجه الصحيح سيقود إلى نجاح أكبر من فعل ما هو مريح. وطوال مسيرتي المهنية، بذلت دائماً قصارى جهدي للحفاظ على ثقة العملاء، والثقة الضمنية التي مُنحت لي في أدواري قادت دائماً إلى علاقات عمل أكثر كفاءة وإنتاجية. لذا، من الأولويات بالنسبة لعملائي المستقبليين أن أمنحهم الاحترام نفسه.

ولهذا تجنبت حزم الأطراف الثالثة تماماً، مما يسفر في النهاية عن تطبيق أنظف بكثير ومطوّر بالكامل بأدوات النظام الأصلية. لا أحد يدسّ في هذا التطبيق شيئاً لا أعلم به. ومع ذلك، كان عليّ أن أطوّر بنفسي تنفيذاً خاصاً لما يلي:

  • حسابات الأعداد الكبيرة والمنحنيات الإهليلجية (منحنيات Brainpool) لبروتوكول PACE.

  • مشغّلات الشرائح ومعالجة NDEF.

  • قارئات سجل الرحلات (لشرائح FeliCa)

  • مكتبة أسماء محطات النقل العام اليابانية

PACE، مشكلة جوازات السفر

من الميزات الفريدة في Hex NFC قدرته على قراءة بيانات جواز السفر الإلكتروني. إنها قدرة مذهلة بوجه خاص وغير مستغلة بما يكفي في أجهزة iOS. علمت بوجودها للمرة الأولى عند المصادقة عبر تطبيق هوية حكومي قبل عام. ويمكن القول إنني افتُتنت تماماً بإمكانية إثبات هويتك بمجرد النقر ببطاقة هويتك. وبما أنني عرفت أن ذلك ممكن، عرفت أنه لا بد لي من الحصول عليه.

كان قلقي الوحيد أن تكون هذه الميزة مقصورة على تطبيقات الجهات الحكومية. ولم يكن ثمة داعٍ للقلق، إذ تبيّن أن شرائح جوازات السفر الإلكترونية موثقة جيداً وسهلة التعامل على نحو مفاجئ... كان هذا ليكون الحال لو أن Apple وفّرت دعماً أصلياً لخوارزميات التشفير من نوع PACE. لكن لم يحالفني الحظ، ومع قيدي «لا حزم من أطراف ثالثة»، عنى ذلك أن أطوّر تنفيذي الخاص لمنحنيات Brainpool. مهمة تستهلك وقتاً طويلاً للغاية، لكنها استحقت العناء بنسبة 100%. وقدرات مسح جوازات السفر الناتجة مذهلة، وقد حظيت بامتياز اختبارها على جواز سفر أسترالي، وعلى نحو ملائم، على جواز سفر نيبالي أيضاً. إنها ميزة أنصح الناس حقاً بتجربتها بأنفسهم؛ ستُدهش بما يُحفظ من معلومات في القسم المتاح من شريحة جواز سفرك (إلا إذا كنت أمريكياً، فحينها لا يكاد يوجد شيء).

أسماء محطات النقل العام اليابانية

الأمر الكبير الآخر بالنسبة لي كان بطاقات النقل اليابانية. قدرة كنت أعرف أنها ممكنة، لكنني لم أرها قط في قارئ NFC من قبل. هذه البطاقات مذهلة. فهي قادرة على حفظ كل أنواع المعلومات. تتابع رصيد بطاقتك، وتحتفظ بسجل لمتى وأين تدخل إلى وسائل النقل العام وتخرج منها، بل وتسجّل متى تنفق المال في المتاجر الصغيرة أو آلات البيع.

والتحدي الكبير أن الحكومة اليابانية ليست عوناً كبيراً عندما يتعلق الأمر بربط معرّفات المحطات بأسمائها الفعلية. والآن، لو كنت شخصاً وضيعاً، لسرقت البيانات ببساطة من مجموعات الهواة المرخصة على الإنترنت. لكننا نفعل الأشياء على الوجه الصحيح هنا، لذا قررت تطوير قاعدة بياناتنا الخاصة من الصفر. مضيت واستنتجت أسماء المحطات في بطاقة Pasmo الخاصة بي، ثم سألت في الجوار وحصلت على بطاقة Suica. وقدمت كلتاهما معلومات عن الأماكن التي سافرت إليها أنا والجار. ومن هناك بدأت العمل على قاعدة البيانات. وللأسف، كانت المجموعة لدينا كسائحَين صغيرة. وهنا تنازلت عن قاعدتي «لا طلبات شبكة»، وأضفت وظيفة «أرسل ما لديك» لمن يرغب في المساهمة بمعلوماته عن أسماء المحطات. وآمل أن نبني مع الوقت جدولاً مفتوح المصدر مشروعاً لربط البيانات، يمكنه منافسة الهواة الذين يرخّصون (بحق) ضد استخدام الآخرين لعملهم.

تنوع الشرائح ودعمها

يبذل Hex NFC جهداً كبيراً في محاولة دعم كل شريحة تتيح Apple مسحها. لم أتمكن من الحصول على كل نوع من الشرائح في سيليكون فعلي، لكنني حصلت على تغطية كافية مكّنتني من استنباط بنية الشرائح الناقصة من أوراق البيانات والطرازات المشابهة. على سبيل المثال، لم أتمكن قط من الحصول على NTAG215، لكن بنيتها مشابهة بما يكفي لـ NTAG213 وNTAG216 بحيث استطعت بناء محاكٍ ينبغي أن يغطيها بالكامل.

وفيما يلي الشرائح التي اختبرتها بالكامل على السيليكون.

  • NTAG 210µ
  • NTAG213
  • NTAG216
  • NTAG424 DNA
  • Ultralight EV1 128b
  • Ultralight C
  • ICODE SLIX
  • ICODE SLIX2
  • DESFire EV3
  • FeliCa (Suica وPasmo)

وأعلم أيضاً أن MIFARE Classic تعمل فعلاً، لكن Apple ببساطة لا تمسحها.

ويمكنك أن تتخيل، مع القراءة والكتابة والتشفير والقفل الدائم ومحاولات كلمة المرور المحدودة ومسح/تفريغ كتل البيانات وغير ذلك، حجم الاختبارات المخبرية الهائل المطلوب. ستندهش من عدد التفاصيل الدقيقة التي أغفلتها أوراق البيانات واحتاجت المحاكيات إلى تحديثها. وأنا في الواقع واثق تماماً في هذه المرحلة أن محاكيات Hex NFC هي أفضل تمثيل للسيليكون الحقيقي على الإنترنت.

دعم سجلات NDEF

إلى جانب كل ما سبق، أدرجت كل نوع مفيد من السجلات خطر على بالي. وتشمل ما يلي:

النص، وروابط URL، وروابط تطبيقات Android/iOS، وبيانات اعتماد Wi-Fi، وجهات الاتصال، والبريد، والهاتف، والرسائل النصية القصيرة، وFaceTime، والخرائط، وتسليم Bluetooth، وعناوين العملات المشفرة، والاختصارات (Shortcuts)، والبيانات المقولبة والبايتات الخام، إضافة إلى الملفات الشخصية الاجتماعية عبر 22 منصة والبحث عبر سبعة محركات.

إذا كانت لدى أي شخص توصيات أو طلبات لدعم إضافي، فعنوان [email protected] مفتوح.

التحفة الناتجة

ما انتهينا إليه هو ما أنا متأكد من أنه تطبيق NFC الأكثر قدرة والأفضل تصميماً على iOS. يوفر أدوات بمستوى احترافي تشمل دعم الكتابة الجماعية على البطاقات، وعرضاً متفوقاً للمعلومات والبيانات، وحفظ قوالب/إعدادات مسبقة للبيانات، ووحدة تحكم متقدمة بالأوامر للمستخدمين المتمرسين. وهو متين ويتعامل جيداً مع النقرات السيئة، ويمكن استخدامه لتهيئة شرائح المصنع، وإصلاح المعطوبة منها في بعض الحالات.

الشفافية ولماذا هو مجاني

إذن إذا كان بهذه الجودة، فلماذا لا أبيعه بدلاً من ذلك؟ أمضيت مئات الساعات في العمل عليه، بينما كان الناس يدفعون لي عادة نحو 100 دولار أسترالي في الساعة مقابل عملي في الماضي. نظرياً، أكثر من 30,000 دولار أسترالي مستثمرة في هذا إذا حسبت ذلك. ألا ينبغي أن أسترد تكاليفي؟ وربما لاحظت أيضاً أنه مرخّص بموجب BSL 1.1 (Business Source License)، وهي رخصة شفرتها متاحة، وستتحول تلقائياً إلى مفتوحة المصدر بعد بضع سنوات.

حسناً، لدي خطط أكبر. Hex Pro شركة ناشئة في الوقت الراهن، مما يعني أنه ليست لدي سمعة راسخة ولا قاعدة مستخدمين. وأملي أن ينتشر Hex NFC ويصبح أداة شائعة، ومنافساً حقيقياً لأكثر تطبيقات NFC شيوعاً. لن أضع أبداً إعلانات من طرف ثالث في أي من تطبيقاتي. لن أفعل ذلك من حيث المبدأ. لكن عندما أطلق مشاريع أخرى، أود أن أضع لافتة ترويج متبادل أسفل الصفحة الرئيسية. لا شيء متطفل، لكن بما يكفي لعرض أعمالي الأخرى أمام من يقدّرون جودة Hex NFC ويهتمون بتطبيقات أخرى عالية الجودة.

لذا فهدفي الأساسي، إلى جانب تقديم برنامج تشتد الحاجة إليه للعالم، هو بناء سمعة Hex Pro، والترويج المتبادل لتطبيقات تدرّ المال فعلاً.


آمل أن يدعم المستخدمون هذا المسعى، وأتطلع إلى رؤية الناس يستمتعون بـ Hex NFC.

ولعنايتكم، أقدم Hex NFC.