Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
XPKeygen — Windows XP Keygen | Kitploit
أدوات/GitHubGitHub/endermanch/xpkeygen
Reverse EngineeringCryptographyBinary Analysis
GitHubendermanch/xpkeygen

XPKeygen

Windows XP Keygen

عرض المستودع
1.1k68منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

XPKeygen

مولّد مفاتيح VLK لنظامي Windows XP / Windows Server 2003. تتيح لك هذه الأداة توليد مفاتيح Windows XP صالحة استنادًا إلى المفتاح الخام (Raw Product Key)، والذي يمكن أن يكون عشوائيًا. يتم توفير المفتاح الخام (RPK) بصيغة 9 أرقام XXX-YYYYYY وهو ضروري فقط لتوليد مفتاح Windows XP.

XP Keygen

التحميل

انتقل إلى تبويب Releases وحمّل أحدث إصدار من هناك.

الخطط

هذا المشروع لم يمت — سأبذل قصارى جهدي لإنجاحه.

المشكلة

بشكل عام، الشيء الوحيد الذي يفصلنا عن توليد مفاتيح Windows XP صالحة لكل إصدار ولكل بناء هو عدم وجود المفاتيح الخاصة المقابلة لنظيراتها العامة داخل pidgen.dll. لا يوجد كود لدالة اللوغاريتم المتقطع للمنحنى الإهليلجي متاح على نطاق واسع عبر الإنترنت، بل توجد فقط معلومات غامضة حول كيفية القيام بذلك.

مع مرور الوقت، تم حل المشكلة جزئيًا.

لم يكن مورد BINK مشفّرًا بأي شكل من الأشكال، وكانت البيانات تُكتب في المورد بشكل تسلسلي فقط. كما شرح sk00ter تنسيق BINK بالكامل في منتديات MDL. بالاستفادة من المعرفة المجتمعية السابقة حول هذا الموضوع، كتبت قارئ BINK بلغة Python 3. الملف متاح للعموم في هذا المستودع، اضغط هنا لعرض الكود المصدري.

يُعد حل اللوغاريتم المتقطع أكثر مجالات البحث التي لم تُستكشف بعد حتى 28 مايو 2023. ومع ذلك، وجد صديقي nephacks تلك الأداة المراوغة لحل هذه المشكلة الصعبة في أحلك زوايا الإنترنت. تُسمى ECDLP (Elliptic Curve Discrete Logarithm Problem) Solver من إعداد Mr. HAANDI. ونظرًا لأنه كان من المحبط للغاية العثور عليها عبر الإنترنت، أعدت رفعها على موقعي الإلكتروني. يمكنك تحميل الأداة هنا.

ملف ReadMe المرفق مع الإصدار 0.2a من الحلّال جيد بما يكفي بحد ذاته، لذا فأي شخص يملك عقلًا سيكون قادرًا على إعداد تلك الأداة. ومع ذلك، فهي ليست مفتوحة المصدر، لذا ثبت أن دمجها في مولّد المفاتيح الخاص بي مستحيل.

في السيناريو المثالي، سيطلب منك مولّد المفاتيح مورد BINK المستخرج من pidgen.dll، ثم يقوم بفكّه إلى المقاطع التالية:

  • المفتاح العام (pubX; pubY)
  • المولّد (genX; genY)
  • النقطة الأساسية (a; b)
  • عدد النقاط p

بمعرفة هذه المقاطع، سيقوم مولّد المفاتيح بالبحث الشامل عن ترتيب المولّد genOrder باستخدام خوارزمية Schoof، متبوعًا بالمفتاح الخاص privateKey، مع الاستفادة من genOrder المحسوب لاستخدام خوارزمية Pollard's Rho الأكثر مثالية. مما لا شك فيه أننا نستطيع كسر أي مفتاح خاص في غضون 20 دقيقة باستخدام القوة الحاسوبية الحديثة، بشرط أن تكون لدينا الخوارزمية العاملة.

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

  • استخراج مورد BINK
  • البحث الشامل عن حل اللوغاريتم المتقطع للمنحنى الإهليلجي (, )

مبدأ التشغيل

نحتاج إلى استخدام مفتاح خام عشوائي كأساس لتوليد معرّف منتج بصيغة AAAAA-BBB-CCCCCCS-DDEEE.

معرّف المنتج

ثابت عائلة نظام التشغيل AAAAA يختلف لكل سلسلة من سلاسل Windows XP. على سبيل المثال، هو 76487 للإصدار SP3.

القسمان BBB وCCCCCC يقومان أساسًا بترميز المفتاح الخام. على سبيل المثال، إذا كان القسم الأول يساوي XXX والقسم الثاني يساوي YYYYYY، فسيتم ترميز المفتاح الخام كـ XXX-YYYYYY.

