TgWitness / التوثيق

مرجع / الإعداد

الاتصال، والوكلاء، وحماية البيانات

المصادقة، ومجموعات البروكسي التلقائية، وأنماط عناوين IP، وسياسة الحل البديل، والطلبات الخارجية، والتخزين السري.

يصف هذا المستند سلوك TgWitness 0.7.0 وحدوده. تعتبر المصادقة، والوصول إلى المصدر، والاتصال بالشبكة، واكتمال التقاط البيانات حالات منفصلة. للاطلاع على خطوات تسجيل الدخول، وتنسيقات الملفات، والحسابات المتعددة، ابدأ بـ «الحسابات وتنسيقات الجلسات». وللاطلاع على سياسات الأحداث وسلوك إعادة التشغيل، انظر «كيفية عمل عملية التجميع».

طرق المصادقة#

يُعرّف معرّف واجهة برمجة التطبيقات (API ID) وتجزئة واجهة برمجة التطبيقات (API hash) التطبيق؛ ولا يحلان محل تسجيل الدخول إلى الحساب. وهما اختياريان في TgWitness. ترتيب الأولوية: الزوج الذي يتم إدخاله في النموذج، ثم الزوج من ملف JSON المستورد للحساب، ثم الزوج المحفوظ في مساحة العمل، ثم المجموعة المدمجة المكونة من 50 من الأزواج العامة، التي يتم تجربتها بترتيب عشوائي مع التناوب التلقائي عندما يرفض Telegram أحدها. يتم إرسال زوج Telegram Desktop (2040) فقط مع وصف مطابق لعميل Telegram Desktop. يمكن استخدام الزوج الخاص بك من أدوات تطوير واجهة برمجة التطبيقات (API) على my.telegram.org مع جميع حساباتك؛ ولا يزال لكل حساب تفويضه الخاص.

الطريقة المتطلبات دعم TgWitness
رقم الهاتف، رمز التحقق، المصادقة الثنائية (2FA) اختيارية الوصول إلى الحساب؛ زوج واجهة برمجة التطبيقات (API) اختياري تسجيل الدخول إلى لوحة التحكم
مفتاح المصادقة HEX + معرّف DC مفتاح كامل مكون من 512 حرفًا وDC 1–5 علامة التبويب «مفتاح المصادقة المباشر»؛ يتم التحقق من معرّف المستخدم الاختياري قبل حفظ المصادقة
Telethon StringSession سلسلة جلسة صالحة تسجيل الدخول إلى لوحة التحكم
Telethon SQLite .session نص مغلق ومتسق استيراد مباشر لمخططات اللوحات 7/8؛ واجهة سطر الأوامر (CLI) اختيارية للعمل دون اتصال بالإنترنت
Pyrogram SQLite .session جلسة مستخدم إنتاجية مغلقة الاستيراد المباشر لمخططات اللوحات 2/3
Telegram Desktop TData ZIP حساب واحد حديث؛ رمز مرور محلي في حالة الحماية تحويل داخل الذاكرة مع فحوصات المجموع الاختباري وفك التشفير
حساب JSON الحقول المدعومة لواجهة برمجة التطبيقات (API)/الجلسة/المفتاح تملأ البيانات الوصفية وحدها بيانات اعتماد واجهة برمجة التطبيقات (API)؛ ولا يزال من الضروري تسجيل الدخول باستخدام جلسة عمل/مفتاح أو رقم هاتف/رمز QR
تسجيل الدخول عبر رمز الاستجابة السريعة (QR) تأكيد من تطبيق Telegram المعتمد إنشاء رموز QR محليًّا، وتحديد تاريخ انتهاء الصلاحية/إعادة المحاولة، والتوثيق الثنائي (2FA) اختياريًّا
TDLib / Pyrogram StringSession تنسيقات أخرى خاصة بالمكتبات غير مدعوم
رمز البوت روبوت له نموذج الوصول/التحديث الخاص به لا يستخدمها هذا المجمع

