Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
AzureRedOps — Azure RedOps, Microsoft Entra ID की सुरक्षा स्थिति का आकलन करने के लिए एक आक्रामक सुरक्षा टूलकिट है। | Kitploit
उपकरण/GitHubGitHub/mr-un1k0d3r/azureredops
फ़िशिंग उपकरणविशेषाधिकार वृद्धिटोहीपासवर्ड हमलेशोषणजानकारी एकत्र करनापोस्ट-शोषणपेनिट्रेशन टेस्टिंगक्लाउड सुरक्षाप्रमाणीकरणरेड टीमिंग
1801872 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
GitHub
mr-un1k0d3r/azureredops

AzureRedOps

Azure RedOps, Microsoft Entra ID की सुरक्षा स्थिति का आकलन करने के लिए एक आक्रामक सुरक्षा टूलकिट है।

रिपॉजिटरी देखें

AzureRedOps

Azure / Entra ID रेड टीमिंग के लिए एक स्विस आर्मी टूल।

लेखक: Mr.Un1k0d3r (TrueCyber Inc) संस्करण: 0.1 भाषा: Python 3.12+


अवलोकन

AzureRedOps Microsoft Entra ID और Azure टेनेंट्स की सुरक्षा स्थिति का आकलन करने के लिए एक आक्रामक सुरक्षा टूलकिट है। यह सबसे सामान्य रेड-टीम वर्कफ़्लो — प्रमाणीकरण, टोकन प्रबंधन, निर्देशिका गणना, विशेषाधिकार जाँच, पासवर्ड स्प्रेइंग, और Microsoft Graph के विरुद्ध पोस्ट-एक्सप्लॉइटेशन क्रियाएँ — को एक सुसंगत --activity-संचालित CLI में लपेटता है।

हर ऑपरेशन -a/--activity के साथ चुना जाता है। प्रमाणीकरण के दौरान प्राप्त टोकन को स्थानीय रूप से (.azure_creds) कैश किया जा सकता है और -l/--load-access-token के साथ नाम से पुन: उपयोग किया जा सकता है, जिससे आपको शायद ही कभी कच्चे JWT चिपकाने पड़ें।

टूल के बारे में और जानें CYPFER ब्लॉग पर

विशेषताएँ

  • टोकन प्रबंधन — स्थानीय क्रेडेंशियल स्टोर (.azure_creds) में एक्सेस/रिफ़्रेश टोकन को सहेजें, सूचीबद्ध करें, डीकोड/देखें, और हटाएँ। कोई भी प्रवाह -s/--save + -n/--name के साथ अपने टोकन को स्वचालित रूप से संग्रहीत कर सकता है।
  • एकाधिक प्रमाणीकरण प्रवाह:
    • ROPC (auth) — सीधा उपयोगकर्ता नाम/पासवर्ड प्रमाणीकरण।
    • डिवाइस-कोड फ़िशिंग (phish-start / phish-capture) — OAuth डिवाइस प्राधिकरण अनुदान का दुरुपयोग करके जब लक्ष्य आपका उपयोगकर्ता कोड microsoft.com/devicelogin पर दर्ज करता है तो जारी किए गए टोकन को कैप्चर करें। डिफ़ॉल्ट रूप से स्वचालित रूप से कैप्चर करता है।
    • तृतीय-पक्ष ऐप सहमति (auth-app) — एक कस्टम एप्लिकेशन पंजीकरण के विरुद्ध पूर्ण प्राधिकरण कोड + PKCE प्रवाह, जो रीडायरेक्ट प्राप्त करने वाले एक अंतर्निहित स्थानीय HTTPS लिसनर द्वारा प्रस्तुत किया जाता है।
    • इंटरएक्टिव ब्राउज़र कैप्चर (auth-interactive) — एक वास्तविक ब्राउज़र (Playwright; डिफ़ॉल्ट रूप से Firefox, स्विच करने के लिए -br) चलाएँ (MFA / Conditional Access / SSO को संभालता है), फिर रिकॉर्ड किए गए सत्र HAR से हर टोकन की कटाई करें।
    • रिफ़्रेश-टोकन एक्सचेंज (refresh) — एक रिफ़्रेश टोकन को नए एक्सेस टोकन के लिए व्यापार करें।
    • ऑन-बिहाफ-ऑफ़ अनुदान (obo) — पहले से जारी एक्सेस टोकन को डाउनस्ट्रीम संसाधन (OAuth 2.0 jwt-bearer / OBO) के लिए स्कोप किए गए नए टोकन के लिए एक्सचेंज करें।
  • Microsoft Graph के माध्यम से निर्देशिका गणना — उपयोगकर्ता, एप्लिकेशन, सेवा प्रिंसिपल, प्राधिकरण नीतियाँ, और एक बल्क gather-all संग्रहकर्ता।
  • ज्ञात Microsoft प्रथम-पक्ष ऐप आईडी के विरुद्ध पासवर्ड स्प्रेइंग (spray) और क्रॉस-ऐप रिफ़्रेश-टोकन स्प्रेइंग (spray-refresh)।
  • पोस्ट-एक्सप्लॉइटेशन — एप्लिकेशन पंजीकृत करें, समूह बनाएँ, निर्देशिका भूमिकाएँ असाइन करें, बाहरी (अतिथि) उपयोगकर्ताओं को आमंत्रित करें, और OneDrive पर फ़ाइलें अपलोड करें।
  • रिकॉन हेल्पर — magic-app AllPrincipals सहमति के साथ सार्वजनिक रूप से रीडायरेक्ट करने योग्य ऐप ढूँढता है; ज्ञात/दिलचस्प Microsoft ऐप आईडी की अंतर्निहित सूचियाँ।
  • जीवन-गुणवत्ता सुविधाएँ — बीटा-एंडपॉइंट स्विच, कस्टम हेडर, कस्टम उपयोगकर्ता-एजेंट/स्कोप/ऑडियंस, विशेषता फ़िल्टरिंग, विस्तारित आउटपुट, डीबग/वर्बोज़-HTTP लॉगिंग, और फ़ाइल में आउटपुट रीडायरेक्शन।

आवश्यकताएँ

  • Python 3.12 या नया (कोड PEP 701 f-string सिंटैक्स पर निर्भर करता है)।
  • Python पैकेज (देखें requirements.txt):
    • PyJWT
    • requests
    • playwright
    • cryptography (केवल browser-sso -aprt, ऑटो-PRT प्रवाह के लिए आवश्यक)
  • ब्राउज़र प्रवाह (auth-interactive, browser-sso) के लिए एक Playwright ब्राउज़र रनटाइम। Firefox डिफ़ॉल्ट इंजन है (-br/--browser); इसे इंस्टॉल करें: python -m playwright install firefox
  • includes/web/cert.pem और includes/web/key.pem पर TLS प्रमाणपत्र + कुंजी (केवल auth-app PKCE प्रवाह के लिए आवश्यक — देखें)।