يتم اختيار رقم التحقق S بحيث يكون مجموع جميع أرقام C مع إضافته عددًا يقبل القسمة على 7.

فهرس المفتاح العام DD يخبرنا أي مفتاح عام تم استخدامه للتحقق بنجاح من صحة مفتاح المنتج لدينا. على سبيل المثال، هو 22 لمفاتيح Professional و23 لمفاتيح VLK.

يُستخدم رقم عشوائي EEE لتوليد معرّف تثبيت مختلف في كل مرة.

مفتاح المنتج

مفتاح المنتج نفسه (وليس الخلط بينه وبين RPK) يكون بصيغة FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK، مُرمّز بنظام Base-24 مع الأبجدية BCDFGHJKMPQRTVWXY2346789 لاستبعاد أي أحرف يمكن الخلط بينها بسهولة، مثل I و1 أو O و0.

وفقًا لصيغة سعة الأبجدية، يمكن أن يحتوي المفتاح على 114 بتًا من المعلومات على الأكثر. $$N = \log_2(24^{25}) \approx 114$$

بناءً على هذا الحساب، نقوم بفك مفتاح المنتج ذي 114 بتًا إلى 4 مقاطع مرتبة:

لتبسيط الأمر، سنجمع مقطعي Upgrade وSerial في مقطع واحد يُسمى Data. وبهذا المنطق سنتمكن من استخراج RPK عن طريق إزاحة Data إلى اليمين وإعادة تجميعه عن طريق إزاحة البتات إلى اليسار، لأن معظم مفاتيح المنتج الصالحة قبليًا التي فحصتها كان علم الترقية فيها مضبوطًا على 1.

أعادت Microsoft تصميم تنسيق مفتاح المنتج مع Windows Server 2003 لتضمين مفتاح مصادقة خادم خلفي، وهو نهج آمن فعليًا للتحقق من الترخيص، إذ لم يكن بمقدور أي أحد أن يخمّن خوارزمية التحقق التي وظّفوها على خادمهم الخاص. بالإضافة إلى إضافة آلية التحقق عبر الإنترنت، رفعوا أيضًا الحسابات الإجمالية من 384 إلى 512 بتًا، وقيمة التوقيع إلى 62 بتًا من المعلومات.

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

المنحنيات الإهليلجية

تشفير المنحنيات الإهليلجية (ECC) هو نوع من أنظمة التشفير بالمفتاح العام. تعتمد هذه الفئة من الأنظمة على مسائل رياضية "أحادية الاتجاه" صعبة - سهلة الحساب في اتجاه واحد ويستعصي حلها في الاتجاه "الآخر". تُسمى أحيانًا دوال "الباب الخلفي" (trapdoor) - سهلة الدخول إليها، وصعبة الهروب منها.[5]

يعتمد ECC على حل معادلات من الشكل $$y^2 = x^3 + ax + b$$

بشكل عام، هناك حالتان خاصتان للمنحنى الإهليلجي المستخدم في التشفير - F2m وFp. تختلفان بشكل طفيف فقط. كلا المنحنيين معرّفان على حقل محدود؛ يستخدم Fp معاملًا أوليًا أكبر من 3، بينما يفترض F2m أن $p = 2m$. استخدمت Microsoft الأخير في خوارزميتها.

يتكون المنحنى الإهليلجي فوق الحقل المحدود Fp من:

  • مجموعة إحداثيات صحيحة ${x, y}$، بحيث $0 \le x, y < p$;
  • مجموعة نقاط $y^2 = x^3 + ax + b \mod p$.

منحنى إهليلجي فوق F17 سيبدو هكذا:

F17 Elliptic Curve

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

المنحنى أعلاه "تعليمي". إنه يوفّر طول مفتاح صغير جدًا (4-5 بتات). في مواقف العالم الحقيقي، يستخدم المطورون عادةً منحنيات من 256 بتًا أو أكثر.

مورد BINK

بما أنه نظام تشفير بالمفتاح العام، كان على Microsoft مشاركة المفتاح العام مع إصدار Windows XP الخاص بها للتحقق من مفاتيح المنتج المُدخلة. يتم تخزينه داخل pidgen.dll في شكل مورد BINK. المجموعة الأولى من بيانات BINK موجودة للتحقق من مفاتيح البيع بالتجزئة، والثانية لمفاتيح OEM على التوالي.

هيكل مورد BINK لنظامي Windows 98 وWindows XP هو كما يلي:

يتم تمييز كل مقطع بلون مختلف، بينما قيم ترويسة BINK هي نفسها.

BINK

يطبّق Windows Server 2003 وWindows XP x64 الأمر بشكل مختلف:

وفيما يلي النماذج الأولية للبنية التي أعددتها لقارئ BINK بلغة C:```c typedef struct _EC_BYTE_POINT { CHAR x[256]; // x-coordinate of the point on the elliptic curve. CHAR y[256]; // y-coordinate of the point on the elliptic curve. } EC_BYTE_POINT;

typedef struct _BINKHDR { // BINK version - not stored in the resource. ULONG32 dwVersion;

root@kitploit:~
// Original BINK header.
ULONG32 dwID;
ULONG32 dwSize;
ULONG32 dwHeaderLength;
ULONG32 dwChecksum;
ULONG32 dwDate;
ULONG32 dwKeySizeInDWORDs;
ULONG32 dwHashLength;
ULONG32 dwSignatureLength;

// Extended BINK header. (Windows Server 2003+)
ULONG32 dwAuthCodeLength;
ULONG32 dwProductIDLength;

} BINKHDR;

typedef struct _BINKDATA { CHAR p[256]; // Finite Field order p. CHAR a[256]; // Elliptic Curve parameter a. CHAR b[256]; // Elliptic Curve parameter b.

root@kitploit:~
EC_BYTE_POINT G;    // Base point (Generator) G.
EC_BYTE_POINT K;    // Public key K.

} BINKDATA;

typedef struct _BINKEY { BINKHDR header; BINKDATA data; } BINKEY;

root@kitploit:~
في حال أردت استكشاف المزيد، فإن الكود المصدري لـ `pidgen.dll` وجميع دواله متاح داخل هذا المستودع، في مجلد "pidgen".

### عكس المفتاح الخاص

إذا أردنا توليد مفاتيح منتج صالحة لنظام Windows XP، يجب علينا حساب المفتاح الخاص المقابل باستخدام المفتاح العام المرفق مع `pidgen.dll`،
وهذا يعني أننا بحاجة إلى حل عكسي لمهمة ECC أحادية الاتجاه.

استنادًا إلى المفتاح الموجود في BINK، فإن ترتيب المنحنى يبلغ **384 بت** في Windows XP و**512 بت** في Server 2003 / XP x64 على التوالي.
صعوبة الحساب باستخدام خوارزمية Pollard's Rho الأكثر كفاءة مع التعقيد المقارب $O(\sqrt{n})$ ستكون على الأقل $O(2^{168})$ لنظام Windows XP، و $O(2^{256})$ لنظام Windows Server 2003، لكن لحسن الحظ،
قيّدت Microsoft قيمة التوقيع إلى 55 بت في Windows XP و62 بت في Windows Server 2003 من أجل تقليل عدد مفاتيح المنتج المتطابقة، مما يقلل الصعوبة إلى $O(2^{28})$ / $O(2^{31})$ أكثر قابلية للإدارة.

كما ذُكر سابقًا، هناك أداة عامة واحدة فقط تلبي احتياجاتنا الحالية، وهي أداة حل ECDLP من السيد HAANDI.<br>

لحساب المفتاح الخاص، سنحتاج إلى تزويد الأداة بقيم ECC العامة الموجودة في مورد BINK، بالإضافة إلى الترتيب `genOrder` للنقطة الأساسية `G(Gx; Gy)`.
يمكن حساب ترتيب النقطة الأساسية باستخدام SageMath.

**إليك الخوارزمية الأساسية التي استخدمتها لعكس المفتاح الخاص لنظام Windows 98:**

1. احسب ترتيب النقطة الأساسية باستخدام **SageMath**. في SageMath، نفّذ الأوامر التالية:
    1) `E = EllipticCurve(GF(p), [0, 0, 0, a, b])`، حيث `p` و`a` و`b` هي معاملات منحنى إهليلجي ممثلة بالكسور العشرية من مورد BINK.
    2) `G = E(Gx, Gy)`، حيث `Gx` و`Gy` هما إحداثيات النقطة الأساسية ممثلة بالكسور العشرية من مورد BINK.
    3) `K = E(Kx, Ky)`، حيث `Kx` و`Ky` هما إحداثيات المفتاح العام ممثلة بالكسور العشرية من مورد BINK.
    4) `n = G.order()`، سيكون `n` هو الترتيب المحسوب للنقطة الأساسية. **قد يستغرق حسابه بعض الوقت، حتى على أحدث الإصدارات.**
    5) حلل الترتيب باستخدام `factor(n)`. استخدمت Microsoft أعدادًا أولية لترتيبات النقاط، لذا إذا أعاد الرقم نفسه، فهذا طبيعي تمامًا.
    6) احفظ العوامل الناتجة للترتيب في مكان ما.
    7) سيعطيك `-K` معكوس المفتاح العام في مستوى إسقاطي بإحداثيات `(x : y : z)`. احفظ إحداثي `y` في مكان ما، فهو مطلوب لتوليد مفتاح خاص صحيح.
2. احسب المفتاح الخاص باستخدام **ECDLP Solver v0.2a**.
    1) تأتي الأداة مع ملف قالب `job_template.txt` وملف ReadMe. من الضروري فهم كيفية عمل الأداة لاستخدامها.
    2) أدخل جميع قيم المنحنى الإهليلجي العامة من مورد BINK، **باستثناء إحداثي `Ky`**. لتوليد مفتاح خاص صحيح، **يجب عليك استخدام الإحداثي المعكوس `-Ky` الذي حسبته في SageMath سابقًا.**
    3) أدخل عوامل ترتيب النقطة الأساسية `n` وحدد عدد العوامل. من المرجح جدًا أن يكون `1`، حيث تستخدم Microsoft الأعداد الأولية بشكل أساسي لترتيبات المولّدات الخاصة بها.
    4) شغّل الأداة `<arch> ECDLP Solver.exe <job_name>.txt` وانتظر حتى تحسب لك المفتاح الخاص `k = %d`.

**فيما يلي مثال على ملف وظيفة Windows XP `job_xp.txt` الذي ينتج المفتاح الخاص الصحيح لأداة ECDLP Solver.**```pascal
GF := GF(22604814143135632990679956684344311209819952803216271952472204855524756275151440456421260165232069708317717961315241);
E := EllipticCurve([GF|1,0]);
G := E![10910744922206512781156913169071750153028386884676208947062808346072531411270489432930252839559606812441712224597826,19170993669917204517491618000619818679152109690172641868349612889930480365274675096509477191800826190959228181870174];
K := E![14399230353963643339712940015954061581064239835926823517419716769613937039346822269422480779920783799484349086780408,17120082747148185997450361756610881166187863099877353630300913555824935802439591336620545428308962346299700128114607];
/*
FactorCount:=1;
61760995553426173
*/