يختار Telegram إرسال الرموز؛ ولا يُضمن وصول الرسائل النصية القصيرة (SMS). ولا يمكن لـ API hash إصلاح جلسة تم إلغاؤها أو استبدال كلمة مرور المصادقة الثنائية (2FA) المنسية. ولا يقوم TgWitness بحفظ رموز تسجيل الدخول أو كلمة مرور المصادقة الثنائية (2FA) الخاصة بـ Telegram على القرص.

بالنسبة للمصدر الخاص، يجب أن يكون الحساب يتمتع بالفعل بحق الوصول. ولا حاجة إلى اسم مستخدم للمجموعة. ولا يمنح الوكيل أو استيراد الجلسة أي حقوق عضوية أو حقوق إدارية. كما أن العضوية الحالية لا تضمن الوصول إلى سجل الرسائل قبل الانضمام.

استيراد ملف جلسة Telethon#

تستخدم Telethon SQLite وPyrogram SQLite وTelegram Desktop TData تنسيقات مختلفة. تقوم اللوحة باكتشاف الهياكل المدعومة وتحويلها؛ ولا يُعد تغيير اسم الملف تحويلًا. حدد جلسة واحدة وملف JSON المصاحب لها ضمن «الملفات»، ثم اضغط على «ربط الحساب». يُسمح بما يصل إلى أربعة ملفات مطابقة و إجمالي 8 ميغابايت. انظر حدود التنسيقات للحصول على تفاصيل TData/JSON. لا توجد ميزة استعادة رمز المرور. يؤدي تسجيل الدخول عبر الهاتف/التوثيق الثنائي (2FA) أو رمز الاستجابة السريعة (QR) إلى إنشاء تفويض منفصل.

لا يزال مسار سطر الأوامر الاختياري المخصص لـ Telethon متاحًا:

  1. أوقف تشغيل العميل الذي يستخدم الجلسة الأصلية وقم بعمل نسخة متسقة. يقوم المحول برفض الملفات التي تحتوي على سجل WAL/journal غير مكتمل. أغلق العميل الأصلي بشكل صحيح بدلاً من حذف تلك الملفات لتجاوز الفحص.
  2. من بيئة TgWitness، قم بتشغيل:
python -m tgwitness.sessions account.session --out account.tgwitness-session
  1. ضمن «إضافة حساب» → «ملفات»، قم بتحميل النتيجة أو الصق سلسلة النص الخاصة بها، ثم تابع.
  2. تحقق من رقم معرّف الحساب المعروض، واختر المصادر وابدأ المراقبة.

يفتح المحول SQLite في وضع القراءة فقط، ولا يقوم بأي ترقية للمخطط أو طلب شبكة، ولا يقوم بطباعة الجلسة. يتحقق من إصدار المخطط، وأنواع الجداول، وصف واحد من الجلسة، وعنوان IP/المنفذ/مركز البيانات وطول المفتاح. يقتصر إدخال CLI على 64 ميغابايت؛ ويقتصر نص StringSession على 4 كيلوبايت. يقوم تحويل اللوحة بتحميل الملفات إلى خادم TgWitness المصادق عليه، ومعالجتها في الذاكرة، وإرجاع بيانات الاعتماد المعيارية إلى ذلك المتصفح دون حفظ النسخ الأصلية التي تم تحميلها. استخدم HTTPS للخادم البعيد.

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

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

MTProto وTelethon والوكلاء#

MTProto هو بروتوكول Telegram. Telethon هي مكتبة عميل لغة Python التي تستخدمها TgWitness. MTProxy هو وكيل نقل Telegram؛ ويوفر كل من SOCKS5 وHTTP CONNECT أنفاقًا عامة. ولا يحل أي منها محل مصادقة الحساب.

احفظ مسار الاتصال لكل مساحة عمل في «الحساب» → «الإعدادات» → «إعدادات الاتصال» → «تغيير مسار الاتصال» قبل تسجيل الدخول. يتم تعيين «MTProxy التلقائي» · القوائم العامة مع خيار «إخفاء عنوان IP» كإعداد افتراضي لمساحات العمل الجديدة. أما مساحات العمل الحالية التي استخدمت صراحةً وضع «Direct»، فستحتفظ بوضع يسمح بذلك.

أوضاع IP#

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