स्थापना```bash

Clone the repository

git clone AzureRedOps cd AzureRedOps

Create and activate a virtual environment

python3 -m venv AzureRedOps source AzureRedOps/bin/activate # Linux / macOS

.\AzureRedOps\Scripts\Activate.ps1 # Windows PowerShell

Install dependencies

pip install -r requirements.txt

Install the browser used by the browser flows (one-time).

Firefox is the default engine; install the one(s) you plan to use with -br.

python -m playwright install firefox

python -m playwright install chromium webkit # optional, for -br chromium/webkit

python -m playwright install-deps # Linux/WSL: pull system libs

root@kitploit:~
उपकरण चलाएँ:```bash
python3 AzureRedOps.py -a <activity> [options]

उपयोग

सामान्य आह्वान पैटर्न है:```bash python3 AzureRedOps.py -a [authentication] [activity options] [global options]

root@kitploit:~
### एक टोकन प्रदान करना

माइक्रोसॉफ्ट ग्राफ को कॉल करने वाली गतिविधियों को एक एक्सेस टोकन की आवश्यकता होती है। आप इसे दो तरीकों से प्रदान कर सकते हैं:

| विधि | फ़्लैग | उदाहरण |
|--------|------|---------|
| एक रॉ टोकन पास करें | `-ac, --access-token` | `-ac eyJ0eXAi...` |
| कैश्ड टोकन को नाम से लोड करें | `-l, --load-access-token` | `-l mytoken` |

जब `-l` का उपयोग किया जाता है, तो मिलान करने वाला `access_token` (और, जहां प्रासंगिक हो, `refresh_token` और `tenant`) `.azure_creds` स्टोर से पढ़ा जाता है।

### टोकन को फ़ाइल में सहेजना (`-s` / `-n`)

टोकन प्राप्त करने वाली कोई भी गतिविधि (`auth`, `auth-app`, `auth-interactive`, `phish-start`/`phish-capture`, `refresh`) `-s/--save` के साथ `-n/--name` जोड़कर उन्हें स्थानीय क्रेडेंशियल स्टोर (`.azure_creds`) में **स्वचालित रूप से संग्रहीत** कर सकती है:```bash
# Authenticate and save the resulting tokens under the name "victim1"
python3 AzureRedOps.py -a auth -u [email protected] -p 'P@ssw0rd!' -tid <tenant-guid> -s -n victim1
  • -s/--save ऑटो-सेव चालू करता है; इसके लिए -n/--name आवश्यक है — यदि -n गायब है तो टूल त्रुटि के साथ बाहर निकल जाता है।
  • -n/--name वह कुंजी है जिसके अंतर्गत टोकन संग्रहीत किया जाता है। आप बाद में इसे -l victim1 के साथ पुनः उपयोग कर सकते हैं, कच्चे JWT को चिपकाने के बजाय, इसे -a view -n victim1 से देख सकते हैं, या -a delete -n victim1 से हटा सकते हैं।
  • auth-interactive गतिविधि हमेशा ऑटो-सेव करती है और यदि -n प्रदान नहीं किया गया है तो वह आपसे इंटरैक्टिव रूप से एक नाम माँगेगी।

गतिविधि आउटपुट को फ़ाइल में सहेजना (-j)

