> ## Content Index
> Fetch the complete content index at: https://arabroot.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# أمن الصرافات والبطاقات: كيف يكتشف النسخ Skimming؟
- URL: https://arabroot.io/articles/امن-الصرافات-والبطاقات-كيف-تكتشف-النسخ-skimming/
- Published: 2026-10-27T17:02:38.000Z
- Updated: 2026-10-27T19:06:43.000Z
- Description: كيف تكتشف البنوك والتجار نسخ البطاقات في الصرافات ونقاط البيع وتمنعه، من فحص الأجهزة إلى تحليل النقطة المشتركة، مع مختبر يجد الجهاز المخترق.
- Author: فريق عرب رووت
- Tags: الأدلة التقنية, التقنية المالية والمدفوعات

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

هذا هو نسخ البطاقات Skimming كما يراه المدافع: جريمة تحدث في مكان، وتظهر نتيجتها في مكان آخر بعد أيام أو أسابيع، ولا يلاحظها أحد في المكان الذي حدثت فيه. وفي مقال [كيف يعمل الدفع بالبطاقة](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D8%B9%D9%85%D9%84-%D8%B9%D9%85%D9%84%D9%8A%D8%A9-%D8%A7%D9%84%D8%AF%D9%81%D8%B9-%D8%A8%D8%A7%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A9-%D8%A7%D9%84%D8%AA%D9%81%D9%88%D9%8A%D8%B6-%D9%88%D8%A7%D9%84%D8%AA%D8%B3%D9%88%D9%8A%D8%A9-%D9%88%D8%A7%D9%84%D8%A7%D8%B9%D8%AA%D8%B1%D8%A7%D8%B6/) شرحنا أطراف العملية، وفي مقال [كشف الاحتيال](https://arabroot.io/articles/%D9%83%D8%B4%D9%81-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D9%84-fraud-detection-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%85-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A9/) شرحنا كيف تبنى أنظمة الكشف بالقواعد وتعلم الآلة. وهذا المقال يكتب من جهة المدافع فقط: كيف تمنع البنوك والتجار النسخ في الصرافات ونقاط البيع، وكيف يكتشفونه عندما يحدث، وماذا يفعلون بعد اكتشافه. وسوف نصف الهجمات بالكلمات فقط بقدر ما يحتاجه المدافع ليفهم ما يبحث عنه، ولن نذكر أي تفاصيل لتنفيذها.

وسوف نناقش في هذا المقال ما يلي:

- ما هو النسخ، ومن يقوم به، وأين يستهدف، وحجمه في أرقام رسمية.
- لماذا يصعب اكتشافه: المسافة والزمن بين النسخ والاحتيال.
- خمس طبقات دفاع: الحماية المادية، وفحص الأجهزة، وحماية الجهاز والبطاقة، ومراقبة العمليات، وتحليل النقطة المشتركة.
- ما يطلبه البنك المركزي في إطار الأمن السيبراني للصرافات ونقاط البيع، وما يطلبه PCI DSS من التجار.
- تحليل النقطة المشتركة Common Point of Purchase خطوة بخطوة، وما تقوله قواعد Visa عنه.
- مختبر في Python على بيانات مولدة: نجد الجهاز المخترق، ونخطئ أولاً بسبب المنطقة الجغرافية ثم نصلح، ونحدد نافذة الاختراق والبطاقات التي تستبدل.
- الاستجابة بعد الاكتشاف من جهة البنك والتاجر، والأخطاء الشائعة، وقائمة تحقق.

## ما هو نسخ البطاقات Skimming؟

تعرف [ورقة مجلس PCI SSC عن منع النسخ](https://listings.pcisecuritystandards.org/pdfs/skimming%5Fprevention%5Foverview%5Fone%5Fsheet.pdf?ref=arabroot.io) النسخ بأنه التقاط بيانات الدفع ونقلها إلى مصدر آخر دون إذن، بهدف الاحتيال، وتقول إن اللصوص يسرقون بيانات الدفع إما من بطاقة العميل مباشرة أو من البنية التحتية للدفع في موقع التاجر، وإن الطريقتين تحتاجان عادة جهازاً مزروعاً في الموقع. وتذكر الورقة أن من يقوم بالنسخ قد يكون عصابات منظمة تنفذ هجمات معقدة، وقد يكون مجرمين بسطاء يستخدمون تقنية متاحة، وتعد خمسة أهداف محتملة: بيانات الرقم السري التي تلتقط بالنظر من شخص قريب من الجهاز أو بجهاز إدخال مزيف، والأجهزة التي تعمل دون موظف أو تترك دون مراقبة مؤقتاً، والتجار ذوو حجم العمليات العالي لأنهم يتيحون جمع بيانات كثيرة في وقت قصير، والأجهزة كثيرة الاستخدام، والتجار في مواسم البيع العالية.

وبالكلمات التي يحتاجها المدافع: جهاز النسخ شيء يضاف إلى جهاز القبول أو الصراف أو داخله، يقرأ بيانات البطاقة الثابتة عندما يمررها العميل، ويرافقه غالباً شيء يلتقط الرقم السري، ثم تستخدم البيانات المنسوخة لاحقاً لصنع بطاقة مزورة تسحب بها الأموال أو يشترى بها. والبيانات التي تصلح للنسخ هي البيانات الثابتة في الشريط الممغنط، أما الشريحة فتحسب لكل عملية رمزاً لمرة واحدة بمفتاح لا يخرج منها، كما شرحنا في مقال [أجهزة نقاط البيع والدفع بالجوال](https://arabroot.io/articles/%D8%A7%D8%AC%D9%87%D8%B2%D8%A9-%D9%86%D9%82%D8%A7%D8%B7-%D8%A7%D9%84%D8%A8%D9%8A%D8%B9-pos-%D9%88%D8%A7%D9%84%D8%AF%D9%81%D8%B9-%D8%A8%D8%A7%D9%84%D8%AC%D9%88%D8%A7%D9%84-softpos/#why-chip)، فالنسخة لا تستطيع أن تصنع رموزاً جديدة. ولهذا يبقى الشريط هو الهدف، وتبقى البطاقات التي تقبل بالشريط في أي مكان في العالم نقطة ضعف حتى لو كانت تحمل شريحة.

### كم حجم المشكلة؟

لا ينشر البنك المركزي أرقاماً عن النسخ في المملكة بحسب ما وجدنا، فنأخذ مثالاً من جهة رسمية تنشر أرقامها. ففي [بيان جهاز الخدمة السرية الأمريكي بتاريخ 7 يناير 2026](https://www.secretservice.gov/newsroom/releases/2026/01/secret-service-card-skimming-operations-prevent-more-400-million-fraud?ref=arabroot.io) أنه نفذ مع شركائه من جهات إنفاذ القانون 22 عملية توعية وتفتيش في مدن مختلفة خلال 2025، زار فيها أكثر من 9,000 منشأة، وفحص قرابة 60,000 جهاز نقطة بيع ومضخة وقود وصراف، وأزال 411 جهاز نسخ غير نظامي، وقدر الخسائر المحتملة التي منعتها هذه العمليات بأكثر من 428.1 مليون دولار. ويقول البيان إن المجرمين يسرقون أرقام البطاقات بتركيب أجهزة نسخ على الصرافات ومضخات الوقود وأجهزة نقاط البيع، ثم يكتبون البيانات على بطاقة أخرى بشريط ممغنط، وإن جهات إنفاذ القانون لاحظت زيادة في النسخ تستهدف بشكل خاص بطاقات الدعم الحكومي EBT. وفي توصياته للمستهلكين أن يفحصوا الأجهزة بحثاً عن أي شيء مرتخ أو مائل أو تالف أو مخدوش، وأن يستخدموا الدفع باللمس أو البطاقات ذات الشريحة متى أمكن.

والدرس من هذا الرقم ليس حجم الخسارة في بلد آخر، وإنما نسبة الأجهزة المخترقة إلى الأجهزة المفحوصة: 411 من قرابة 60,000، أي أقل من جهاز في كل مئة. فالجهاز المخترق نادر، ولكنه ينسخ كل بطاقة تمر به، وهذا يجعل البحث عنه بالفحص العشوائي وحده مثل البحث عن إبرة، ويجعل التحليل من جهة البطاقات المسروقة ضرورياً، وهذا ما سنبنيه في المختبر.

## لماذا يصعب اكتشافه؟

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

![خمس محطات من اليمين إلى اليسار: نقطة مخترقة Compromised POS أو ATM فيها جهاز نسخ مخفي لأيام أو أسابيع، ثم بطاقات كثيرة تمر Normal customers بعمليات سليمة لا يلاحظ أحد فيها شيئاً، ثم استخدام النسخ Counterfeit use بعد أيام وفي مكان آخر غالباً بالشريط، ثم العميل يبلغ Fraud reported عن عمليات لا يعرفها والمصدر يوقف البطاقة، ثم تحليل النقطة المشتركة CPP analysis أين مرت هذه البطاقات قبل الاحتيال، وتحتها أن الاحتيال يظهر بعيداً عن مكان النسخ وبعد أيام منه فالمصدر يرجع في الزمن ليجد المكان المشترك](https://arabroot.io/content/images/2026/10/card-skimming-defense-01-trail.webp)

الجريمة في مكان، والضرر في مكان آخر بعد أيام

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

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

## خمس طبقات دفاع

لا توجد طريقة واحدة تمنع النسخ، والبنوك والتجار يبنون طبقات، كل طبقة تلتقط ما فات التي قبلها، والصورة التالية تجمعها:

![خمس بطاقات: الحماية المادية Physical بتصميم يقاوم العبث وكاميرات وإضاءة وصيانة بتصاريح، وفحص الأجهزة Inspection بقائمة بالأجهزة وفحص دوري وصور ومتطلب PCI DSS 9.5.1، والجهاز والبطاقة Anti-skimming و EMV بكشف أجسام غريبة والشريحة لا الشريط وإيقاف الصراف عن بعد، ومراقبة العمليات Transaction monitoring بشريط لبطاقة شريحة ومواقع وسرعة وحظر جغرافي، والنقطة المشتركة CPP و response بتحديد المكان والمدة وإعادة إصدار البطاقات وإبلاغ الأطراف، وتحتها أنه لا توجد طبقة تكفي وحدها](https://arabroot.io/content/images/2026/10/card-skimming-defense-02-layers.webp)

طبقتان تمنعان، وطبقتان تكشفان، وطبقة تحدد ما فات الجميع

### ما يطلبه البنك المركزي في الصرافات ونقاط البيع

في [البند 3.3.13 من إطار الأمن السيبراني للبنك المركزي](https://rulebook.sama.gov.sa/en/3313-electronic-banking-services-0?ref=arabroot.io) عن الخدمات المصرفية الإلكترونية، الصادر في 24 مايو 2017، فقرة خاصة بالصرافات ونقاط البيع تطلب من الجهات الخاضعة للإطار أن تغطي في معاييرها: منع استغلال ثغرات تطبيق الصراف أو نقطة البيع وبنيتها التحتية واكتشافه، مثل الكابلات ومنافذ USB وإعادة التشغيل، ومجموعة من إجراءات الأمن السيبراني منها تقوية أنظمة التشغيل، والحماية من البرمجيات الخبيثة، وشاشات الخصوصية، وإخفاء كلمات المرور وأرقام الحسابات على الشاشة والإيصال، والحظر الجغرافي ومن أمثلته تعطيل البطاقات افتراضياً خارج دول مجلس التعاون وتعطيل عمليات الشريط الممغنط، والمراقبة بالكاميرات، وإلغاء البطاقة بعد ثلاث محاولات خاطئة متتالية للرقم السري، وحلول مكافحة النسخ في العتاد أو البرمجيات، وحماية لوحة الرقم السري، ثم إيقاف الصرافات عن بعد عند وجود نشاط ضار. ويعرف [مسرد الإطار](https://rulebook.sama.gov.sa/en/appendix-f-glossary-0?ref=arabroot.io) حل مكافحة النسخ Anti-skimming Solution بأنه حل يراقب بيئة الصراف أو نقطة البيع بحثاً عن آليات اختراق مركبة بشكل غير نظامي، عتاداً كانت أو برمجيات.

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

وفي تعاميم أقدم ما زالت في دليل القواعد إجراءات مادية للصرافات، ففي [تعميم الحد من الاحتيال والتلاعب ببطاقات الصراف](https://rulebook.sama.gov.sa/en/need-limit-fraud-and-manipulation-atm-cards-phone-banking-and-online-banking-services?ref=arabroot.io) بتاريخ 5 يناير 2002 إخفاء أسلاك التيار الكهربائي للصرافات بإحكام بحيث لا يصل إليها المستخدمون ولا يرونها، وتوفير الكاميرات في مواقع الصرافات، وترتيب الصرافات المتجاورة بحيث لا يرى أحد الآخر وهو يدخل رقمه السري، وجرد محتويات الصراف بحضور شخصين على الأقل، ومنع ظهور رقم البطاقة كاملاً في الإيصال. وفي [تعميم إجراءات صيانة الصرافات](https://rulebook.sama.gov.sa/en/procedures-and-controls-be-observed-maintaining-atm-machines?ref=arabroot.io) بتاريخ 15 أغسطس 1999 أن يحمل عمال الصيانة تصاريح بأسمائهم وصورهم مختومة من جهة عملهم، وأن تكون لمركبات شركات الصيانة وملابس عمالها شعارات مميزة، وأن تحدد ساعات الصيانة. وهذه التفاصيل التي تبدو إدارية هي في الحقيقة دفاع ضد أخطر سيناريو في قصتنا: شخص يدعي أنه فني صيانة.

### ما يطلبه PCI DSS من التاجر

التاجر الذي يقبل البطاقة بحضورها مسؤول عن أجهزته، وفي معيار PCI DSS بإصداره الرابع متطلب صريح لذلك هو 9.5.1، ونصه كما في [استبيان التقييم الذاتي SAQ D للتجار](https://listings.pcisecuritystandards.org/documents/PCI-DSS-v4-0-SAQ-D-Merchant.pdf?ref=arabroot.io) أن أجهزة نقاط التفاعل POI التي تلتقط بيانات البطاقة بالتعامل المادي معها محمية من العبث والاستبدال غير المصرح به، بما في ذلك الاحتفاظ بقائمة الأجهزة، وفحصها دورياً بحثاً عن العبث أو الاستبدال، وتدريب الموظفين على الانتباه للسلوك المريب والإبلاغ عن العبث أو الاستبدال. وتفصل المتطلبات الفرعية ذلك:

- **9.5.1.1:** قائمة محدثة بالأجهزة فيها نوع الجهاز وطرازه، وموقعه، ورقمه التسلسلي أو أي معرف فريد آخر.
- **9.5.1.2:** فحص أسطح الأجهزة دورياً لاكتشاف العبث والاستبدال، و9.5.1.2.1 أن يحدد التاجر تكرار الفحص ونوعه في تحليل مخاطر موجه، وكان هذا أفضل ممارسة حتى 31 مارس 2025 ثم أصبح مطلوباً.
- **9.5.1.3:** تدريب الموظفين في أماكن الأجهزة، ويشمل التحقق من هوية أي طرف ثالث يدعي أنه من فريق الإصلاح أو الصيانة قبل السماح له بتعديل الأجهزة أو فحصها، وإجراءات تضمن ألا تركب الأجهزة أو تستبدل أو تعاد دون تحقق، والانتباه للسلوك المريب حول الأجهزة، والإبلاغ عنه.

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

وأما كيف يفحص التاجر عملياً، ففي [دليل أفضل الممارسات لمنع النسخ للتجار](https://listings.pcisecuritystandards.org/documents/Skimming%5FPrevention%5FBP%5Ffor%5FMerchants%5FSept2014.pdf?ref=arabroot.io)، الإصدار 2.0 بتاريخ سبتمبر 2014، توصيات مفصلة منها: الاحتفاظ بقائمة بكل الأجهزة، وجدول فحص قد يكون مرة في اليوم أو في بداية كل وردية، وتدوير الأشخاص الذين يفحصون حتى لا يفوت شيء ولمنع التواطؤ، وتصوير كل جهاز من الأمام والخلف مع ملصقاته ورقمه التسلسلي لمقارنة الصور لاحقاً، وتسجيل عدد الكابلات والوصلات المرتبطة بكل جهاز ونوعها ولونها، وعدم السماح بزيارات صيانة أو تحديثات غير معلنة دون التحقق من مزود الخدمة، والتحكم المزدوج في تحميل المفاتيح الجديدة مع سجلات لكل خطوة، وشراء الأجهزة من المصنع أو موزع معروف. وكل هذه التوصيات تتحول عند الشركة الناشئة إلى نظام صغير: جدول أجهزة بصورها وأرقامها، ونموذج فحص على جوال الموظف في بداية كل وردية، وسجل لكل زيارة صيانة مع رقم الطلب عند المستحوذ.

### حماية الجهاز والبطاقة

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

![ملصق أحمر على باب جهاز دفع في مضخة وقود مكتوب عليه Official Security Label وعليه رقم تسلسلي وباركود وطلب الإبلاغ إذا ظهرت عبارة VOID OPEN، وتحته قفل الباب](https://arabroot.io/content/images/2026/10/card-skimming-defense-07-photo-security-seal.webp)

ملصق أمان مرقم على باب جهاز الدفع في مضخة وقود، وتظهر عليه عبارة VOID OPEN إذا نزع أو فتح الباب تحته. وهذا ما يقارنه الفاحص في كل جولة: هل الملصق سليم، وهل رقمه هو المسجل لهذا الجهاز؟ الصورة: Tony Webster، بترخيص [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/?ref=arabroot.io)، المصدر: [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Gas%5FPump%5FAnti-Skimming%5FDevice%5FFraud%5FPrevention%5FSecurity%5FSticker%5F%2826069892902%29.jpg?ref=arabroot.io) (تم تصغيرها وتحويلها إلى WebP، والنسخة متاحة بالرخصة نفسها).

### مراقبة شبكة الصرافات من المركز

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

### مراقبة العمليات

الطبقة الرابعة عند البنك المصدر، في نظام كشف الاحتيال الذي شرحناه في مقال [كشف الاحتيال](https://arabroot.io/articles/%D9%83%D8%B4%D9%81-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D9%84-fraud-detection-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%85-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A9/)، وفيه قواعد خاصة بالبطاقات المنسوخة، منها:

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

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

## تحليل النقطة المشتركة Common Point of Purchase

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

![خمس خطوات من اليمين إلى اليسار: البطاقات المبلغ عنها Reported fraud cards احتيال بطاقات مزورة Counterfeit فقط، ثم النظر إلى الوراء Look back 45 days كل عملية سليمة قبل أول احتيال، ثم العد لكل مكان Fraud cards per place كم بطاقة مسروقة مرت بكل تاجر وصراف، ثم المقارنة بالمتوقع Compare to expected بحسب حركة المكان وبطاقات منطقته، ثم النافذة الزمنية Window و cards at risk متى بدأ ومتى انتهى وأي بطاقات تستبدل، وتحتها أن المكان الأكثر زيارة سيظهر دائماً في العد والمكان المخترق يظهر في المقارنة بالمتوقع](https://arabroot.io/content/images/2026/10/card-skimming-defense-03-cpp.webp)

من البطاقات المسروقة إلى المكان، ثم من المكان إلى البطاقات التي لم تسرق بعد

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

وفي قواعد الشبكات مكان لهذا التحليل، ففي وثيقة [What To Do If Compromised من Visa](https://usa.visa.com/dam/VCOM/download/merchants/cisp-what-to-do-if-compromised.pdf?ref=arabroot.io)، الإصدار 10.0 الساري من 25 يونيو 2026، أن الجهة التي تشتبه في وصول غير مصرح به إلى بيانات حسابات Visa أو تتأكد منه يجب أن تبلغ Visa خلال ثلاثة أيام تقويمية من اكتشاف دليل يكفي للاشتباه المعقول أو للتأكد، وأن تقدم تقرير حادثة خلال ثلاثة أيام تقويمية من الإبلاغ، وأن تبلغ فوراً الأطراف المعنية ومنها البنك المستحوذ أو المصدر. وتذكر الوثيقة أن Visa قد تطلب تحقيقاً جنائياً من محقق معتمد من PCI يسمى PFI، وأن من العوامل التي قد تؤدي إلى ذلك خسائر الاحتيال المرتبطة بتقارير النقطة المشتركة Common Point of Purchase. فالتحليل الذي سنبنيه ليس تمريناً أكاديمياً، وإنما الطريقة التي تصل بها الشبكات والبنوك إلى التاجر المخترق، كما وصل البنك إلى النادي في قصتنا.

## المختبر: نجد الجهاز المخترق من بيانات البطاقات

المختبر برنامج Python بالمكتبة القياسية فقط، شغلناه داخل Container من الـ Docker Image الرسمية `python:3.13.17-slim`. وهو يبني عالماً مولداً ببذرة ثابتة من جهة بنك مصدر: 8,000 بطاقة في ثلاث مناطق، و241 تاجراً وصرافاً بأوزان شعبية مختلفة، منها سوبرماركت كبير جداً في المنطقة A اسمه `P900`، و75 يوماً من العمليات. ووضعنا في هذا العالم جهازي نسخ لا يراهما البنك: الأول في نقطة البيع `P117` من اليوم 12 إلى 21، وهو جهاز الاستقبال في قصتنا، والثاني في الصراف `A044` من اليوم 30 إلى 33\. والبطاقة التي تمر بأحدهما في فترته تنسخ باحتمال 60%، ثم يظهر عليها احتيال ببطاقة مزورة بعد 4 إلى 30 يوماً، وأضفنا 160 حالة احتيال لا علاقة لها بالنسخ، من بطاقات مفقودة واحتيال عبر الإنترنت، لتكون البيانات أقرب إلى ما يراه البنك. والبنك لا يعرف شيئاً من ذلك، وإنما يرى العمليات والبطاقات التي أبلغ عنها أصحابها بعد ثلاثة أيام من أول احتيال.

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

```python
# cpp.py: finding a compromised merchant or ATM from synthetic card transactions (Common Point of Purchase).
# The issuer side: it sees its own cards' transactions and the fraud its customers report. No real data.
import random, math, sys
from collections import defaultdict, Counter

SEED, CARDS, DAYS = 2026, 8000, 75
rnd = random.Random(SEED)

# ---------- synthetic world ----------
merchants = []                                   # (id, kind, region, weight)
for i in range(240):
    kind = "ATM" if i % 4 == 0 else "POS"
    region = "ABC"[i % 3]
    weight = 1 / (1 + i % 80) ** 0.9             # a few very popular places, many quiet ones
    merchants.append((f"{kind[0]}{i:03d}", kind, region, weight))
merchants.append(("P900", "POS", "A", 1.0))      # the largest supermarket in region A: very popular, never compromised
by_region = {r: [m for m in merchants if m[2] == r] for r in "ABC"}
COMPROMISED = {"P117": (12, 21), "A044": (30, 33)}   # merchant: (first day, last day) a skimmer was in place

cards = [{"id": f"C{i:05d}", "region": "ABC"[i % 3], "rate": rnd.uniform(0.3, 1.4)} for i in range(CARDS)]
txns = []                                        # (day, card, merchant, kind)
captured = {}                                    # card -> (day, place) it was copied; the issuer never sees this
for c in cards:
    pool = by_region[c["region"]]
    w = [m[3] for m in pool]
    for day in range(DAYS):
        for _ in range(int(c["rate"]) + (rnd.random() < c["rate"] % 1)):
            m = rnd.choices(pool, w)[0]
            txns.append((day, c["id"], m[0], "genuine"))
            win = COMPROMISED.get(m[0])
            if win and win[0] <= day <= win[1] and c["id"] not in captured and rnd.random() < 0.6:
                captured[c["id"]] = (day, m[0])

fraud_first = {}                                 # card -> first fraud day (counterfeit use of the copy)
for cid, (day, where) in captured.items():
    start = day + rnd.randint(4, 30)
    if start < DAYS:
        fraud_first[cid] = start
        for d in range(start, min(DAYS, start + rnd.randint(1, 3))):
            txns.append((d, cid, "X-elsewhere", "counterfeit"))
for c in rnd.sample(cards, 160):                 # background fraud unrelated to any skimmer (lost cards, online)
    d = rnd.randrange(DAYS)
    if c["id"] not in fraud_first:
        fraud_first[c["id"]] = d
        txns.append((d, c["id"], "X-online", rnd.choice(["lost-stolen", "card-not-present"])))
fraud_type = {cid: t for d, cid, m, t in txns if t != "genuine"}

# ---------- the analysis the issuer runs on day `today` ----------
def cpp(today, lookback=45, report_delay=3, types=("counterfeit",)):
    reported = {c: d for c, d in fraud_first.items() if d + report_delay <= today and fraud_type[c] in types}
    visits = defaultdict(set); fraud_visits = defaultdict(set); all_cards = set()
    for day, cid, mid, t in txns:
        if t != "genuine" or day >= today:
            continue
        all_cards.add(cid)
        visits[mid].add(cid)
        if cid in reported and reported[cid] - lookback <= day < reported[cid]:
            fraud_visits[mid].add(cid)
    p = len(reported) / len(all_cards)            # chance that any card is a reported fraud card
    region_of = {c["id"]: c["region"] for c in cards}
    reg_cards = Counter(region_of[c] for c in all_cards)
    reg_fraud = Counter(region_of[c] for c in reported)
    m_region = {m[0]: m[2] for m in merchants}
    rows = []
    for mid, cs in visits.items():
        n, k = len(cs), len(fraud_visits[mid])
        z = (k - n * p) / math.sqrt(n * p * (1 - p)) if n * p > 0 else 0
        pr = reg_fraud[m_region[mid]] / reg_cards[m_region[mid]]   # same question, asked only of cards from that region
        zr = (k - n * pr) / math.sqrt(n * pr * (1 - pr)) if 0 < pr < 1 else 0
        rows.append((mid, n, k, k / n, z, zr))
    return reported, p, rows

def window(mid, reported, today):
    # for each day: share of the cards seen at `mid` that day which were later reported
    seen = defaultdict(set)
    for day, cid, m, t in txns:
        if m == mid and t == "genuine" and day < today:
            seen[day].add(cid)
    return [(d, len(seen[d]), sum(1 for c in seen[d] if c in reported)) for d in sorted(seen)]

def show(today, types=("counterfeit",), top=5, ranks=("count", "z", "z-region")):
    reported, p, rows = cpp(today, types=types)
    print(f"== day {today}: {len(reported)} reported fraud cards of types {types}, base rate {p:.4f}")
    keys = {"count": lambda x: -x[2], "z": lambda x: -x[4], "z-region": lambda x: -x[5]}
    for r in ranks:
        print(f"top by {r}:")
        for mid, n, k, rate, z, zr in sorted(rows, key=keys[r])[:top]:
            print(f"  {mid}  cards {n:>5}  fraud cards {k:>4}  rate {rate:6.3f}  z {z:6.1f}  z-region {zr:6.1f}")
    return reported

if __name__ == "__main__":
    print(f"transactions {len(txns):,}  cards {CARDS:,}  merchants {len(merchants)}  "
          f"copied by skimmers {len(captured)} {dict(Counter(w for d, w in captured.values()))}")
    print("fraud cards by type:", dict(Counter(fraud_type.values())))
    if "--early" in sys.argv:
        for today in (18, 22, 26):
            show(today, top=3, ranks=("z-region",))
        sys.exit()
    if "--all-types" in sys.argv:
        show(40, types=("counterfeit", "lost-stolen", "card-not-present"), top=4, ranks=("z-region",))
        sys.exit()
    if "--later" in sys.argv:
        show(60, top=4, ranks=("z-region",))
        sys.exit()
    today = 40
    reported = show(today)
    print("day-by-day at P117 (cards that day / of them reported):")
    w = window("P117", reported, today)
    print("  " + "  ".join(f"d{d}:{k}/{n}" for d, n, k in w if 6 <= d <= 27))
    first = min(d for d, n, k in w if k >= 2); last = max(d for d, n, k in w if k >= 2)
    at_risk = {cid for day, cid, m, t in txns if m == "P117" and t == "genuine" and first <= day <= last}
    not_yet = {c for c in at_risk if c not in reported}
    later = {c for c in not_yet if c in fraud_first and fraud_first[c] >= today}
    print(f"suspected window d{first}-d{last}; cards seen there {len(at_risk)}; not yet reported {len(not_yet)}")
    print(f"of those, cards that would turn to fraud after day {today} if left alone: {len(later)}"
          f"  (truly captured among not-yet-reported: {sum(1 for c in not_yet if c in captured)})")
```

وشغلناه من مجلد المختبر في Git Bash على Windows، والعالم كله يبنى في الذاكرة في ثوان:

```bash
export MSYS_NO_PATHCONV=1
docker run --rm --name sfc-cpp -v "$(pwd -W)":/lab -w /lab python:3.13.17-slim sh -c "python --version; python cpp.py"
```

والمخرج سوف يكون كما يلي:

```text
Python 3.13.17
transactions 507,278  cards 8,000  merchants 241  copied by skimmers 114 {'P117': 83, 'A044': 31}
fraud cards by type: {'counterfeit': 114, 'lost-stolen': 85, 'card-not-present': 69}
== day 40: 64 reported fraud cards of types ('counterfeit',), base rate 0.0080
top by count:
  P117  cards   455  fraud cards   57  rate  0.125  z   28.1  z-region   15.3
  A000  cards  2589  fraud cards   55  rate  0.021  z    7.6  z-region   -0.0
  P900  cards  2591  fraud cards   51  rate  0.020  z    6.7  z-region   -0.6
  P081  cards  2377  fraud cards   49  rate  0.021  z    6.9  z-region   -0.3
  P162  cards  2125  fraud cards   44  rate  0.021  z    6.6  z-region   -0.2
top by z:
  P117  cards   455  fraud cards   57  rate  0.125  z   28.1  z-region   15.3
  A000  cards  2589  fraud cards   55  rate  0.021  z    7.6  z-region   -0.0
  P081  cards  2377  fraud cards   49  rate  0.021  z    6.9  z-region   -0.3
  P900  cards  2591  fraud cards   51  rate  0.020  z    6.7  z-region   -0.6
  P162  cards  2125  fraud cards   44  rate  0.021  z    6.6  z-region   -0.2
top by z-region:
  P117  cards   455  fraud cards   57  rate  0.125  z   28.1  z-region   15.3
  A044  cards   454  fraud cards    7  rate  0.015  z    1.8  z-region    5.3
  P209  cards   392  fraud cards    4  rate  0.010  z    0.5  z-region    2.9
  P150  cards   278  fraud cards   11  rate  0.040  z    5.9  z-region    2.1
  P197  cards   499  fraud cards    3  rate  0.006  z   -0.5  z-region    1.5
day-by-day at P117 (cards that day / of them reported):
  d6:0/18  d7:0/12  d8:1/12  d9:0/12  d10:0/11  d11:0/15  d12:8/15  d13:3/11  d14:4/12  d15:12/15  d16:3/11  d17:8/17  d18:5/15  d19:5/14  d20:6/13  d21:5/10  d22:0/10  d23:0/13  d24:1/13  d25:0/17  d26:1/6  d27:1/10
suspected window d12-d21; cards seen there 129; not yet reported 72
of those, cards that would turn to fraud after day 40 if left alone: 21  (truly captured among not-yet-reported: 26)
```

### العالم الذي بنيناه

السطران الأولان يصفان البيانات: 507,278 عملية على 8,000 بطاقة و241 مكاناً، ونسخ الجهازان 114 بطاقة، 83 في `P117` و31 في `A044`، وهذا رقم لا يعرفه البنك ونستخدمه فقط لنحكم على التحليل. وأنواع الاحتيال 114 بطاقة مزورة و85 بطاقة مفقودة أو مسروقة و69 احتيالاً دون حضور البطاقة. ثم يبدأ التحليل في اليوم 40: البنك يعرف حتى هذا اليوم 64 بطاقة مزورة مبلغاً عنها فقط من 114، لأن البقية لم يظهر عليها الاحتيال بعد أو لم يبلغ عنها.

### الخطأ الأول: الترتيب بالعدد

القائمة الأولى ترتب الأماكن بعدد البطاقات المبلغ عنها التي مرت بها قبل الاحتيال. و`P117` في الأعلى بـ 57 بطاقة، وهذا جيد، ولكن انظر إلى ما تحته: `A000` بـ 55، و`P900` السوبرماركت بـ 51، و`P081` بـ 49، و`P162` بـ 44\. أي أن الفرق بين المكان المخترق والأماكن السليمة بطاقتان فقط. والسبب أن هذه الأماكن يزورها أكثر من ألفي بطاقة، فطبيعي أن تمر بها البطاقات المسروقة أيضاً. والمحلل الذي يرى هذه القائمة قد يرسل فريق فحص إلى خمسة أماكن، أربعة منها سليمة، أو قد يبدأ بالسوبرماركت لأنه الأكبر، وهذا بالضبط ما يجب أن تمنعه المقارنة بالمتوقع. وانظر إلى عمود `rate`: في `P117` 12.5% من البطاقات التي مرت به مبلغ عنها، وفي الأماكن الأخرى حوالي 2%.

### الخطأ الثاني: المتوقع على مستوى البنك كله

القائمة الثانية ترتب بقيمة `z`، وهي مقياس يقول كم يزيد عدد البطاقات المسروقة في المكان على ما نتوقعه لو كانت البطاقات المسروقة موزعة عشوائياً على كل عملاء البنك: النسبة العامة للبطاقات المبلغ عنها 0.008، فالمكان الذي تزوره 2,589 بطاقة نتوقع فيه قرابة 21 بطاقة مسروقة، فإذا وجدنا 55 فالزيادة كبيرة. وهنا ظهرت لنا مشكلة لم نتوقعها عندما كتبنا التحليل: `P117` في الأعلى بـ 28.1، ولكن `A000` و`P081` و`P900` و`P162` كلها بقيم بين 6.6 و7.6، وهي قيم تعتبر عادة دليلاً قوياً على شيء غير طبيعي. فهل في المنطقة A خمسة أماكن مخترقة؟

لا، والسبب أن البطاقات المسروقة ليست موزعة عشوائياً على عملاء البنك، فأغلبها من المنطقة A، لأن `P117` في المنطقة A، وعملاؤه من سكانها. فكل مكان شعبي في المنطقة A يرى بطاقات مسروقة أكثر من المعدل العام للبنك، لا لأنه مخترق، وإنما لأن زبائنه من نفس المنطقة التي فيها المكان المخترق. وهذا خلط Confounding بين المكان والمنطقة، ويحدث في الواقع بنفس الطريقة: البطاقات المنسوخة في محطة وقود على طريق معين يسكن أصحابها غالباً حوله، فتظهر كل محلات الحي في التحليل. والإصلاح في عمود `z-region`: نحسب المتوقع لكل مكان بنسبة البطاقات المسروقة بين بطاقات منطقته فقط، لا بين كل بطاقات البنك. وانظر إلى القائمة الثالثة: `P117` بـ 15.3، ثم `A044`، الصراف الذي فيه جهاز النسخ الثاني، بـ 5.3 مع أنه لم يمر به إلا 7 بطاقات مسروقة، ثم أماكن بقيم 2.9 و2.1 و1.5، وهذه قيم يمكن أن تظهر بالصدفة. والأماكن الشعبية التي كانت بقيم 7 أصبحت قيمها حول الصفر، كما تظهر الصورة التالية:

![أعمدة أفقية في مجموعتين: بالعد P117 بـ 57 بطاقة وA000 بـ 55 وP900 بـ 51 وP081 بـ 49، ثم بالمقارنة بالمتوقع لكل منطقة z-region: P117 بـ 15.3 وA044 بـ 5.3 وP209 بـ 2.9 وA000 بـ 0.0، وتحتها أن العد في اليوم 40 يضع الأماكن المزدحمة بجانب P117 والمقارنة بالمتوقع تخرجها وتكشف الصراف A044](https://arabroot.io/content/images/2026/10/card-skimming-defense-04-ranking.webp)

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

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

### متى كان الجهاز في مكانه؟

بعد أن عرفنا المكان، نحتاج أن نعرف الفترة، لأن البطاقات التي مرت بالمكان خارجها سليمة. والبرنامج يحسب لكل يوم عدد البطاقات التي مرت بـ `P117` في ذلك اليوم، وكم منها أبلغ عنه لاحقاً، والصورة التالية تعرض الأيام من 10 إلى 23 من نفس المخرج:

![أعمدة أفقية لكل يوم من اليوم 10 إلى اليوم 23 في P117: اليومان 10 و11 صفر، ثم اليوم 12 بـ 8 من 15 واليوم 13 بـ 3 من 11 واليوم 14 بـ 4 من 12 واليوم 15 بـ 12 من 15 واليوم 16 بـ 3 من 11 واليوم 17 بـ 8 من 17 واليوم 18 بـ 5 من 15 واليوم 19 بـ 5 من 14 واليوم 20 بـ 6 من 13 واليوم 21 بـ 5 من 10، ثم اليومان 22 و23 صفر، وتحتها أن النافذة 12 إلى 21 تظهر وحدها وهي نافذة الجهاز في المحاكاة](https://arabroot.io/content/images/2026/10/card-skimming-defense-05-window.webp)

عشرة أيام تبرز، وقبلها وبعدها أصفار تقريباً

النافذة واضحة: من اليوم 12 إلى اليوم 21، وهي بالضبط الفترة التي وضعنا فيها الجهاز في المحاكاة. وقبلها وبعدها أصفار، مع بطاقة واحدة في اليوم 8 وواحدة في اليوم 24، وهذه بطاقات مرت بالمكان في تلك الأيام ومرت به مرة أخرى في فترة الجهاز فنسخت حينها. والبرنامج يحدد النافذة بأول وآخر يوم فيه بطاقتان مبلغ عنهما على الأقل، وهذا شرط بسيط يتجاهل الحالات الفردية. وفي الواقع تتطابق النافذة التي يجدها التحليل مع ما يجده الفحص الجنائي للجهاز وتسجيلات الكاميرات، مثل زيارة «فني الصيانة» في قصتنا، ويكمل كل منهما الآخر.

### أي البطاقات تستبدل؟

آخر سطرين في المخرج هما القرار العملي: في النافذة مرت 129 بطاقة بـ `P117`، منها 57 مبلغ عنها وأوقفت بالفعل، فيبقى 72 بطاقة لم يظهر عليها شيء بعد. ومن هذه الـ 72 نعرف في المحاكاة أن 26 نسخت فعلاً، وأن 21 منها سيظهر عليها الاحتيال بعد اليوم 40 لو تركت. فالبنك أمام قرار: يستبدل 72 بطاقة وقائياً Reissue ليمنع الاحتيال على 21، ويتحمل تكلفة إصدار وإزعاج 51 عميلاً بطاقاتهم سليمة، أو ينتظر ويتحمل الاحتيال والاعتراضات. والصورة التالية تلخص الأرقام:

![خمس بطاقات: مرت في النافذة Seen in window بـ 129 بطاقة، وأبلغ عنها Already reported بـ 57 أوقفت بالفعل، وفي خطر At risk بـ 72 تستبدل وقائياً، ومنسوخة فعلاً Truly copied بـ 26 لا يعرفها المصدر، واحتيال يمنع Fraud prevented بـ 21 بعد اليوم 40، وتحتها أن استبدال 72 بطاقة يمنع احتيالاً على 21 منها في المحاكاة والباقي ثمن الاحتياط](https://arabroot.io/content/images/2026/10/card-skimming-defense-06-reissue.webp)

البنك لا يعرف أي الـ 72 منسوخة، فيستبدلها كلها

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

### ماذا لو حللنا أبكر؟

كلما اكتشف البنك المكان أبكر نسخت بطاقات أقل، فما أبكر يوم يظهر فيه `P117`؟ شغلنا البرنامج بالخيار `--early` الذي يحلل في الأيام 18 و22 و26 بالترتيب الإقليمي فقط:

```bash
docker run --rm --name sfc-cpp -v "$(pwd -W)":/lab -w /lab python:3.13.17-slim python cpp.py --early
```

والمخرج سوف يكون كما يلي، بعد سطري وصف البيانات:

```text
== day 18: 0 reported fraud cards of types ('counterfeit',), base rate 0.0000
top by z-region:
  P162  cards  1439  fraud cards    0  rate  0.000  z    0.0  z-region    0.0
  A012  cards   528  fraud cards    0  rate  0.000  z    0.0  z-region    0.0
  P081  cards  1795  fraud cards    0  rate  0.000  z    0.0  z-region    0.0
== day 22: 3 reported fraud cards of types ('counterfeit',), base rate 0.0004
top by z-region:
  P117  cards   289  fraud cards    3  rate  0.010  z    8.8  z-region    4.7
  P213  cards   181  fraud cards    2  rate  0.011  z    7.4  z-region    4.0
  P171  cards   650  fraud cards    3  rate  0.005  z    5.6  z-region    2.7
== day 26: 9 reported fraud cards of types ('counterfeit',), base rate 0.0011
top by z-region:
  P117  cards   339  fraud cards    9  rate  0.027  z   14.0  z-region    7.4
  P159  cards   147  fraud cards    2  rate  0.014  z    4.5  z-region    2.1
  A180  cards   495  fraud cards    4  rate  0.008  z    4.6  z-region    1.8
```

في اليوم 18 لا يعرف البنك أي بطاقة مزورة، فالجهاز في مكانه منذ ستة أيام، ولم يبدأ الاحتيال بعد، ولا يستطيع التحليل أن يرى شيئاً. وفي اليوم 22 أصبح هناك 3 بلاغات، و`P117` في الأعلى بـ 4.7، ولكن بعده `P213` بـ 4.0 ببطاقتين فقط، فالفرق صغير، ولا يستطيع المحلل أن يقول بثقة أي المكانين. وفي اليوم 26، بعد 9 بلاغات، أصبح `P117` بـ 7.4 والذي يليه 2.1، فالإشارة واضحة. وهذا هو السباق الحقيقي في هذا النوع من الاحتيال: التحليل يحتاج عدداً من البلاغات ليميز الإشارة من الصدفة، والبلاغات تحتاج أن يستخدم المجرم البطاقات، وكل يوم انتظار بطاقات منسوخة أكثر. ولهذا تهم الرسائل القصيرة لكل عملية، لأنها تختصر الوقت بين الاحتيال والبلاغ، ولهذا يتشارك المصدرون والشبكات البيانات، لأن تسع بطاقات عند بنك واحد قد تكون تسعين عند كل البنوك.

### ماذا عن الصراف الثاني؟

الصراف `A044` ظهر في اليوم 40 بقيمة 5.3، ولكن بـ 7 بطاقات فقط. والخيار `--later` يحلل في اليوم 60:

```text
== day 60: 110 reported fraud cards of types ('counterfeit',), base rate 0.0138
top by z-region:
  P117  cards   645  fraud cards   83  rate  0.129  z   25.1  z-region   14.3
  A044  cards   652  fraud cards   27  rate  0.041  z    6.1  z-region    8.0
  P230  cards   433  fraud cards    7  rate  0.016  z    0.4  z-region    1.3
  P011  cards  1539  fraud cards   20  rate  0.013  z   -0.3  z-region    1.1
```

الآن أصبح `A044` بـ 27 بطاقة مسروقة وقيمة 8.0، والمكان الذي يليه بـ 1.3، فلا شك. ولاحظ أن قيمته بالمقياس العام `z` 6.1، وبالمقياس الإقليمي 8.0، فالمقياس الإقليمي أوضح هنا أيضاً. ولاحظ شيئاً آخر: `P117` ما زال في الأعلى بعد أن انتهت نافذته بأربعين يوماً، فالتحليل يجب أن يعرف ما اكتشف سابقاً ويستبعده أو يعلمه، حتى لا يغطي مكان معروف على مكان جديد، وهذا ما يحدث عندما تستمر البطاقات المنسوخة من المكان الأول في الظهور.

### ماذا لو خلطنا أنواع الاحتيال؟

آخر تجربة بالخيار `--all-types`: نفس التحليل في اليوم 40، ولكن بكل البطاقات المبلغ عنها مهما كان نوع احتيالها، كما يفعل من يأخذ جدول الاحتيال كما هو دون تصفية:

```text
== day 40: 148 reported fraud cards of types ('counterfeit', 'lost-stolen', 'card-not-present'), base rate 0.0185
top by z-region:
  P117  cards   455  fraud cards   57  rate  0.125  z   16.9  z-region   11.9
  A044  cards   454  fraud cards   10  rate  0.022  z    0.6  z-region    2.0
  P150  cards   278  fraud cards   12  rate  0.043  z    3.1  z-region    1.3
  P071  cards   276  fraud cards    5  rate  0.018  z   -0.0  z-region    0.9
```

عدد البطاقات ارتفع إلى 148، لأن البطاقات المفقودة والاحتيال عبر الإنترنت دخلت التحليل، و`P117` ما زال في الأعلى ولكن بقيمة 11.9 بدلاً من 15.3، والأخطر أن `A044` نزل من 5.3 إلى 2.0، أي إلى مستوى الأماكن التي تظهر بالصدفة. فالبطاقات التي لا علاقة لها بالنسخ أضافت إلى المتوقع في كل مكان، فغطت الإشارة الضعيفة للجهاز الثاني. والدرس أن تصنيف نوع الاحتيال عند البلاغ ليس تفصيلاً إدارياً، وإنما شرط لكي يعمل التحليل، فالموظف الذي يسجل كل بلاغ تحت نوع واحد يعطل اكتشاف أجهزة النسخ دون أن يعرف.

## بعد الاكتشاف: ماذا يفعل كل طرف؟

عندما يحدد التحليل مكاناً ونافذة، تبدأ الاستجابة في أكثر من جهة في نفس الوقت، وكل جهة لها دور:

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

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

### ما لا يفعله المدافع

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

## أخطاء شائعة

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

## قائمة تحقق للمدافع

للتاجر الذي يقبل البطاقة بحضورها:

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

وللبنك المصدر أو فريق كشف الاحتيال:

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

## الخلاصة

وصلنا لنهاية الموضوع، وأهم ما فيه:

- النسخ يحدث في مكان ويظهر ضرره في مكان آخر بعد أيام، فالمكان المخترق يبقى هادئاً، والاكتشاف يأتي من البطاقات المسروقة إلى الوراء.
- الدفاع طبقات: الحماية المادية، وفحص الأجهزة كما يطلب PCI DSS في 9.5.1، وحماية الجهاز والبطاقة بالشريحة وحلول مكافحة النسخ، ومراقبة العمليات، وتحليل النقطة المشتركة.
- إطار الأمن السيبراني للبنك المركزي يطلب للصرافات ونقاط البيع حلول مكافحة النسخ وحماية لوحة الرقم السري والكاميرات والحظر الجغرافي وتعطيل الشريط كمثال، وإيقاف الصرافات عن بعد، وإشعار العميل بكل عملية.
- في المختبر وجد التحليل الجهاز المخترق ونافذته بالضبط، ولكن الترتيب بالعدد وضع الأماكن الشعبية بجانبه، والمتوقع من كل بطاقات البنك جعل كل أماكن المنطقة مشبوهة، والمقارنة ببطاقات المنطقة أصلحت ذلك وكشفت الصراف الثاني.
- التحليل يحتاج بلاغات كافية: في اليوم 22 كانت الإشارة ضعيفة، وفي اليوم 26 واضحة، وخلط أنواع الاحتيال أخفى الصراف الثاني.
- قرار الاستبدال الوقائي يعتمد على النافذة: 72 بطاقة استبدلت لتمنع احتيالاً على 21 في المحاكاة.
- بعد الاكتشاف، التاجر يوقف الجهاز ولا يعبث به، والشبكات تطلب الإبلاغ خلال أيام، وقد تطلب تحقيقاً جنائياً.

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

وبقية مقالات قسم التقنية المالية والمدفوعات:

[![](https://arabroot.io/content/images/2026/10/fraud-detection-cover-cover.webp)دليلكشف الاحتيال Fraud Detection: قواعد أم تعلم آلة؟قارنا القواعد بنموذجين لتعلم الآلة على بيانات دفع مولدة بنفس سعة المراجعة، ورأينا من يمسك الأنماط المعروفة ومن يتأخر عن النمط الجديد.](https://arabroot.io/articles/%D9%83%D8%B4%D9%81-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D9%84-fraud-detection-%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%85-%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A9/)[![](https://arabroot.io/content/images/2026/10/pos-softpos-cover-cover.webp)دليلأجهزة نقاط البيع POS والدفع بالجوال SoftPOSماذا يحدث بين لمس البطاقة وموافقة البنك، وكيف يقبل جوال عادي الدفع بأمان، مع مختبر يبني رسالة تفويض بحقل الشريحة ويتحقق من رمزها.](https://arabroot.io/articles/%D8%A7%D8%AC%D9%87%D8%B2%D8%A9-%D9%86%D9%82%D8%A7%D8%B7-%D8%A7%D9%84%D8%A8%D9%8A%D8%B9-pos-%D9%88%D8%A7%D9%84%D8%AF%D9%81%D8%B9-%D8%A8%D8%A7%D9%84%D8%AC%D9%88%D8%A7%D9%84-softpos/)[![](https://arabroot.io/content/images/2026/10/card-payment-flow-cover-cover.webp)دليلكيف يعمل الدفع بالبطاقة؟ التفويض Authorization والتسويةمن ضغطة «ادفع» إلى آخر اعتراض: التفويض و3D Secure والتحصيل والتسوية والاسترداد والاعتراض، مع مختبر لأحداث مزود الدفع ومطابقتها.](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D8%B9%D9%85%D9%84-%D8%B9%D9%85%D9%84%D9%8A%D8%A9-%D8%A7%D9%84%D8%AF%D9%81%D8%B9-%D8%A8%D8%A7%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A9-%D8%A7%D9%84%D8%AA%D9%81%D9%88%D9%8A%D8%B6-%D9%88%D8%A7%D9%84%D8%AA%D8%B3%D9%88%D9%8A%D8%A9-%D9%88%D8%A7%D9%84%D8%A7%D8%B9%D8%AA%D8%B1%D8%A7%D8%B6/)[![](https://arabroot.io/content/images/2026/10/pci-tokenization-cover-cover.webp)دليلأمن بيانات البطاقات PCI DSS والترميز Tokenizationنطاق PCI DSS v4.0.1 وما يمنع حفظه من بيانات البطاقة، وكيف يعمل الترميز، مع مختبر لفحص السجلات وخطر التجزئة دون مفتاح.](https://arabroot.io/articles/%D8%A7%D9%85%D9%86-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A7%D8%AA-pci-dss-%D9%88%D8%A7%D9%84%D8%AA%D8%B1%D9%85%D9%8A%D8%B2-tokenization/)[![](https://arabroot.io/content/images/2026/10/iso8583-iso20022-cover-cover.webp)دليلرسائل البنوك: ISO 8583 للبطاقات وISO 20022 للتحويلاتنفكك رسالة تفويض بطاقة بايتاً بايتاً، ونبني أمر تحويل بأسماء عربية ونتحقق منه بالمخطط الرسمي، ونرى ما يتعطل في كل معيار.](https://arabroot.io/articles/%D8%B1%D8%B3%D8%A7%D8%A6%D9%84-%D8%A7%D9%84%D8%A8%D9%86%D9%88%D9%83-iso-8583-%D9%84%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A7%D8%AA-%D9%88-iso-20022-%D9%84%D9%84%D8%AA%D8%AD%D9%88%D9%8A%D9%84%D8%A7%D8%AA/)[![](https://arabroot.io/content/images/2026/10/saudi-payments-cover-cover.webp)دليلمنظومة المدفوعات في السعودية: سريع وSARIE ومدى وسدادالأنظمة الوطنية للمدفوعات في المملكة كما تصفها مصادر البنك المركزي، وما يعنيه كل نظام للمطور، مع تحليل تقارير نقاط البيع الأسبوعية.](https://arabroot.io/articles/%D9%85%D9%86%D8%B8%D9%88%D9%85%D8%A9-%D8%A7%D9%84%D9%85%D8%AF%D9%81%D9%88%D8%B9%D8%A7%D8%AA-%D9%81%D9%8A-%D8%A7%D9%84%D8%B3%D8%B9%D9%88%D8%AF%D9%8A%D8%A9-%D8%B3%D8%B1%D9%8A%D8%B9-%D9%88-sarie-%D9%88-%D9%85%D8%AF%D9%89-%D9%88-%D8%B3%D8%AF%D8%A7%D8%AF/)

## سجل التحديثات

- أكتوبر 2026: كتابة المقال، وتشغيل مختبر تحليل النقطة المشتركة على Python 3.13.17 داخل Docker ببيانات مولدة، والتحقق من إطار الأمن السيبراني وتعاميم الصرافات في دليل قواعد البنك المركزي، ومتطلب PCI DSS 9.5.1 ودليل منع النسخ من PCI SSC، ووثيقة What To Do If Compromised من Visa، وبيان جهاز الخدمة السرية الأمريكي بتاريخ 27 أكتوبر 2026.