وهذه مخرجات أداة حل ECDLP له:

ECDLP Solver Output

ملاحظة مهمة:

انتبه إلى أنني لم أتمكن من توليد مفتاح Windows XP x64 صحيح باستخدام المفتاح الخاص الذي استخرجته بعكس الهندسة، حتى عند استخدام إحداثي Ky بدلاً من -Ky المعتاد. لسبب ما، فشلت أيضًا في حساب ترتيب النقطة الأساسية لـ Windows Server 2003 باستخدام SageMath. أعطيته 12 ساعة لإتمام الحساب على معالج i7-12700K، لكنه ظل عالقًا في الحساب.

التحقق من مفاتيح المنتج / توليدها

بقية العمل يتم داخل كود مولّد المفاتيح هذا.

المشكلات المعروفة

  • بعض المفاتيح ليست صالحة، لكن هذا يحدث بشكل أقل شيوعًا عمومًا. حوالي 2 من كل 3 مفاتيح يجب أن تعمل.
    أُصلح في الإصدار v1.2. الإصدارات السابقة كانت تولّد مفتاحًا صالحًا باحتمال دقيق 0x40000/0x62A32، وهو ما يساوي بالضبط 0.64884، أي حوالي 65%. كان تقديري "2 من كل 3" دقيقًا بشكل لا يصدق.
  • تم الاختبار على عدة إعدادات Windows XP. يعمل على Professional x86 وجميع حزم الخدمة. الإصدارات الأخرى من Windows قد لا تعمل. x64 لا يعمل.
  • توليد مفاتيح Server 2003 غير مضمن بعد.
    أُصلح في v2.2.
  • بعض مفاتيح Windows XP VLK تميل إلى أن تكون "أسوأ" من غيرها. بعضها قد يتسبب في تعطّل WPA مع Installation ID فارغ بعد التثبيت. لديك أفضل الفرص لتوليد مفاتيح "أفضل" مع ضبط قسم BBB على 640 وقسم CCCCCC على غير الصفر.
  • توليد مفاتيح Windows Server 2003 معطّل. لست متأكدًا من أين أبدأ حتى. لا تبدو المفاتيح صالحة في أي مكان، لكن الخوارزمية موثّقة جيدًا. التطبيق في حالتي يولّد حوالي 1 من كل 3 مفاتيح "صالحة".
    أُصلح في v2.3*.

المراجع