अधिकांश गणना गतिविधियाँ (list-users, list-applications, list-principals, gather-all, raw-url) कच्चे API प्रतिक्रिया को फ़ाइल में लिखने के लिए -j/--json <filename> स्वीकार करती हैं, जो उसे प्रिंट करने के अतिरिक्त (या उसके बजाय) JSON फ़ाइल में सहेजता है:```bash

Dump every user to users.json

python3 AzureRedOps.py -a list-users -l victim1 -j users.json

root@kitploit:~
For `gather-all`, the supplied filename is used as a suffix and one file is written per Graph endpoint (e.g. `users-<name>`, `groups-<name>`, ...).

> सुझाव: `-j` संरचित JSON निर्यात को नियंत्रित करता है, जबकि `-re/--redirect-to-file` फ़ॉर्मेटेड कंसोल आउटपुट को `output.txt` में मिरर करता है। दोनों स्वतंत्र हैं।

### टेनेंट पहचानकर्ता

- `-t, --tenant` एक **डोमेन नाम** की अपेक्षा करता है (जैसे `contoso.com`) और इसका उपयोग `id` गतिविधि द्वारा किया जाता है।
- `-tid, --tenant-id` एक **टेनेंट GUID** या `common` की अपेक्षा करता है, जिसका उपयोग प्रमाणीकरण गतिविधियों द्वारा किया जाता है।

---

## कमांड-लाइन विकल्प

| छोटा | लंबा | डिफ़ॉल्ट | विवरण |
|-------|------|---------|-------------|
| `-a` | `--activity` | `id` | **(आवश्यक)** गतिविधि (देखें [गतिविधियाँ](#activities))। |
| `-ac` | `--access-token` | | Azure एक्सेस टोकन। |
| `-n` | `--name` | | टोकन सहेजने/लोड करने के लिए उपयोग किया जाने वाला नाम, या `register-app`/`new-group`/`invite` के लिए प्रदर्शन नाम। |
| `-t` | `--tenant` | | Azure टेनेंट **डोमेन** नाम (`id` द्वारा उपयोग किया जाता है)। |
| `-c` | `--devicecode` | | डिवाइस कोड (`phish-capture` द्वारा उपयोग किया जाता है)। |
| `-tid` | `--tenant-id` | | Azure टेनेंट **ID** (GUID) या `common`। |
| `-app` | `--appid` | `d3590ed6-52b3-4102-aeff-aad2292ab01c` | एप्लिकेशन (क्लाइंट) ID। |
| `-e` | `--endpoint` | `microsoftonline.com` | लॉगिन एंडपॉइंट डोमेन। |
| `-r` | `--refresh-token` | | प्रमाणीकरण रिफ्रेश टोकन। |
| `-as` | `--auto-start` | `True` | `phish-start` के बाद स्वचालित रूप से डिवाइस-कोड कैप्चर शुरू करें। |
| `-l` | `--load-access-token` | | `.azure_creds` से नाम के अनुसार कैश्ड टोकन लोड करें। |
| `-j` | `--json` | | गतिविधि आउटपुट को दिए गए JSON फ़ाइल में सहेजें। |
| `-fl` | `--filter` | | केवल उन विशेषताओं को प्रिंट करें जिनकी कुंजी इनमें से किसी एक से मेल खाती हो (अल्पविराम से अलग)। |
| `-u` | `--username` | | उपयोगकर्ता प्रिंसिपल नाम (ईमेल)। |
| `-p` | `--password` | | उपयोगकर्ता पासवर्ड। |
| `-s` | `--save` | `False` | प्राप्त टोकन को `.azure_creds` में ऑटो-सेव करें (**`-n` की आवश्यकता है**)। |
| `-cp` | `--check-privileges` | `False` | सफल स्प्रे लॉगिन के बाद, जाँचें कि क्या उपयोगकर्ता/ऐप्स को गणना किया जा सकता है। |
| `-uid` | `--uid` | | Azure उपयोगकर्ता ऑब्जेक्ट ID (`add-group` द्वारा उपयोग किया जाता है)। |
| `-headers` | `--headers` | | अतिरिक्त HTTP हेडर JSON के रूप में, उदा. `{"X-Foo": "bar"}`। |
| `-gid` | `--gid` | `62e90394-69f5-4237-91f9-056ad24d70a7` | निर्देशिका भूमिका/समूह ID (डिफ़ॉल्ट = **ग्लोबल एडमिनिस्ट्रेटर**)। |
| `-i` | `--id` | `False` | `interest` के लिए: केवल एप्लिकेशन ID प्रिंट करें। |
| `-ty` | `--type` | | `interest` के लिए: किसी विशिष्ट श्रेणी में फ़िल्टर करें। |
| `-fp` | `--filepath` | | अपलोड करने के लिए फ़ाइल (`push-file`) या स्प्रे करने के लिए कस्टम ऐप सूची। |
| `-v` | `--version` | `v2.0` | प्रमाणीकरण API संस्करण: `v0` या `v2.0`। |
| `-ua` | `--user-agent` | *(Chrome UA string)* | HTTP `User-Agent` को ओवरराइड करें। |
| `-au` | `--audience` | `https://graph.microsoft.com` | टोकन श्रोता/संसाधन। |
| `-sc` | `--scope` | `openid offline_access` | OAuth2 स्कोप। ग्राफ़ के लिए `https://graph.microsoft.com/.default`, स्प्रे के लिए `openid` का उपयोग करें। |
| `-url` | `--url` | | `raw-url`/`invite` के लिए लक्ष्य URL; `auth-interactive` के लिए अल्पविराम से अलग URL सूची। |
| `-beta` | `--beta` | `False` | `list-users`/`list-applications` के लिए Microsoft Graph **beta** एंडपॉइंट का उपयोग करें। |
| `-exp` | `--expand` | `False` | आउटपुट में नेस्टेड सूचियों/डिक्शनरी को मानव-पठनीय प्रारूप में विस्तारित करें। |
| `-k` | `--keep` | `False` | `auth-interactive` / `browser-sso` के बाद `session.har` फ़ाइल रखें। |
| `-cs` | `--client-secret` | | गोपनीय क्लाइंट सीक्रेट जो `obo` ऑन-बिहाफ-ऑफ़ अनुदान द्वारा उपयोग किया जाता है। |
| `-prt` | `--prt-cookie` | | PRT कुकी मान (`x-ms-RefreshTokenCredential`) जो `browser-sso` के लिए ब्राउज़र SSO को सीड करता है। |
| `-br` | `--browser` | `firefox` | ब्राउज़र फ़्लो के लिए Playwright ब्राउज़र इंजन (`auth-interactive`, `browser-sso`)। `firefox`, `chromium`, `webkit` में से एक। |
| `-aprt` | `--auto-prt` | `False` | `browser-sso` के लिए: रिफ्रेश टोकन से स्वचालित रूप से PRT कुकी जारी करें (डिवाइस रजिस्ट्रेशन → PRT → `x-ms-RefreshTokenCredential`) ताकि ब्राउज़र **पहले से प्रमाणित** खुले। `cryptography` और FOCI/ब्रोकर रिफ्रेश टोकन की आवश्यकता है। |
| `-d` | `--debug` | `False` | डीबग लॉगिंग सक्षम करें। |
| `-dd` | `--verbose-debug` | `False` | विस्तृत HTTP अनुरोध/प्रतिक्रिया लॉगिंग सक्षम करें। |
| `-re` | `--redirect-to-file` | `False` | सभी कंसोल आउटपुट को `output.txt` में मिरर करें। |

---

## गतिविधियाँ

नीचे, प्रत्येक गतिविधि अपने **आवश्यक** और *वैकल्पिक* आर्गुमेंट्स की सूची देती है।
"टोकन" का अर्थ है कि `-ac` या `-l` में से कोई एक आवश्यक है।

### टोकन प्रबंधन

