أشعل النار في حقل نظيف أو كيفية جمع عناوين MAC لأجهزة Wi-Fi القريبة

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




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

كشفت غوغل سريعة حول هذا الموضوع عن آلية جمع البيانات. تم إطلاق محول WiFi في وضع الاستماع الهوائي وتم تشغيله عبر القنوات ، والتقاط الحزم ، وتحليلها وجمع البيانات المستلمة. كانت هناك أيضًا أدوات مساعدة مفتوحة جاهزة لهذا الغرض ، على سبيل المثال ، airodump-ng من aircrack-ng . أولئك. للتكرار ، نحتاج فقط إلى تشغيل هذه الأداة ، ويفضل أن يكون ذلك على جهاز مدمج ومحمول منفصل ، ونقوم بدفع البيانات المستلمة إلى قاعدة البيانات ، والتي نحصل منها بعد ذلك على قوائم جاهزة لعناوين MAC لشبكات الإعلانات. يبدو أن المهمة بسيطة ، تم حلها في واحدة ، على الأكثر - ليلتين من العمل على مهل ، كل شيء جاهز تقريبًا.

بالطبع ، لم يكن هذا هو الحال أبدًا.

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

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

كانت أداة إعادة توجيه البيانات إلى الخادم هي أبسط تطبيق Erlang مكتوب ، والذي كان من المفترض أن يسحب البيانات من مخمد الأثير (التحليل) ، ويسلسلها (تسلسل Erlang الأصلي) وينقلها عبر مقبس الويب إلى الخادم عبر HTTPS (دون التسبب في الشك أنظمة DPI وعدم اختراع البروتوكولات الخاصة بها). إن معالجات Allwinner H2 + المستخدمة في Orange Pi قوية بما يكفي لتجميعها وتصحيحها مباشرة على الجهاز. مرة أخرى ، من الناحية النظرية ، كل شيء على ما يرام.

بدأت الممارسة.

1. كما اتضح ، كانت شبكة WiFi المدمجة في Orange Pi جيدة فقط لالتقاط نقطة وصول وإلقاء البيانات في الخادم. حسنًا ، بشكل أدق ، ليس المحول نفسه ، ولكن دعم شرائحه في النواة. بالنسبة لمعظم مشاريع إنترنت الأشياء ، قد يكون هذا كافياً. ومع ذلك ، كنا مستعدين لهذه الضربة ، لأن الدراسة الأولية لموقع aircrack-ng أعطت فكرة واضحة وغامضة للغاية "لن تعمل في كل مكان ، إذا لم يكن هذا خطأنا ، فسوف نرفق قائمة بشرائح اختبارها". تم العثور على جميع أجهزة Atheros تقريبًا (التي تم شراؤها بواسطة Qualcomm) و Ralink (التي تم شراؤها بواسطة MediaTek) في القائمة ، والتي ألهمت بعض العملاء المحتملين في حالة الانتقال من ARMs الصينية الشرسة إلى MIPSs الزائدة أكثر من شرائح لأجهزة التوجيه.

ولكن ، في حين أن كل هذا يمر من المخاط والعصي ، أي نموذجي - تحتاج إلى حل المشكلة هنا والآن. لذلك ، استفدنا من هذه الأنواع الغريبة في عصرنا التكنولوجي (عندما يكون الاتصال اللاسلكي في أي وضع أخف) كمحول Wi-Fi USB. دراسة قائمة التوافق ومقارنتها بمجموعة أقرب متجر أعطت الضحية - DLink DWA-160 في المراجعة C1 (وهذا مهم لأن مراجعات الأجهزة الأخرى استخدمت شريحة مختلفة وتسببت في صداع من حيث فرض العمل). النطاق المزدوج ، الذي لا يتطلب الرقص مع السائق ، نظرًا لأن الدعم كان في الأساس لفترة طويلة ، فقد أصبحت هذه الصافرة مفيدة في وقت لاحق في مشاريع أخرى ، لذلك اشتريتها ، ربما جميعًا (خمس قطع) كانت متوفرة في مدينتنا الإقليمية.



بعد التأكد من أن الجهاز كان يعمل ، قمت بتوصيله بجهاز لوحة واحدة وقمت بإيقاف تشغيل محول WiFi المدمج مع توقع توفر الإنترنت من خلال واجهة Ethernet.