الوضع Telegram الطلبات الخارجية
Hide IP (hide) استخدم بروكسيًّا؛ وانتظر إذا لم يعمل أي منها. لا يوجد حل بديل مباشر. يتطلب SOCKS5/HTTP؛ ويرفض الطلبات التي لا تستخدم بروكسيًّا مناسبًا.
السماح بالخيار البديل (fallback) قد يستخدم MTProxy التلقائي خيار «Direct» بعد انقضاء فترة التأخير المحددة، ثم يعود إلى استخدام الوكيل العامل. يفضل استخدام بروكسي خارجي مُهيأ أو مسار SOCKS5/HTTP الخاص بالحساب؛ وإلا يُسمح باستخدام «Direct».
نفق / VPN (tunnel) يُسمح بالمسارات المباشرة واللجوء الفوري إلى المجمع التلقائي. يُسمح بالاتصال المباشر في حالة عدم تكوين أي وكيل مناسب.

يفترض وضع النفق/VPN أنك تدير تلك الشبكة بشكل منفصل. بدون نفق فعال، يمكن للوجهات رؤية عنوان الخادم نفسه. حدد الوضع وفقًا لشبكتك الفعلية، وليس اسم الخيار.

اختر مسارًا#

الطريق الإعدادات الحدود
MTProxy التلقائي قوائم مدمجة أو كتالوج للمشغلات يحافظ على مسار Telegram فعال؛ ويعتمد البديل المباشر على وضع IP
مباشر وضع النفق/VPN يستخدم Telethon مسار شبكة المضيف
SOCKS5 المضيف، المنفذ، اسم المستخدم/كلمة المرور (اختياري) python-socks، مع تمكين DNS للوجهة البعيدة
HTTP CONNECT المضيف، المنفذ، اسم المستخدم/كلمة المرور (اختياري) اتصال HTTP عادي؛ لم يتم تطبيق بروتوكول TLS مع الوكيل نفسه
MTProxy المضيف، المنفذ، السر نظام نقل تجريبي لـ Telethon؛ 32 رقمًا سداسيًا عشريًّا أو dd + 32 رقمًا سداسيًّا عشريًّا

يتم رفض أسرار TLS المزيفة من نوع ee. يمكن لعملية التطبيع في Telethon 1.45 إزالة البادئة والنطاق، لكن ذلك لا ينفذ ميزة Fake TLS. الصق tg://proxy?server=…&port=…&secret=… أو https://t.me/proxy?server=…&port=…&secret=… واختر «ملء الحقول من الرابط». يؤدي هذا إلى التحقق من صحة الحقول وملؤها دون الاتصال أو الحفظ؛ راجع المسار واحفظه بشكل منفصل. تظل الحقول اليدوية متاحة. انظر روابط بروكسي Telegram.

الوكلاء العامون الذين يوفرهم نظامك#

تجمع القائمة المدمجة بين أربعة مصادر: SoliSpirit/mtproto، zakky8/mtproto-proxy-pro، kort0881/telegram-proxy-collector و3yed-61/MTP-Collector. تحتوي اللقطة المجمعة على بيانات نقاط النهاية، وإسناد المصدر، وتواريخ التنزيل. لا يُعد إدراج مزود ما دليلاً على أن البروكسي يعمل أو يقدم كل تحديثات Telegram.

يقوم MTProxy تلقائيًا بفحص اتصال نقل Telegram، ويحافظ على بروكسي عامل ويتحول إلى بروكسي آخر عند فشله. تفضل مساحات العمل بروكسيات مختلفة عندما يتوفر عدد كافٍ من الإدخالات العاملة؛ ولا يُضمن وجود عنوان خروج فريد. تتوقف البروكسيات الفاشلة مؤقتًا قبل إجراء محاولة أخرى. إذا لم يعمل أي منها، يحدد وضع IP ما إذا كان يجب تأجيل عملية التجميع أو يمكن استخدام اتصال مباشر. لا يؤدي تغيير البروكسيات إلى تغيير الحساب أو محو سجله. يتم تسجيل خيارات المسار والتغييرات في السجل الموقّع.

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