| गतिविधि | आवश्यक | वैकल्पिक | विवरण |
|----------|----------|----------|-------------|
| `save` | `-ac`, `-n` | `-tid`, `-r` | एक एक्सेस (और वैकल्पिक रिफ्रेश) टोकन को `.azure_creds` में सहेजें। |
| `list-token` | — | — | सभी सहेजे गए टोकन के नाम सूचीबद्ध करें। |
| `view` | `-n` | — | सहेजे गए टोकन के JWT दावों को डिकोड और प्रदर्शित करें। |
| `delete` | `-n` | — | स्टोर से सहेजा गया टोकन हटाएं। |```bash
# Save a token under the name "mytoken"
python3 AzureRedOps.py -a save -n mytoken -ac eyJ0eXAi... -r 0.AReAB... -tid <tenant-guid>

# List, view, delete
python3 AzureRedOps.py -a list-token
python3 AzureRedOps.py -a view -n mytoken
python3 AzureRedOps.py -a delete -n mytoken

टेनेंट खोज और प्रमाणीकरण

Resolve a tenant ID from a domain

python3 AzureRedOps.py -a id -t contoso.com

Device-code phishing (auto-capture is on by default)

python3 AzureRedOps.py -a phish-start -tid common -app d3590ed6-52b3-4102-aeff-aad2292ab01c

Capture later with a previously issued device code

python3 AzureRedOps.py -a phish-capture -c -tid common

Username / password (ROPC)

python3 AzureRedOps.py -a auth -u [email protected] -p 'P@ssw0rd!' -tid

Interactive browser capture, saving tokens automatically

python3 AzureRedOps.py -a auth-interactive -url https://portal.azure.com -s -n harvested

Refresh a saved token

python3 AzureRedOps.py -a refresh -l mytoken -app d3590ed6-52b3-4102-aeff-aad2292ab01c

On-Behalf-Of: exchange an issued token for a Graph-scoped token

python3 AzureRedOps.py -a obo -l mytoken -tid -app -cs -au https://graph.microsoft.com

Convert an issued token into an Outlook-on-the-web session and open it in a browser

python3 AzureRedOps.py -a browser-sso -l mytoken -url outlook -prt

root@kitploit:~
#### प्रमाणीकरण प्रवाह कैसे काम करता है

AzureRedOps टोकन प्राप्त करने के कई अलग-अलग तरीकों को लागू करता है। अपने एंगेजमेंट से मेल खाने वाला तरीका चुनें; सभी परिणाम को स्वचालित रूप से सहेजने के लिए `-s/-n` का सम्मान करते हैं।

##### डिवाइस-कोड फिशिंग (`phish-start` / `phish-capture`)

OAuth 2.0 **डिवाइस प्राधिकरण अनुदान** इनपुट-सीमित उपकरणों के लिए डिज़ाइन किया गया है, जो इसे एक शक्तिशाली फिशिंग प्रिमिटिव बनाता है: आप एक प्रथम-पक्ष माइक्रोसॉफ्ट एप्लिकेशन की ओर से एक कोड का अनुरोध करते हैं, फिर एक लक्ष्य को सामाजिक इंजीनियरिंग के माध्यम से उस कोड को `https://microsoft.com/devicelogin` पर उनके खाते में साइन इन करते हुए दर्ज करने के लिए प्रेरित करते हैं। एक बार जब वे ऐसा करते हैं, तो टोकन **आपको** जारी किए जाते हैं।

- `phish-start` एक डिवाइस कोड का अनुरोध करता है और **उपयोगकर्ता कोड**, लॉगिन URL और कच्चा **डिवाइस कोड** प्रिंट करता है। क्योंकि `-as/--auto-start` डिफ़ॉल्ट रूप से `True` है, यह तुरंत टोकन के लिए पोलिंग शुरू कर देता है — इसलिए केवल `phish-start` चलाना और उपयोगकर्ता कोड लक्ष्य को सौंपना आमतौर पर पर्याप्त होता है।
- `phish-capture` मैनुअल समकक्ष है: इसे पहले प्राप्त डिवाइस कोड `-c/--devicecode` के साथ फीड करें और यह टोकन एंडपॉइंट को तब तक पोल करता है जब तक पीड़ित लॉगिन पूरा नहीं कर लेता (टूल प्राधिकरण लंबित रहने पर चुपचाप पुनः प्रयास करता है)।
- `-app/--appid` का उपयोग किसी विशिष्ट प्रथम-पक्ष क्लाइंट का प्रतिरूपण करने के लिए और `-tid/--tenant-id` का उपयोग किसी टेनेंट पर स्कोप करने के लिए करें (डिफ़ॉल्ट रूप से `common`)। सुझाव: स्कोप को `'https://graph.microsoft.com/.default offline_access openid'` पर सेट करें ताकि रिफ्रेश टोकन के साथ ग्राफ-रेडी टोकन प्राप्त हो सके।```bash
# Start a device-code session (auto-captures the token once the victim logs in)
python3 AzureRedOps.py -a phish-start -tid common -s -n phished

# Or capture against a code you generated separately
python3 AzureRedOps.py -a phish-capture -c <device-code> -tid common -s -n phished
तृतीय-पक्ष एप्लिकेशन सहमति (auth-app)

auth-app एक तृतीय-पक्ष (गैर-डिफ़ॉल्ट) एप्लिकेशन रजिस्ट्रेशन के विरुद्ध पूर्ण Authorization Code flow with PKCE करता है। यह टूल एक स्थानीय HTTPS listener (includes/Webserver.py, https://localhost:2342 पर) शुरू करता है जो OAuth रीडायरेक्ट URI के रूप में कार्य करता है, PKCE code_verifier/code_challenge जोड़ी उत्पन्न करता है, और आपके लिए ब्राउज़र में खोलने हेतु एक प्राधिकरण URL प्रिंट करता है। आपके सहमति देने के बाद, Azure प्राधिकरण कोड को वापस स्थानीय listener पर रीडायरेक्ट करता है, जिसे टूल तब टोकन के लिए विनिमय करता है।

यह वह प्रवाह है जिसका उपयोग तब करना चाहिए जब आप किसी एप्लिकेशन को नियंत्रित करते हैं (या पंजीकृत किया है) और वास्तविक ब्राउज़र सत्र के माध्यम से सहमति प्राप्त करना चाहते हैं — यह अवैध-सहमति शैली के परिदृश्यों या जब ROPC अवरुद्ध हो, के लिए उपयोगी है।

  • includes/web/cert.pem और includes/web/key.pem पर TLS प्रमाणपत्र/कुंजी जोड़ी की आवश्यकता होती है (इन्हें उत्पन्न करने के तरीके के लिए Notes देखें)।
  • इस प्रवाह के लिए डिफ़ॉल्ट क्लाइंट ID 8545b2fc-a69c-4851-9206-0f74a519fe5f है।```bash python3 AzureRedOps.py -a auth-app -tid -s -n consented
root@kitploit:~
##### इंटरैक्टिव ब्राउज़र प्रमाणीकरण (`auth-interactive`)

`auth-interactive` एक **वास्तविक ब्राउज़र को Playwright के माध्यम से** लॉन्च करता है (डिफ़ॉल्ट रूप से Firefox; चुनें
इंजन को `-br/--browser` के साथ) और ऑपरेटर को (या साझा सत्र पर एक लक्ष्य) एक इंटरैक्टिव लॉगिन पूरा करने देता है —
जिसमें MFA, Conditional Access, और फ़ेडरेटेड/SSO रीडायरेक्ट शामिल हैं जिन्हें स्क्रिप्टेड फ़्लो
संतुष्ट नहीं कर सकते।
संपूर्ण ब्राउज़र सत्र एक HAR फ़ाइल (`session.har`) में रिकॉर्ड किया जाता है; उपकरण
फिर उस कैप्चर को पार्स करता है, **प्रत्येक** एक्सेस/रिफ्रेश टोकन जोड़ी को निकालता है जो देखी गई है
`/oauth2/v2.0/token` एंडपॉइंट पर, प्रत्येक JWT को डीकोड करता है, और आपको चुनने देता है कि कौन सा (या कौन से)
सहेजना है।