تم وضع الخنزير الثاني بواسطة aircrack-ng. تم إنشاء هذه المجموعة من الأدوات بهدف القرصنة.عمليات التحقق من اختراق WiFi ، أي كتبه قراصنة للقراصنة. لا أعرف ، بفضل المنطق الذي فضلوا فيه استخدام وحدة تفريغ الأثير اللاسلكية ليس في شكل نهج أحادي الاتجاه تقليدي ، لبصق نص منظم لمزيد من المعالجة ، ولكن لإنشاء واجهة مصطلح كاملة لعرض المعلومات عليها في الوقت الفعلي تقريبًا (مع مراعاة إعدادات المحطة الطرفية) من خلال الشبكات والأجهزة المكتشفة ، لكنهم فعلوا ذلك بالضبط. نعم ، لقد وجدت Python API بدرجة غير معروفة من الاستعداد لكل هذا ، ولكن مرة أخرى ، العنكبوت النموذجي الذي عاش في رأسي منع بشدة سحب لغة أخرى ، والتحول إلى لغة أخرى (نتذكر ، كان جزء الخادم جاهزًا ومكتوبًا جزئيًا بالفعل كان بعيدًا عن Python-e) أو ، لا سمح الله ، تنفيذ airodump-ng بنفسك على أساس tcpdump. وبالتالي ،كان علي أن أبحث عن الحلول.

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

كان الحل لهذا هو آلية inotify في النواة ، بإخطار عمليات الملف - بمجرد أن شاهدت التعليمات البرمجية التغييرات على ملف البيانات ، بدأت قراءتها مع تأخير طفيف (بدلاً من ذلك ، مع وجود قيمة نفسية بحتة ، طمأنة مؤلفها). أظهرت التجارب أنه في هذه الحالة ، لا يحدث فشل في القراءة وفقدان البيانات. حسنًا ، لطيف ، CSV parsim ، يتم وضعه في الهياكل الداخلية وإرساله إلى الخادم. نقوم بحفظه على الخادم في PostgreSQL (شكرًا لـ jsonb) وبعد ذلك يمكنك بالفعل إجراء الاستعلامات وإلغاء تحميل الاستمارات وما إلى ذلك. سنضيف أبسط تفويض باستخدام مفتاح متماثل ، حتى لا يتم حشوه هناك ويمكننا ربط البيانات إلى النقطة التي تم تثبيت الجهاز فيها ، ويبدو أن كل شيء على ما يرام ، يمكنك الذهاب إلى المعركة.

نعم ، كيف الآن. كشفت مجموعة اختبار هذه السلسلة (وكتابة التعليمات البرمجية وتصحيح الأخطاء أمسيتين حقًا) حقيقة مضحكة - عدد العناوين التي يتم التقاطها يوميًا في مكتبنا ، بعيدًا تمامًا عن الأماكن العامة القابلة للتمرير ، يتقلب حول بضعة آلاف قطعة. نعم ، بالطبع ، كان هناك فندق صغير قريب (كان في وقت العزل السابق للحجر الصحي ، لا تفاجأ) ، ولكن لا يزال هناك الكثير.

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

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

كشف التثبيت الأول على الفور عن مجموعة من العيوب.

أولاً ، تأتي معظم لوحات النماذج الأولية الصينية مع ذاكرة microSD طويلة المدى بدلاً من رقائق NAND / NOR المحمولة. يتم إجراء استثناء فقط لـ SoC القوية ، والتي تعد زائدة عن الحاجة لهذه المهمة. للأسف ، MicroSD هو الصداع المباشر للمشغل - أكسدة الوسائد ، وفشل بطاقات SD ، واعتماد جهات الاتصال على درجة الحرارة داخل العلبة (وهو أمر كبير ، فالرقائق الصينية ليست فعالة جدًا في استهلاك الطاقة ، وغالبًا ما يتم حساب الألواح بالكامل استنادًا إلى ذروة استهلاك الطاقة ، لذلك بدون مشعاع إضافي ، حسنًا ، لا يمكن). لذلك اتضح أنه عندما تم سحب الطاقة من الجهاز ، وصل النظام إلى حالة غير صالحة للعمل - فقد تضررت الملفات ذات الرمز الفرعي ERTS ، بعد إعادة تشغيل التطبيق رفض العمل.

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

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

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

