تجربتي مع ترمكس

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

إلى أعماق ترمكس

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

وكل من يشرح ترمكس لا يعطي نبذة واضحة عن تفاصيله، بل يبدأ مباشرة بأوامر pkg update ثم pkg upgrade وثم حمل الأداة الفلانية عن طريق الأمر apt install ... وهأنت ذا تستخدم ترمكس بدون أن تفهمه، أو بفهم سطحي جدًا لتبدو مثل Skids يستخدم سطر الأوامر.

إذًا فقط دعونا نعود بعض الخطوات إلى الوراء لنفهم ما هو ترمكس أصلًا وكيف يعمل بشكل مُبسط.

يُعرف ترمكس نفسه على موقعه الرسمي بأنه تطبيق مُحاكي طرفية (terminal emulator) ولكن ما معنى محاكي طرفية أساسًا؟

محاكي الطرفية

مصطلح (terminal emulator) يقصد به برنامج حاسوبي يحاكي شكل وطريقة طرفية الحاسوب، أي أنها ليست حقًا طرفية، بل واجهة رسومية تحاكي عمل الطرفية.

صورة لطرفية حاسوب 2250 Model 4 من IBM
صورة لطرفية حاسوب 2250 Model 4 من IBM

تسمح لك هذه الواجهة باستخدام الواجهة النصية (Command Line Interface) وتنفيذ البرمجيات عبرها. تطبيقات الواجهة النصية هدفها مثل هدف تطبيقات الواجهة الرسومية، ويكمن الفرق الجوهري أنك في حالة تطبيقات الواجهة النصية عليك التعامل عن طريق سطر الاوامر، وليس عن طريق أزرار وحقول إدخال نصية كما تعودت في هاتفك أو حاسوبك.

إذًا كيف ينفذ ترمكس الأوامر؟ طالما كنت كلمة محاكي طرفية لا تصف لنا كيف...

نظام أندرويد

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

ببساطة يعمل ترمكس بطريقة ذكية تضمن له سرعة وأداء وخِفة، ترمكس في وضعه الطبيعي لا يحاكي توزيعة من توزيعات لينكس، وذلك مذكور في ويكي ترمكس الرسمية:

"Termux is neither a virtual machine nor any other kind of emulated or simulated environment. All provided packages are cross-compiled with Android NDK and only have compatibility patches to get them working on Android."

بل يعمل وينفذ الأوامر بشكل طبيعي عبر Android NDK و NDK إختصار لجُملة Native Development Kit، هو عبارة عن واجهة برمجية ومجموعة أدوات تتيح للمبرمج كتابة Native Code "كود أصلي" عبر لغات مثل C و C++ والتعامل مع العتاد الفيزيائي بشكل أعقد، من أجل الحصول على أقصى أداء ممكن في تطبيقاتهم التي يبرمجونها لتعمل على هواتف أندرويد، وهذا ما يجعل ترمكس يعمل بدون الحاجة إلى صلاحية root ودون الحاجة للوصول إلى ملفات نظام أندرويد بشكل مباشر. أي بعدما ينفذ الأمر الذي كتبته، سيقوم بإرجاع لك الناتج في تلك الشاشة السوداء.

وكجواب لعنوان سؤال "هل حقًا ترمكس يخترق؟" الإجابة تعتمد على كيفية استخدامك واستغلال معرفتك بكيف يعمل ترمكس لتستخدمه في محاولة الإختراق.

ترمكس ومجتمع مفتوح المصدر، والحِزم

لدى ترمكس مستودع الحِزم "Packages Repository" يحتوي على المئات من الأدوات الشهيرة على توزيعات لينكس، يقوم مجتمع ترمكس بمعالجتها وتعديلها لتناسب العمل بشكل جيد مع نظام أندرويد والحدود التي يضعها النظام نفسه، حيث لا يمكنك تثبيت أي برمجية تعمل على لينكس مباشرةٍ على ترمكس بل أنت بحاجة إلى معالجتها وتعديل بعض الأمور في شفرتها المصدرية ومن ثم إعادة بنائها، حتى تعمل في ترمكس بشكل مناسب. لكن لحظة؟ ما هو معنى حزمة أصلًا؟

الحزمة:

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

في أول تثبيت لك لبرنامج ترمكس سترى رسالة تخبرك بأنه يقوم بتثبيت Bootstrap Packages وفي الحقيقة هذه الحزم يحتاجها ترمكس حتى يعمل بشكل صحيح حيث تتضمن حزم أساسية، مثل cat و termux-setup-storage و bash وغيرها...

كيف وفي ماذا استخدم ترمكس؟

حسنًا بعد هذه المقدمة الدسمة في ماذا استطيع استخدام ترمكس؟، ببساطة في أي شيء!! فعليًا تستطيع فعل الكثير، لديك محاكي طرفية يعمل على هاتفك، فعلى سبيل المثال تستطيع تعلم البرمجة عن طريق تثبيت بايثون مثلًا pkg i python أو الدخول إلى أجهزة افتراضية بعيدة عن طريق ssh pkg i openssh, وحتى استخدام هذه اللغات وحزم والأدوات في الأتمتة...

الأتمتة: أقتباسًا من ويكيبيديا العربية:

"أَتْمَتَةٌ (مصطلح مُعَرَّب) يطلق عليها أيضًا تَشْغِيلٌ آلِيٌّ أو تَلْقَنَةٌ (بالإنجليزية: Automation) هو مصطلح مستحدث يطلق على كل شيء يعمل ذاتيًا بدون تدخل بشري."

تستطيع استخدام ترمكس في فعل أشياء كثيرة برمجيًا على سبيل المثال: تستطيع تحويل مجموعة فيديوهات إلى صوت mp3 عن طريق حزمة ffmpeg, واستخدام العديد من الأدوات سطر الاوامر "CLI Tools" مثل youtube-dl لتحميل من يوتيوب والمواقع الأخرى بسهولة. تستطيع حتى تشغيل تطبيقات أخرى وجعلها تفعل شيء معينًا مثل عرض صورة ما بإستخدام أحد برامج عرض الصور المثبتة في جهازك، أو فتح ملف معين، وأتمتت تلك العمليات

ليس هناك حدود لما تستطيع فعله طالما كنت تجيد التعامل مع سطر الأوامر جيدًا، وكانت لديك الخبرة والإلمام الكافي لصنع أفكارك.

أنا شخصيًا قمت ببرمجة سكربت يقوم بتشغيل لي أي مقطع يوتيوب كصوت في الخلفية وجعلته يعمل على مشغل الفيديو المفضل لدي "MX Player Pro" عن طريق أتمتت عملية كنت أقوم بها على ترمكس في سطر الأوامر بنفسي، واستخدمت خاصية استقبال الروابط التي يتم مشاركتها إلى ترمكس عن طريق ~/bin/termux-url-opener والآن كل ما علي هو فتح يويتوب ومشاركة الأغنية المفضلة لي إلى ترمكس وسيفتحها لي في تطبيق "MX Player Pro" والذي يتيح لي عمل الكثير مثل تكرار جزء معين فقط من الأغنية أو تسريعها وتطبيئها والأهم من ذلك سوف تعمل الأغنية في الخلفية.

الخاتمة والخلاصة

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

termux android