- `-url/--url` लॉगिन पेज लोड होने के बाद नेविगेट करने के लिए पेज(पेजों) को सेट करता है। यह URL की एक
  **अल्पविराम से अलग की गई सूची** स्वीकार करता है (जैसे `https://portal.azure.com,https://outlook.office.com`)
  ताकि आप एक सत्र में कई संसाधनों के लिए टोकन एकत्र कर सकें। डिफ़ॉल्ट
  `https://portal.azure.com` है।
- यह गतिविधि **हमेशा ऑटो-सेव** करती है: हार्वेस्टिंग के बाद, यह पूछता है कि कौन से टोकन
  इंडेक्स(इंडेक्स) रखने हैं और उन्हें किस नाम से स्टोर करना है।
- `-k/--keep` जोड़ें ताकि `session.har` को ऑफ़लाइन विश्लेषण के लिए संरक्षित किया जा सके (डिफ़ॉल्ट
  रूप से इसे हटा दिया जाता है)।```bash
# Log in interactively and harvest tokens for two resources
python3 AzureRedOps.py -a auth-interactive -url https://portal.azure.com,https://outlook.office.com -k
On-Behalf-Of token exchange (obo)

obo OAuth 2.0 On-Behalf-Of प्रवाह (grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer) को लागू करता है। यह एक पहले से जारी एक्सेस टोकन को अभिकथन के रूप में लेता है और इसे एक बिल्कुल नए टोकन के लिए विनिमय करता है जो किसी भिन्न डाउनस्ट्रीम संसाधन के लिए स्कोप्ड होता है — बिना उपयोगकर्ता को पुनः प्रमाणित किए।

  • अभिकथन टोकन -ac/--access-token या -l/--load-access-token के माध्यम से कैश्ड टोकन के साथ प्रदान किया जाता है।
  • -app/--appid + -cs/--client-secret विनिमय करने वाले गोपनीय क्लाइंट की पहचान करते हैं। Entra ID आवश्यकता है कि यह क्लाइंट अभिकथन टोकन का श्रोता (aud) हो; बेमेल होने पर AADSTS500131/AADSTS50013 के साथ विफल होता है।
  • लक्ष्य संसाधन -au/--audience (डिफ़ॉल्ट https://graph.microsoft.com, <audience>/.default में परिवर्तित) या -sc/--scope के साथ पूर्ण स्कोप के साथ सेट किया जाता है।
  • परिणामी टोकन (और रिफ्रेश टोकन, जब लौटाया जाता है) मुद्रित होता है और -s/-n का सम्मान करता है।```bash

Exchange an issued token for a Microsoft Graph token on behalf of the user

python3 AzureRedOps.py -a obo -l mytoken -tid
-app -cs -au https://graph.microsoft.com -s -n obo-graph

root@kitploit:~
##### टोकन-से-ब्राउज़र एकल साइन-ऑन (`browser-sso`)

`browser-sso` **एक वास्तविक ब्राउज़र खोलता है जो पहले से उपयोगकर्ता के रूप में प्रमाणित है** — आप कुछ भी क्लिक नहीं करते और सीधे अंदर पहुँच जाते हैं, उदाहरण के लिए, **Outlook on the web**। यह "बस ब्राउज़र खोलें और एक मान्य सत्र प्राप्त करें" प्रवाह है। ब्राउज़र तीन तरीकों में से एक में अपना सत्र प्राप्त करता है, वरीयता के क्रम में:

**1. `-aprt/--auto-prt` — स्वचालित रूप से PRT कुकी बनाएं (अनुशंसित)।**
रिफ्रेश टोकन को टूल द्वारा पूरी तरह से **Primary Refresh Token (PRT)** और इसके ब्राउज़र कुकी में बदल दिया जाता है, फिर बीज दिया जाता है ताकि Entra का ESTS बिना मैन्युअल लॉगिन के SSO पूरा कर सके। श्रृंखला (`includes/PRT.py`, ROADtoken / roadtx / AADInternals प्रोटोकॉल) इस प्रकार है:

1. रिफ्रेश टोकन को **डिवाइस-पंजीकरण (DRS)** टोकन के लिए भुनाएं।
2. Azure AD के साथ **एक डिवाइस पंजीकृत करें** → डिवाइस प्रमाणपत्र + परिवहन कुंजी।
3. डिवाइस प्रमाणपत्र द्वारा हस्ताक्षरित रिफ्रेश टोकन के साथ **PRT + सत्र कुंजी** का अनुरोध करें।
4. **`x-ms-RefreshTokenCredential` कुकी व्युत्पन्न करें** (KDFv2: `SHA256(ctx‖decoded-payload-bytes)` पर SP800-108 KDF → HS256-हस्ताक्षरित JWT; KDFv1 → `AADSTS5000611`, गलत-बाइट्स → `AADSTS50058`) और इसे एक ताज़ा ब्राउज़र संदर्भ में बीज दें।

कुकी को `SameSite=None` के साथ बीज दिया जाता है और **शीर्ष-स्तरीय ESTS `/authorize` वार्म-अप** (Office `landingv2` क्लाइंट) के माध्यम से खपत की जाती है ताकि `ESTSAUTH` सत्र कुकी प्रथम-पक्ष के रूप में बनाई जाए — जिसके बाद लक्ष्य ऐप पहले से ही साइन इन करके खुलता है। कुकी को नेविगेट करने से ठीक पहले एक ताज़ा नॉन्स के साथ व्युत्पन्न किया जाता है और एक बार पुनः प्रयास किया जाता है; यदि SSO अभी भी पूरा नहीं हो सकता है तो टूल `prompt=none` की जाँच करता है और सटीक `AADSTS` कारण प्रिंट करता है (जैसे, अनुपालन/प्रबंधित डिवाइस की आवश्यकता वाली सशर्त पहुंच, या MFA — ताज़ा पंजीकृत डिवाइस के साथ इनमें से कोई भी बाइपास करने योग्य नहीं है)।

PRT, सत्र कुंजी और कुकी मुद्रित की जाती हैं (एक तैयार-पेस्ट `-prt "<value>"` संकेत के साथ) ताकि आप श्रृंखला को फिर से चलाए बिना उन्हें बाद में पुन: उपयोग कर सकें।