في تلك اللحظة ، تذكرت أنه في مجموعتي كان هناك لوح Carambola 2 الرائع من الرفاق الليتوانيين 8 . وإذا ذهبت إلى موقعهم ، يمكنك العثور على جهاز أكثر إحكاما على نفس الشريحة تسمى Centipede. أظهرت التجارب السابقة مع هذه الفئة من الأجهزة أن Erlang يناسب تمامًا 16 ميغابايت من ذاكرة الفلاش المخصصة (وبقايا صغيرة للتطبيق). ناقص الوحيد (وهو بالأحرى زائد) هو MIPS منخفض الطاقة والحاجة إلى تجميع متقاطع ، مما يجعل بناء تطبيق Erlang أكثر غير تافه. لكنها كانت بالفعل طريقًا معروفًا ، لذلك طلبت بضع حريتي ، وحتى الآن قمت بنقل الإصدار الحالي الذي يعمل مع الخادم إلى Carambol.



عندما وصلت المكونات ، بدأت مرحلة جديدة. تم دعم شريحة AR9331 بنجاح بواسطة aircrack-ng خارج الصندوق ، ويمكن أخذ البيانات من واجهة Ethernet ، وتم جمع أحدث إصدارات OpenWRT و ERTS واختبارها بنجاح. تمت إعادة كتابة التطبيق - تم نقل جزء من الرمز إلى رمز الجهاز ، وتم تجميع البيانات في عملية منفصلة وإلقاءها بشكل دوري في ملف في شكل مصطلح Erlang متسلسل. إلى هذا تم رسمها أبسط واجهة على شبكة الإنترنت التي تتلقى البيانات عبر websocket. يتم تجميع منافذ inotify و erlexec بأمان مع OpenWRT.

تم الخلط بين شيء واحد فقط - بقيت 300 كيلوبايت على البيانات. لن يكون الأمر صغيراً إذا قمت بتخزين عناوين MAC لأجهزة العملاء فقط ، ولكن airodump-ng يمنحك معلومات أكثر إثارة للاهتمام ، بما في ذلك عناوين نقاط الوصول ، ومعرفات ESSID الخاصة بهم ، وما إلى ذلك ، والتي سيكون من الجيد أيضًا تذكرها. فقط في حالة. حسنًا ، سنتصرف وفقًا للظروف.

نقوم بجمع والتحقق. تم الكشف عن مشكلة على الطاير.

Openwrt، كما نعلم جميعًا ، هذا هو بناء Linux البسيط المصمم خصيصًا للأجهزة ذات الذاكرة المحدودة. ونتيجة لذلك ، تم التخلص من شيء يمكن التخلص منه بدون ألم وتبسيط يمكن تبسيطه ، بما في ذلك وضع المستخدمين المتعددين. أولئك. إنها ممارسة شائعة عندما تبدأ الشفرة من الجذر وتعمل مع أقصى الامتيازات ، والتي ، بالطبع ، تسهل المشكلات المتعلقة بالمجموعات والمستخدمين والتحكم في أفعالهم. نعم ، نعم ، الحرف S في اختصار إنترنت الأشياء هو المسؤول عن الأمن. المشكلة هي أن erlexec، التي كنت أستخدمها لتشغيل وإدارة airodump-ng ، لا يمكنها إجراء عمليات من الجذر - لهذا ، فهي تحتاج إلى مستخدم إضافي ، والتي نيابة عنها ستفرخ العمليات المعينة لها. وعند إنشاء مستخدم إضافي بمستوى امتياز مختلف ... بشكل صحيح ، فإنه يمنع airodump من الوصول إلى جهاز الشبكة. يبدو أن فك هذا القيد من المكتبة عملية بطيئة ، لذلك تم استبدال erlexec بالمنافذ - الآلية المدمجة لإطلاق عمليات الطرف الثالث في Erlang. تافه ، لكن غير سار.

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

