**AWS हैकिंग सीखें और अभ्यास करें:**<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks प्रशिक्षण AWS रेड टीम विशेषज्ञ (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
**GCP हैकिंग सीखें और अभ्यास करें:** <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks प्रशिक्षण GCP रेड टीम विशेषज्ञ (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
(ECB) इलेक्ट्रॉनिक कोड बुक - सममित्र एन्क्रिप्शन योजना जो **प्रत्येक साफ टेक्स्ट के ब्लॉक को****साइपरटेक्स्ट के ब्लॉक से****बदल देती है**। यह **सरलतम** एन्क्रिप्शन योजना है। मुख्य विचार यह है कि साफ टेक्स्ट को **N बिट के ब्लॉक में विभाजित** किया जाता है (इनपुट डेटा, एन्क्रिप्शन एल्गोरिदम के ब्लॉक का आकार पर निर्भर करता है) और फिर केवल कुंजी का उपयोग करके प्रत्येक साफ टेक्स्ट के ब्लॉक को एन्क्रिप्ट (डिक्रिप्ट) करना है।
कल्पना करें आप किसी एप्लिकेशन में लॉगिन करते हैं और आप **हमेशा एक ही कुकी** प्राप्त करते हैं। यह इसलिए है क्योंकि एप्लिकेशन की कुकी **`<उपयोगकर्ता नाम>|<पासवर्ड>`** है।\
फिर, आप नए उपयोगकर्ताओं को उत्पन्न करते हैं, जिनमें से दोनों का **लंबा पासवर्ड** है और **लगभग****एक ही****उपयोगकर्ता नाम** है।\
आप पता लगाते हैं कि **8B के ब्लॉक** जहां **दोनों उपयोगकर्ताओं की जानकारी** समान हैं, **वे बराबर हैं**। तो, आपको लगता है कि यह हो सकता है क्योंकि **ECB का उपयोग हो रहा है**।
यह इसलिए है क्योंकि **कुकीज़ के उस उपयोक्ता नाम और पासवर्ड में कई बार अक्षर "a" शामिल थे** (उदाहरण के लिए)। **विभिन्न ब्लॉक** वे ब्लॉक हैं जिनमें **कम से कम 1 विभिन्न वर्ण था** (शायद विभाजक "|" या उपयोक्ता नाम में आवश्यक भिन्नता)।
अब, हमलावर को बस यह पता लगाना है कि प्रारूप `<उपयोक्ता नाम><विभाजक><पासवर्ड>` है या `<पासवर्ड><विभाजक><उपयोक्ता नाम>` है। इसके लिए, वह बस **कई उपयोक्ता नाम उत्पन्न कर सकता है** जिनमें **समान और लंबे उपयोक्ता नाम और पासवर्ड हों** जब तक वह प्रारूप और विभाजक की लंबाई को न पाए:
कुकी के प्रारूप को जानकर (`<उपयोक्तानाम>|<पासवर्ड>`), उपयोक्ता नाम `एडमिन` का अनुकरण करने के लिए एक नया उपयोक्ता बनाएं `aaaaaaaaadmin` और कुकी प्राप्त करें और इसे डिकोड करें:
* एक उपयोगकर्ता नाम जेनरेट करें जो: `len(<username>) + len(<delimiter) % len(block)`. `8B` ब्लॉक का आकार होने पर आप `username ` नामक उपयोगकर्ता उत्पन्न कर सकते हैं, डिलीमिटर `|` के साथ टुकड़ा `<username><delimiter>` 2 ब्लॉक्स को उत्पन्न करेगा।
* फिर, एक पासवर्ड जेनरेट करें जो उसी संख्या के ब्लॉक्स को भरेगा जिसमें हम उपनामित करना चाहते हैं और रिक्त स्थान हों, जैसे: `admin `
इस उपयोगकर्ता की कुकी 3 ब्लॉक्स से बनी होगी: पहले 2 उपयोगकर्ता के ब्लॉक्स + डिलीमिटर और तीसरा पासवर्ड का ब्लॉक (जो उपयोगकर्ता का नाम बना रहेगा): `username |admin `