> **`-aprt` के लिए आवश्यकताएँ और ऑप्सेक:**
> - **`cryptography`** पैकेज की आवश्यकता है (`pip install cryptography`; यह `requirements.txt` में है)।
> - रिफ्रेश टोकन को **FOCI / ब्रोकर क्लाइंट** से संबंधित होना चाहिए — जैसे, **Microsoft Authentication Broker** के डिवाइस-कोड फ़िशिंग द्वारा कैप्चर किया गया एक (`29d9ed98-a469-4536-ade2-f981bc1d605e`), जो वास्तव में SharePoint/OneDrive डिवाइस-कोड लालच देता है। डिफ़ॉल्ट `-app` (Microsoft Office FOCI क्लाइंट) भी काम करता है।
> - **डिवाइस पंजीकरण टेनेंट में एक डिवाइस ऑब्जेक्ट लिखता है** — यह मौन नहीं है और एक कलाकृति छोड़ता है (और उपयोगकर्ता को डिवाइस में शामिल होने/पंजीकरण करने की अनुमति की आवश्यकता होती है)।

**2. `-prt/--prt-cookie` — एक PRT कुकी बीज दें जो आपके पास पहले से है।**
यदि आपके पास पहले से `x-ms-RefreshTokenCredential` मान है (पिछले `-aprt` रन से, या `ROADtoken`/`browsercore` या `Mimikatz` के माध्यम से एक समझौता किए गए होस्ट से), तो इसे सीधे पास करें और मिंटिंग श्रृंखला को छोड़ें।

**3. कोई नहीं — टोकन को कन्वर्ट करें और मैन्युअल रूप से लॉगिन करें (फॉलबैक)।**
PRT कुकी के बिना, रिफ्रेश टोकन को संसाधन-स्कोप्ड एक्सेस/रिफ्रेश टोकन के लिए भुनाया जाता है (`-s/-n` के साथ मुद्रित और सहेजा गया), और लक्ष्य पर ब्राउज़र खोला जाता है ताकि आप लॉगिन को हाथ से पूरा कर सकें।

**PRT / सत्र-कुकी हार्वेस्टिंग।** जब ब्राउज़र सत्र समाप्त होता है (ऑटो-क्लोज़ टाइमआउट या आप विंडो बंद करते हैं), `browser-sso` लाइव ब्राउज़र संदर्भ पढ़ता है और **जारी किए गए प्रत्येक पुन: प्रयोज्य SSO कुकी को प्रिंट करता है** — PRT कुकी (`x-ms-RefreshTokenCredential`) और ESTS सत्र कुकी (`ESTSAUTH`, `ESTSAUTHPERSISTENT`, ...) — प्रत्येक एक तैयार-पेस्ट `-prt` संकेत के साथ ताकि आप उन्हें अगली बार फिर से चला सकें। सत्र चालू रहने पर कुकीज़ का पोल किया जाता है, ताकि विंडो जल्दी बंद करने पर भी मान कैप्चर हो जाए। वही हार्वेस्टिंग `auth-interactive` के अंत में चलती है।

- `-url/--url` लक्ष्य चुनता है। एक अनुकूल प्रीसेट का उपयोग करें — `outlook`, `office`, `teams`, `sharepoint`, `onedrive`, `portal`, `graph` — या एक या अधिक कच्चे `https://` URL पास करें (अल्पविराम से अलग)। डिफ़ॉल्ट `outlook` है।
- `-r/--refresh-token` + `-tid` (या कैश्ड `-l`) रिफ्रेश टोकन प्रदान करता है। `-app/--appid` डिफ़ॉल्ट Microsoft Office FOCI क्लाइंट पर सेट होता है।
- `-br/--browser` Playwright इंजन चुनता है (डिफ़ॉल्ट रूप से Firefox)।
- `-k/--keep` ब्राउज़र सत्र की `session.har` रिकॉर्डिंग को संरक्षित करता है।```bash
# BEST: auto-mint a PRT from a device-code-phished (broker) token and drop straight
# into an authenticated Outlook on the web — no manual login.
python3 AzureRedOps.py -a browser-sso -l phished -url outlook -aprt

# Seed a PRT cookie you already have
python3 AzureRedOps.py -a browser-sso -l mytoken -url outlook -prt <x-ms-RefreshTokenCredential>

# Target Teams from a raw refresh token, auto-mint the PRT, keep the session recording
python3 AzureRedOps.py -a browser-sso -r 0.AReAB... -tid <tenant-guid> -url teams -aprt -k

माइक्रोसॉफ्ट ग्राफ संचालन

Who am I?

python3 AzureRedOps.py -a self -l mytoken

Enumerate users (beta endpoint, save to JSON, only show some fields)

python3 AzureRedOps.py -a list-users -l mytoken -beta -j users.json -fl displayName,userPrincipalName

Register an application

python3 AzureRedOps.py -a register-app -n EvilApp -l mytoken

Assign Global Admin to a user

python3 AzureRedOps.py -a add-group -uid -l mytoken

Upload a file to OneDrive

python3 AzureRedOps.py -a push-file -fp ./payload.docx -n payload.docx -l mytoken

Query an arbitrary Graph URL

python3 AzureRedOps.py -a raw-url -url "https://graph.microsoft.com/beta/users" -l mytoken

Invite an external user

python3 AzureRedOps.py -a invite -n [email protected] -url https://example.com/invite -l mytoken

Hunt for exploitable public apps

python3 AzureRedOps.py -a magic-app -l mytoken

root@kitploit:~
### पासवर्ड स्प्रेइंग

| Activity | Required | Optional | Description |
|----------|----------|----------|-------------|
| `spray` | `-u`, `-p`, `-tid` | `-fp`, `-cp` | ज्ञात फर्स्ट-पार्टी ऐप आईडी (v0 + v2.0 APIs) के विरुद्ध क्रेडेंशियल्स स्प्रे करें। |
| `spray-refresh` | `-v`, and (`-l`) **or** (`-r` + `-tid`) | `-fp`, `-cp` | कई ऐप आईडी पर एक रिफ्रेश टोकन को पुनः चलाएं। |

डिफ़ॉल्ट रूप से दोनों गतिविधियाँ `includes/auth_apps.json` को ऐप स्रोत के रूप में उपयोग करती हैं; `-fp` से ओवरराइड करें। `-cp` जोड़ें यह जांचने के लिए कि क्या प्रत्येक सफल लॉगिन उपयोगकर्ताओं/ऐप्स को गणना कर सकता है।```bash
# Spray a single credential across first-party apps
python3 AzureRedOps.py -a spray -u [email protected] -p 'P@ssw0rd!' -tid <tenant-guid> -cp