ومع ذلك ، لم تتمكن الأيدي من التحقق من قابلية تشغيل هذا الخيار - اللعبة التالية - ظهرت Onion Omega2 + على Mediatek 7688. مثل إخوانهم ، مصمم LinkIt Smart 7688 ، كان هناك الكثير من الأشياء، ولكن الشيء الأكثر أهمية هو ضعف ذاكرة الفلاش ، مما يعني أنه لم يعد بإمكانك القلق بشأن نقص المساحة لتخزين البيانات. حسنا

نطلب ، انتظر. شهر. اثنان. انفجر الصبر - نكتب للأمريكيين حول موضوع "أين البضاعة يا زين". الصمت. فتح نزاع على PayPal. الأمريكيون يستيقظون. يقولون ، "أوه ، فشل نظام قبول الطلبات لدينا ، الآن سنرسل كل شيء." يرسلون ، ننتظر ثلاثة أسابيع. فوه ، الجهاز في متناول اليد وحتى يعمل.



هنا نحتاج إلى إجراء بحث صغير - على الرغم من حقيقة أن لدي العديد من لوحات LinkIt Smart على مسافة قريبة ، لم أعتبرها كمنصة ، لأنه في بداية الملحمة ، فشلت محاولة استخدامها كأجهزة التقاط. ثم تم توفير محركات الرقاقة في شكل وحدات مجمعة لإصدارات محددة من النواة ، وعلى ما يبدو ، أصبح هذا سبب عدم قابلية التشغيل. في أحدث إصدارات OpenWRT ، ظهر كل من الدعم الأصلي لـ 7688 وبرنامج تشغيل مفتوح ، لذا فهذه مناسبة لإعادة النظر في النهج المتبع في هذه الأجهزة.

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

وفقًا لذلك ، نجمع بين الأساليب السابقة - نستخدم واجهة USB الوحيدة المعروضة على MiniDoc للحصول على صافرة WiFi لمسح المساحة ، و WiFi المدمج - للتحكم في الجهاز كنقطة وصول منخفضة الطاقة. نجمع ، تحقق ، يعمل كل شيء.

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

قمنا بدمج بين صافرة WiFi وجهاز موزع USB. الإعدادات (وهي تعتمد على موضع الجهاز في الحافلة في حالة OpenWRT) غابات ، ولكن هذه تافهة بسيطة. صيح. نحن إخراج استقبال USB-GPS من تحت الأنقاض، لحسن الحظ، وبالفعل لمرة واختبارها ومع كتب متاحةتحليل NMEA-0183 (كان من الضروري تصحيح الكود بالطبع على أي حال). نتحقق - لم يتم اكتشاف الجهاز بأمان من قبل النظام ، ومن الواضح أن هناك نقصًا في برامج التشغيل. نقوم بجمع محركات USB التسلسلية وإسقاطها على الجهاز - الصمت أيضًا. ثم نتذكر أنه في الأنظمة الكبيرة لم يتم الكشف عن صافرة GPS على أنها ttyUSBx ، ولكن مثل ttyACMx ، أي مودم GSM USB. حسنا ، حسنا ، المكالمة الثانية لإضافة السائقين ، النجاح.

نأخذ الرمز ، ندمج في التطبيق. أضف sqlite3 إلى التطبيق كمخزن. الآن لن يكون من الضروري التحقق من توفر السجل في الدولة ، وبشكل عام يتم تبسيط العمل بالبيانات إلى عدد صغير من الأسطر. عند وضع كل ذلك معًا ، نعلم عند إضافة البيانات لأخذ قراءات نظام تحديد المواقع العالمي (GPS) ، نقوم بتصحيح رمز JS على الوجه ليتم عرضه في حالة عدم اكتمال مجموعة البيانات (يمكن أن يحدث عندما لا يكون GPS قد التقط الأقمار الصناعية ، وبيانات المسح الجوي قادمة بالفعل). نتحقق من العمل - يبدو أنه يعيش. يمكنك أن تعلن انتصارًا مؤقتًا.



لبضعة أسابيع من العمل المتواصل - الكثير من البيانات على المحطات على الهواء وعلى العملاء. الآن أنا أعاني من إغراء تقديم هذا الجهاز لمتخصصي أمن المعلومات للتحكم في البث في المناطق الموكلة والدولة للسيطرة على حركة هواتف المواطنين. إنها نكتة بالطبع هم أنفسهم يعرفون كل شيء.

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

All Articles