يقتصر حجم كل استجابة موجز على 1 ميغابايت مع مهلة انتظار للطلب مدتها ثماني ثوانٍ و مهلة تنزيل إجمالية مدتها 20 ثانية؛ ويتم رفض عمليات إعادة التوجيه . يتم الاحتفاظ بما يصل إلى 64 إدخالًا متوافقًا لكل مصدر وإزالة التكرارات منها. يقبل المحلل الرموز السرية السداسية العشرية وbase64url المدعومة وموجز JSON. يتم تخطي TLS المزيف ee، والروابط غير الصالحة، وعناوين IP الخاصة/المحجوزة، وأسماء المضيفين المحلية . يتم تحليل أسماء المضيفين والتحقق منها قبل الاستخدام، ويتم تثبيت عنوان IP المختار لذلك الاتصال. تعمل عملية إعادة الاستحواذ التلقائية على تحليل اسم المضيف مرة أخرى؛ أعد تطبيق إدخال يدوي لتحليله مرة أخرى.

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

تستخدم حركة مرور Telegram وطلبات HTTPS مسارات مختلفة. تستخدم عمليات تنزيل القوائم اتصال HTTPS منفصل ومسار الطلب الخارجي المقدم. يقوم TGWITNESS_PROXY_FEED_PROXY بتجاوز هذا المسار صراحةً باستخدام وكيل HTTP/SOCKS5؛ ويقوم كلا متغيري أداة التجميع Compose بإعادة توجيهه. يتبع تجمع الخلفية مساحة العمل الرئيسية. لا يتم إرسال أي جلسة Telegram أو بيانات اعتماد API أو رمز لوحة التحكم أو رمز الروبوت إلى مزودي البيانات. تظهر أسماء المزودين وتواريخ اللقطات ومسار التنزيل تحت عنوان «من أين تأتي القائمة».

يقوم MTProxy بنقل حركة مرور Telegram فقط. أما عمليات HTTP في Workspace مثل الطوابع الزمنية، والإشعارات، والنسخ خارج الموقع، والتحقق من المصادر، فتستخدم وكيل SOCKS5/HTTP منفصلاً عند تكوينه، ثم مسار SOCKS5/HTTP الخاص بالحساب. وفي حالة عدم وجود أي منهما، يرفض Hide IP الطلب؛ بينما تسمح الأوضاع الأخرى بالاتصال المباشر. يمكن تعطيل الطلبات الخارجية. ويظل وكيل تنزيل الخلاصات الذي تم تكوينه صراحةً خيارًا منفصلاً يمكن للمشغل تجاوزه. وتحتفظ خدمة الشاهد المستقلة بمسارها الخاص.

معلمات التجميع التلقائي تحت **المعلمات → MTProxy التلقائي**، قم بتكوين عتبة الفشل، وفترة التهدئة، والتناوب المخطط، ومشاركة البروكسي، وتأخير اللجوء البديل المسموح به. | عنصر التحكم | القيمة الافتراضية | | --- | --- | | قطع الاتصال قبل الاستبدال | 3 مرات خلال 10 دقائق | | عدد الوكلاء الذين يتم تجربتهم لكل محاولة اتصال | 3 | | فترة الراحة الأولى / القصوى بعد الفشل | 10 دقائق / 6 ساعات | | التناوب المخطط | معطل؛ يتم التبديل عند الفشل | | الحسابات لكل بروكسي | 0: يُفضل استخدام إدخالات منفصلة، والمشاركة عند الحاجة. اضبط على 1 للانتظار حتى يتوفر إدخال حصري. | | التأخير قبل السماح بالرجوع المباشر | 10 دقائق؛ لا يزال Hide IP يرفض Direct | | تحديث الخلاصة / فحوصات النقل | 60 / 10 دقائق؛ تنطبق قيم مساحة العمل الرئيسية على المجموعة المشتركة | لا تضمن الوكلاء المختلفة عناوين خروج مختلفة. هذه الإعدادات لا تتجاوز حدود Telegram ولا تضمن إخفاء الهوية.

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

انسخ الكتالوج الفارغ إلى proxy-config/proxies.json وأضف نقاط النهاية العامة التي قمت بنشرها:

{"format": "tgwitness-proxy-catalog-v1", "proxies": [
  {"id": "project-eu", "label": "Project EU",
   "link": "tg://proxy?server=REPLACE_HOST&port=443&secret=REPLACE_SECRET"}
]}

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

التشغيل المحلي: اضبط TGWITNESS_PROXY_CATALOG على مسار JSON المحلي. Docker:

docker compose -f compose.yaml -f deploy/compose/compose.proxies.yaml up -d --build

يتم تثبيت الطبقة الفوقية proxy-config على وضع القراءة فقط؛ ويجب أن تكون الملفات قابلة للقراءة بواسطة معرّف الحاوية (UID) 10001. يتم استبعاد هذا الدليل من Git، وسياق بناء Docker، وأرشيفات المصدر. يقوم هذا الكتالوج بتكوين حسابات التجميع؛ ويستخدم روبوت الشاهد مساره الخاص HTTP/SOCKS5، وليس MTProxy.

يخضع البديل المباشر لوضع IP المذكور أعلاه. قم بإيقاف المراقبة مؤقتًا قبل تغيير المسار. يؤدي الحفظ إلى قطع اتصال العملاء القدامى وإلغاء عمليات تسجيل الدخول غير المكتملة؛ ويستخدم العميل الجديد المسار المحفوظ. ويبقى ربط السجل/الجلسة الخاص بالحساب ساريًا. تحل الإعدادات محل المسار السابق: أعد إدخال بيانات اعتماد الوكيل عند تعديله.

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

اختبار اتصال Telegram، المتاح أيضًا قبل تسجيل الدخول، يفتح ويغلق اتصالًا مؤقتًا غير مصرح به بـ Telegram عبر المسار. ولا يتصل بموقع إلكتروني للتحقق من عنوان IP. يؤكد النجاح اتصال الشبكة، وليس الوصول إلى المجموعات، أو التسليم الكامل، أو إخفاء الهوية.

ينطبق الوكيل على اتصالات عميل Telegram، بما في ذلك تنزيلات الوسائط من خوادم توزيع Telegram (DC) . أما المتصفح وpip وSSH وأدوات TSA التي يتم تشغيلها يدويًّا، فلها مسارات منفصلة. يمكن تحليل اسم مضيف الوكيل محليًّا. يؤثر rdns على أسماء مضيفات الوجهة؛ وغالبًا ما يوفر Telegram عناوين IP رقمية لخوادم التوزيع (DC).

لا يقوم كل من SOCKS5 و HTTP CONNECT العادي في حد ذاتهما بتشفير بيانات اعتماد الوكيل أو نفق الاتصال بين العميل والوكيل. يقوم MTProto بحماية حركة مرور Telegram بشكل منفصل. استخدم قناة آمنة مناسبة للوصول إلى الوكيل على شبكة غير موثوق بها. المجموعات الخاصة هي محادثات سحابية؛ ولا يحولها بروتوكول MTProto إلى محادثات سرية مشفرة من طرف إلى طرف.

التشفير والتوقيعات#

الطبقة تم التنفيذ مسؤولية المشغل
حركة مرور Telegram Telethon MTProto ثقة المنصة ومسارها وتوافرها
لوحة الويب رمز حامل، إعدادات الارتجاع الافتراضية، حدود الطلبات نفق HTTPS أو SSH للوصول عن بُعد
أسرار Fernet لبيانات اعتماد واجهة برمجة التطبيقات (API)، والجلسة، وبيانات اعتماد الوكيل، ومفتاح التوقيع الخاص حماية مفتاح فك التشفير والمضيف الذي يعمل عليه البرنامج
مفتاح الخزنة مفتاح محلي، أو مفتاح رئيسي خارجي للتثبيت الجديد تخزين منفصل محمي ونسخ احتياطي للمفاتيح
الرسائل والمرفقات تخزين التطبيق بنص عادي قرص/وحدة تخزين مشفرة
ZIP/JSONL/CSV/HTML فحوصات النزاهة، لا يوجد تشفير للمحتوى حماية النسخ المصدرة وعمليات النقل
المصدر والوقت سجل موقّع، إيصال عملية، أدوات RFC 3161 مفتاح موثوق به، ونقاط تفتيش مستقلة/TSA، وإجراءات الحفظ