# Cross-app refresh spraying from a saved token
python3 AzureRedOps.py -a spray-refresh -l mytoken -v v2.0

बुद्धिमत्ता और खोज

root@kitploit:~
---

## आउटपुट और उत्पन्न फ़ाइलें

| फ़ाइल | किसके द्वारा बनाई गई | विवरण |
|------|-----------|-------------|
| `.azure_creds` | टोकन सहेजने वाली गतिविधियाँ | एक्सेस/रिफ्रेश टोकन का स्थानीय JSON कैश, नाम से कुंजीयन। |
| `output.txt` | `-re` फ़्लैग | सभी कंसोल आउटपुट का समय-मुद्रांकित दर्पण। |
| `session.har` | `auth-interactive` / `browser-sso` | ब्राउज़र सत्र रिकॉर्डिंग (जब तक `-k` सेट न हो, हटा दी जाती है)। |
| `<name>.json` | `-j` फ़्लैग / `gather-all` | सहेजे गए API प्रतिक्रियाएँ। |

### बंडल डेटा फ़ाइलें

| फ़ाइल | विवरण |
|------|-------------|
| `includes/auth_apps.json` | स्प्रेइंग और `interest` सूचियों के लिए उपयोग किए जाने वाले लक्ष्य अनुप्रयोग आईडी। |
| `includes/apps.json` | `knownids` के लिए ज्ञात Microsoft ऐप आईडी और मेटाडेटा। |
| `includes/Webserver.py` | `auth-app` के लिए PKCE रीडायरेक्ट को लागू करने वाला स्थानीय HTTPS लिसनर। |
| `includes/PRT.py` | PRT-मिंटिंग श्रृंखला (डिवाइस पंजीकरण → PRT → `x-ms-RefreshTokenCredential` कुकी) जिसका उपयोग `browser-sso -aprt` द्वारा किया जाता है। |
| `includes/web/cert.pem`, `includes/web/key.pem` | स्थानीय लिसनर के लिए TLS सामग्री। |

---

## नोट्स और सुझाव