سأضيف المزيد من القراءات الجيدة إلى قائمة المراجع في الإصدارات اللاحقة.

فهم أساسيات تفعيل Windows XP:

  • [1] Inside Windows Product Activation - Fully Licensed | archive.org
  • [2] MSKey 4-in-1 ReadMe | archive.org
  • [3] Windows序列号产生原理(椭圆曲线法) | archive.org

فهم تشفير المنحنيات الإهليلجية:

  • [4] Elliptic Curve Cryptography for Beginners - Matt Rickard | archive.org
  • [5] Elliptic Curve Cryptography (ECC) - Practical Cryptography for Developers | archive.org
  • [6] A (Relatively Easy To Understand) Primer on Elliptic Curve Cryptography - Cloudflare | archive.org

نقاشات عامة:

  • [7] Windows 98 Equivalent // Server 2003 Algorithm | archive.org
  • [8] Cracking Windows XP | archive.org

المساهمة / الاستخدام

إذا كنت ستعرض هذا البرنامج أو تفرّعه، فيرجى نسب الفضل إلى Endermanch وz22 وMSKey.
لا تتردد في تعديله كما يحلو لك، طالما أبقيتَه مفتوح المصدر. مرخّص بموجب رخصة GNU General Public License v3.0.

أي مساهمات أو أسئلة مرحّب بها.

تنزيل الأداة
genOrder
privateKey
  • آلية معالجة مفتاح المنتج
  • توليد مفتاح Windows XP
  • التحقق من مفتاح Windows XP
  • توليد مفتاح Windows Server 2003
  • DigitsMeaning
    AAAAAثابت عائلة نظام التشغيل
    BBBمعرّف القناة
    CCCCCCالرقم التسلسلي
    Sرقم التحقق
    DDفهرس المفتاح العام
    EEEرقم عشوائي من 3 أرقام
    SegmentCapacityData
    الترقية1 بتعلم إصدار الترقية
    الرقم التسلسلي30 بتًاالمفتاح الخام (RPK)
    التجزئة28 بتًاتجزئة RPK
    التوقيع55 بتًاتوقيع المنحنى الإهليلجي لتجزئة RPK
    SegmentCapacityData
    الترقية1 بتعلم إصدار الترقية
    معرّف القناة10 بتاتجزء BBB من RPK
    التجزئة31 بتًاتجزئة RPK
    التوقيع62 بتًاتوقيع المنحنى الإهليلجي لتجزئة RPK
    مفتاح المصادقة10 بتاتقيمة المصادقة الخلفية
    OffsetValue
    0x0000معرّف BINK
    0x0004حجم بنية BINKEY بالبايتات (دائمًا 0x16C عمليًا)
    0x0008طول الترويسة (دائمًا 7 عمليًا)
    0x000Cالمجموع الاختباري
    0x0010تاريخ مُرمّز رقميًا - إصدار BINKEY (دائمًا 19980206 عمليًا)
    0x0014حجم ترتيب منحنى ECC (دائمًا 12 عمليًا)
    0x0018طول التجزئة (دائمًا 28 عمليًا)
    0x001Cطول التوقيع (دائمًا 55 عمليًا)
    0x0020ترتيب الحقل المحدود p
    0x005Cمعامل المنحنى a
    0x0098معامل المنحنى b
    0x00D4إحداثي x للنقطة الأساسية Gx
    0x0110إحداثي y للنقطة الأساسية Gy
    0x014Cإحداثي x للمفتاح العام Kx
    0x0188إحداثي y للمفتاح العام Ky
    OffsetValue
    0x0000معرّف BINK
    0x0004حجم بنية BINKEY بالبايتات
    0x0008طول الترويسة (دائمًا 9 عمليًا)
    0x000Cالمجموع الاختباري
    0x0010تاريخ مُرمّز رقميًا - إصدار BINKEY (دائمًا 20020420 عمليًا)
    0x0014حجم ترتيب منحنى ECC (دائمًا 16 عمليًا)
    0x0018طول التجزئة (دائمًا 31 عمليًا)
    0x001Cطول التوقيع (دائمًا 62 عمليًا)
    0x0020طول قيمة المصادقة الخلفية (دائمًا 12 عمليًا)
    0x0024طول معرّف المنتج (دائمًا 20 عمليًا)
    0x0028ترتيب الحقل المحدود p
    0x0068معامل المنحنى a
    0x00A8معامل المنحنى b
    0x00E8إحداثي x للنقطة الأساسية Gx
    0x0128إحداثي y للنقطة الأساسية Gy
    0x0168إحداثي x للمفتاح العام Kx
    0x01A8إحداثي y للمفتاح العام Ky