تُظهر «حماية التخزين» في «الحساب» هذه الحالات. رمز اللوحة هو سر وصول، وليس كلمة مرور تشفير. يمنح حق الوصول للمسؤول؛ ويمكن تقييد نطاق الرموز الصادرة لتقتصر على الحسابات والدردشات. تشارك مساحات العمل العملية المضيفة وليست مستأجرين معزولين.

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

يمكن لـ BitLocker أو LUKS أو FileVault أو وحدة التخزين المشفرة المُدارة حماية مساحة التخزين في إطار نماذج التهديدات الخاصة بكل منها. لا يزال بإمكان مسؤول نظام يعمل دون قفل قراءة البيانات. قم بتضمين SQLite WAL/SHM، والوسائط، والتصدير المؤقت، ومساحة التبادل، والنسخ الاحتياطية وتنزيلات المتصفح في تخطيط التخزين. لا يتم تشفير وحدة تخزين Docker لمجرد كونها وحدة تخزين. لا يقوم TgWitness بتنفيذ SQLCipher أو تشفير الكائنات.

مفتاح رئيسي خارجي#

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

python -m tgwitness.security create-master-key /private/keys/tgwitness-master.key
export TGWITNESS_VAULT_KEY_FILE=/private/keys/tgwitness-master.key
python -m tgwitness --data-dir /private/observations/new-case

PowerShell، باستخدام بيئة المشروع المثبتة:

python -m tgwitness.security create-master-key E:\PrivateKeys\tgwitness-master.key
$env:TGWITNESS_VAULT_KEY_FILE = 'E:\PrivateKeys\tgwitness-master.key'
python -m tgwitness --data-dir E:\PrivateData\new-case

في Docker، قم بتركيب الملف للقراءة فقط خارج /data، على سبيل المثال في /run/secrets/tgwitness-master.key، وقم بتعيين متغير البيئة إلى ذلك المسار. يجب أن يكون معرّف المستخدم الفريد (UID) للخدمة قادرًا على قراءته. قم بتمرير المسار، وليس بايتات المفتاح، عبر ملفات البيئة/التكوين.

تتلقى كل مساحة عمل «سولت» (salt) عامًا عشوائيًا ومفتاح Fernet خاص بها مشتق عبر HKDF-SHA256. يقوم vault.external.json بتخزين بيانات تعريف الاشتقاق، وليس المفتاح الرئيسي. يؤدي فقدان المفتاح أو وجود مفتاح خاطئ إلى فشل عملية التشغيل دون استبداله بصمت. احتفظ بكل من بيانات تعريف «السولت» والمفتاح الرئيسي لأغراض الاستعادة.

تستمد جميع مساحات العمل من نفس المفتاح الرئيسي؛ ويؤثر اختراقه على التثبيت بأكمله. يمكن للعملية قيد التشغيل فك تشفير الأسرار. هذه ليست وحدة HSM أو KDF لكلمة المرور. لا تُقبل كلمات المرور البشرية العشوائية بدلاً من المفتاح العشوائي.

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

المصادر ونطاق التحقق#

تمت المراجعة في 26 أكتوبر 2026:

  • https://core.telegram.org/api/auth
  • https://core.telegram.org/api/obtaining_api_id
  • https://docs.telethon.dev/en/stable/basic/signing-in.html
  • https://docs.telethon.dev/en/stable/concepts/sessions.html
  • https://core.telegram.org/mtproto/mtproto-transports
  • https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/SourceFiles/storage/storage_account.cpp
  • Telethon 1.45.0: SQLiteSession وStringSession وConnection._proxy_connect و TcpMTProxy.normalize_secret وطرق التنزيل.

تغطي الاختبارات المحلية اختبارات SOCKS5/HTTP CONNECT ذاتية التكرار، وجلسات SQLite الاصطناعية، وعزل المسار، واستبعاد السر، ورفض المفتاح المفقود. وهي لا تثبت التوافق التشغيلي الفعلي بين Telegram والبروكسي أو سلوك MTProxy في الوقت الفعلي. انظر VERIFICATION.md و LIVE_ACCEPTANCE.md.