- **डिफ़ॉल्ट ऐप आईडी** (`d3590ed6-52b3-4102-aeff-aad2292ab01c`) Microsoft Office का प्रथम-पक्ष क्लाइंट है, जो अधिकांश प्रवाहों के लिए काम करता है। कुछ गतिविधियों द्वारा मुद्रित संकेत व्यापक पहुंच के लिए टोकन को **Microsoft Azure CLI** ऐप (`04b07795-8ddb-461a-bbee-02f9e1bf7b46`) तक विस्तारित करने का सुझाव देते हैं।
- **स्कोप मार्गदर्शन:** पासवर्ड स्प्रेइंग के लिए `-sc openid` का उपयोग करें और Graph संचालन के लिए `-sc 'https://graph.microsoft.com/.default'` का उपयोग करें।
- **`--beta`** `list-users` / `list-applications` को Graph बीटा एंडपॉइंट पर स्विच करता है, जो अतिरिक्त जानकारी (जैसे ऑन-प्रिम सिंक विशेषताएँ) प्रकट कर सकता है।
- **`auth-app` TLS:** स्थानीय PKCE लिसनर को `includes/web/cert.pem` और `includes/web/key.pem` पर एक प्रमाणपत्र/कुंजी जोड़ी की आवश्यकता होती है। यदि वे गायब हैं, तो एक स्व-हस्ताक्षरित जोड़ी उत्पन्न करें, उदाहरण के लिए:  ```bash
  openssl req -x509 -newkey rsa:2048 -nodes \
    -keyout includes/web/key.pem -out includes/web/cert.pem -days 365 -subj "/CN=localhost"
  • डिबगिंग: -d उच्च-स्तरीय डीबग जानकारी प्रिंट करता है; -dd पूर्ण HTTP अनुरोध और प्रतिक्रिया (हेडर + बॉडी) डंप करता है — यह विफल टोकेन एक्सचेंजों के निदान के लिए उपयोगी है।
  • ब्राउज़र इंजन (-br/--browser). ब्राउज़र फ़्लो (auth-interactive, browser-sso) एक headed Playwright ब्राउज़र चलाते हैं। इंजन डिफ़ॉल्ट रूप से firefox होता है (WSLg के तहत सबसे विश्वसनीय headed इंजन); -br chromium या -br webkit के साथ स्विच करें। एक बार चुने गए इंजन को python -m playwright install <engine> से इंस्टॉल करें।
  • WSL पर Playwright — खाली विंडो / पूरा मशीन फ़्रीज़. WSL/WSLg के तहत एक headed ब्राउज़र खाली खुल सकता है और कभी पेंट नहीं करता जबकि पूरा होस्ट लॉक हो जाता है। मूल कारण: WSLg एक वर्चुअलाइज़्ड GPU (/dev/dxg, d3d12 Mesa ड्राइवर द्वारा संचालित) को उजागर करता है जिसे ब्राउज़र का GPU/कम्पोज़िटर प्रक्रिया उपयोग करने का प्रयास करती है, जबकि WSL VM का डिफ़ॉल्ट /dev/shm बहुत छोटा होता है (अक्सर 64 MB)। दोनों मिलकर — GPU प्रक्रिया एक ऐसे उपकरण पर घूमती है जिसे वह चला नहीं सकती और शेयर्ड-मेमोरी कम्पोज़िटर को समाप्त कर देता है — इसलिए कुछ भी रेंडर नहीं होता और VM तब तक फूलता रहता है जब तक Windows होस्ट थ्रैश नहीं करता। एक द्वितीयक योगदानकर्ता था : Microsoft लॉगिन पेज लॉन्ग-पोल करता है, इसलिए कभी फायर नहीं होता और नेविगेशन एक खाली पेज पर टाइमआउट तक ब्लॉक रहता है।

क्रेडिट्स

Mr.Un1k0d3r द्वारा बनाया गया — TrueCyber Inc.

टूल डाउनलोड करें
  • टोकन-टू-ब्राउज़र SSO (browser-sso) — एक वास्तविक ब्राउज़र पहले से उपयोगकर्ता के रूप में प्रमाणित सीधे लक्ष्य वेब ऐप (Outlook on the web, Teams, SharePoint, Azure पोर्टल, ...) में खोलें। -aprt/--auto-prt के साथ यह एक रिफ़्रेश टोकन से प्राथमिक रिफ़्रेश टोकन (PRT) कुकी को स्वचालित रूप से मिंट करता है (डिवाइस पंजीकरण → PRT → x-ms-RefreshTokenCredential), ताकि एक नया ब्राउज़र बिना मैन्युअल लॉगिन के सिंगल साइन-ऑन पूरा करे।
  • नोट्स
    गतिविधिआवश्यकवैकल्पिकविवरण
    id-t—किसी दिए गए ईमेल डोमेन के लिए टेनेंट आईडी का पता लगाएं।
    phish-start—-app, -tid, -as, -s, -nडिवाइस-कोड फ्लो शुरू करें; उपयोगकर्ता कोड प्रिंट करता है और (डिफ़ॉल्ट रूप से) स्वचालित रूप से कैप्चर करता है।
    phish-capture-c-app, -tid, -s, -nपहले जारी किए गए डिवाइस कोड का उपयोग करके टोकन के लिए पोल करें।
    auth-u, -p, -tid, -app, -v-s, -nउपयोगकर्ता नाम/पासवर्ड (ROPC) के साथ प्रमाणित करें।
    auth-app-tid-s, -nस्थानीय HTTPS लिसनर के माध्यम से प्राधिकरण-कोड + PKCE फ्लो।
    auth-interactive—-url, -k, -nएक ब्राउज़र (Playwright) खोलें, उपयोगकर्ता को लॉग इन करने दें, और सत्र HAR से टोकन निकालें। हमेशा स्वचालित रूप से सहेजता है।
    refresh-v, -app, और (-l) या (-r + -tid)-s, -nएक रिफ्रेश टोकन को एक नए एक्सेस टोकन के लिए विनिमय करें।
    obo-tid, -app, और (-ac) या (-l)-cs, -au, -sc, -s, -nऑन-बिहाफ-ऑफ: एक जारी एक्सेस टोकन को किसी अन्य संसाधन पर लक्षित टोकन के लिए विनिमय करें।
    browser-sso-app, और (-l) या (-r + -tid)-aprt, -url, -prt, -v, -k, -s, -nउपयोगकर्ता के रूप में पहले से प्रमाणित ब्राउज़र खोलें। रिफ्रेश टोकन से स्वचालित रूप से PRT कुकी बनाने के लिए -aprt जोड़ें, -prt के साथ तैयार कुकी का बीजारोपण करें, या टोकन रूपांतरण + मैनुअल लॉगिन पर वापस आ जाएं।
    गतिविधिआवश्यकवैकल्पिकविवरण
    selfToken—वर्तमान उपयोगकर्ता की प्रोफ़ाइल प्रदर्शित करें (/me)।
    emailToken, -fl—साइन-इन उपयोगकर्ता के मेलबॉक्स में एक कीवर्ड खोजें।
    permissionToken—टेनेंट प्राधिकरण नीति दिखाएं (बीटा)।
    list-usersToken-j, -beta, -fl, -expसभी उपयोगकर्ताओं की गणना करें।
    list-applicationsToken-j, -beta, -fl, -expसभी अनुप्रयोगों की गणना करें।
    list-principalsToken-j, -fl, -expसभी सेवा प्रिंसिपलों की गणना करें।
    register-appToken, -n—एक नया अनुप्रयोग पंजीकृत करें (1-वर्षीय क्लाइंट सीक्रेट के साथ)।
    new-groupToken, -n—एक नया सुरक्षा समूह बनाएं।
    add-groupToken, -uid-gidएक प्रिंसिपल को निर्देशिका भूमिका असाइन करें (डिफ़ॉल्ट भूमिका = ग्लोबल एडमिन)।
    push-fileToken, -fp, -n—उपयोगकर्ता के वनड्राइव पर एक स्थानीय फ़ाइल अपलोड करें।
    gather-allToken-jउपयोगकर्ताओं, समूहों, एप्लिकेशन, एसपी, भूमिकाओं, नीतियों और अनुदानों का बल्क-संग्रह करें।
    raw-urlToken, -url-j, -fl, -expकिसी भी ग्राफ/आरईएसटी यूआरएल पर रॉ GET जारी करें (@odata.nextLink पेजिंग को संभालता है)।
    inviteToken, -n-urlएक बाहरी (अतिथि) उपयोगकर्ता को आमंत्रित करें। -n आमंत्रित व्यक्ति का ईमेल है।
    magic-appToken—AllPrincipals सहमति, appRoleAssignmentRequired=false, और सार्वजनिक रीडायरेक्ट यूआरआई वाले एप्लिकेशन खोजें।
    गतिविधिआवश्यकवैकल्पिकविवरण
    knownids—-fl, -expज्ञात Microsoft एप्लिकेशन आईडी सूचीबद्ध करें (includes/apps.json).
    list-interest——includes/auth_apps.json में परिभाषित ऐप श्रेणियों को सूचीबद्ध करें।
    interest—-i, -tyदिलचस्प ऐप आईडी सूचीबद्ध करें; -i केवल आईडी प्रिंट करता है, -ty श्रेणी के अनुसार फ़िल्टर करता है।
    python3 AzureRedOps.py -a knownids
    python3 AzureRedOps.py -a list-interest
    python3 AzureRedOps.py -a interest -ty all_users
    python3 AzureRedOps.py -a interest -i # IDs only
    /dev/shm
    page.goto(..., wait_until="networkidle")
    networkidle
    • टूल में ठीक किया गया: AzureRedOps अब स्वचालित रूप से WSL का पता लगाता है और आपके द्वारा उपयोग किए जाने वाले किसी भी इंजन के लिए हार्डवेयर एक्सीलरेशन को अक्षम करता है — Chromium को --no-sandbox --disable-gpu --disable-dev-shm-usage मिलता है, Firefox को gfx.webrender.force-disabled / layers.acceleration.disabled मिलता है — CPU (सॉफ़्टवेयर) रेंडरिंग पर वापस आ जाता है ताकि पेज फिर भी रेंडर हो और पूरी तरह से इंटरैक्टिव हो। अब प्रत्येक नेविगेशन networkidle के बजाय domcontentloaded की प्रतीक्षा करता है। आपको बस एक काम करता हुआ ब्राउज़र देखना चाहिए।
    • यदि आप अभी भी समस्याओं का सामना करते हैं, तो /dev/shm बढ़ाएँ (sudo mount -o remount,size=1g /dev/shm), सुनिश्चित करें कि आप WSL 2 with WSLg पर हैं (wsl --update; echo $DISPLAY खाली नहीं होना चाहिए), और पुष्टि करें कि ब्राउज़र रनटाइम venv में स्थापित है (python -m playwright install firefox और python -m playwright install-deps)।