عالی بود آقا لذت بردم
(تایمش زیاده ولی واقعا صحبت هاشون عالی بود)
https://youtu.be/msjLfaRy1ks?si=l_G7oezLE1EXC1PC
(تایمش زیاده ولی واقعا صحبت هاشون عالی بود)
https://youtu.be/msjLfaRy1ks?si=l_G7oezLE1EXC1PC
YouTube
ملی شدن صنعت نفت ایران و جدال مصدق با پهلوی | گفتگوی فریدون مجلسی و محمد توسلی
فریدون مجلسی: مصدق در ماجرای ملی شدن صنعت نفت بهجای دفاع از حقوق ملی، باید منافع ملی را لحاظ میکرد. آنها به غرامتی که باید در قبال انگلیس پرداخت کنند آگاه بودند. بر همین اساس بود که در سال ۱۳۲۳ وقتی نماینده قوچان پیشنهاد ملی شدن نفت را داد، شخص مصدق با…
👍2
Forwarded from Linuxor ?
ابزار Watt Admin هم جالبه باهاش میتونین سرویس های Node.js رو گرافیکی مانیتور کنید
blog.platformatic.dev/introducing-watt-admin
@Linuxor
blog.platformatic.dev/introducing-watt-admin
@Linuxor
/dev/null
XSS : ( cross-site scripting ) یه آسیب پذیری امنیتی وب هس که ما یه کد script دلخواه تویه یه وب سایت inject کنیم . کدی که inject میکنیم رویه browser کاربر اجرا میشه . حالا به دو صورت تقسیم میشه : 1- Normal XSS 2- DOM XSS تویه Normal xss به خاطر render…
امروز گفتم notebooklm رو امتحان کنم
یه پادکست برام ساخت
خیلی خفننن شد
یه پادکست برام ساخت
خیلی خفننن شد
👍3
Forwarded from APPSeX
ProjectDiscovery
Hacking Apple - SQL Injection to Remote Code Execution — ProjectDiscovery Blog
Introduction
In our last blog post, we delved into the inner workings of Lucee and took a look at the source code of Masa/Mura CMS, and the vastness of the potential attack surface struck us. It became evident that investing time in understanding the code…
In our last blog post, we delved into the inner workings of Lucee and took a look at the source code of Masa/Mura CMS, and the vastness of the potential attack surface struck us. It became evident that investing time in understanding the code…
Forwarded from Linuxor ?
با کلاینت beekeeper studio میتونید دیتابیس های خودتون رو مدیریت کنید، اکثر دیتابیس هارو ساپورت میکنه توی ورژن های بعدی هم قراره Redis و Snowflake رو ساپورت کنه :
github.com/beekeeper-studio/beekeeper-studio
@Linuxor
github.com/beekeeper-studio/beekeeper-studio
@Linuxor
Forwarded from Hack Hive
🎯 کرک سیکرت توکنهای JWT با استفاده از hashcat
🔐 توکن JWT یا JSON Web Token یک استاندارد رایج برای انتقال اطلاعات بین کلاینت و سرور به صورت امن و رمزگذاری شده است.
یک توکن JWT از سه بخش تشکیل میشود:
امنیت این توکن به کلید مخفیای (Secret) که برای تولید امضا استفاده میشود وابسته است و در صورتی که سیکرت استفاده شده ضعیف باشد به راحتی توسط ابزارهایی مانند hashcat میتوان آن را کرک کرد.
🔓 hashcat ابزاری برای کرک کردن و بازیابی پسورد (Password Recovery) میباشد. این ابزار امکان حملات مختلف نظیر بروت فورس و دیکشنری را فراهم کرده و همچنین امکان تسریع این پروسه با GPU نیز وجود دارد. این ابزار به دلیل توانایی شکستن انواع الگوریتمها مانند bcrypt، SHA1 و MD5 به یکی ابزارهای محبوب برای کارشناسان امنیت تبدیل شده است. همچنین قابلیت تنظیم پروفایلهای مختلف برای سطوح مختلف پردازشی این امکان را فراهم میکند تا بتوان بین عملکرد و مصرف منابع تعادل ایجاد کرد.
در JWT عمدتا از الگوریتم HS256 برای رمزنگاری استفاده میشود:
این یک نمونه از سربرگ (Header) استفاده شده برای یک توکن JWT میباشد.
در بخش پیلود نیز مقادیر مورد نیاز درج میشود:
در نهایت توکن تولید شده با مقادیر بالا به شکل زیر است:
🔑 نحوه شکستن توکن با hashcat
به دو روش امکان شکستن وجود دارد:
1- بروت فورس مستقیم
2- با استفاده از wordlist یا دیکشنری
در روش اول اگر الگوی استفاده شده برای سیکرت مشخص باشد و صرفا نیاز به بررسی حالتهای مختلف وجود داشته باشد میتوان از کامند زیر استفاده کرد:
در این حالت <jwt> به مسیر فایل دارای توکن اشاره دارد. d? به معنای این است که کاراکتر ست استفاده شده از اعداد باشد و در نهایت hashcat تمام حالتهای متشکل از سه رقم را بررسی میکند.
- پارامتر m- نوع الگوریتم جهت کرک را مشخص میکند که در hashcat از کد 16500 برای JWT استفاده میشود.
- پارامتر a- نیز برای تعیین نوع حمله استفاده میشود که در اینجا عدد 3 به منظور بروت فورس استفاده میشود.
کاراکتر ستها و تعداد آن نیز قابل تنظیم است.
برای مثال اگر بدانیم که سیکرت به ترتیب از دو کاراکتر بزرگ و 3 کاراکتر کوچک و 4 رقم استفاده میکند پارامتر hashcat به این شکل تعریف میشود:
کاراکتر ستهای قابل استفاده در hashcat به شرح زیر است:
در روش دوم قابلیت استفاده از دیکشنری یا وردلیست وجود دارد که برای JWT از این وردلیست میتوانید استفاده کنید:
https://github.com/wallarm/jwt-secrets/blob/master/jwt.secrets.list
برای این نوع حمله:
در این حالت پارامتر a- به میزان 0 تغییر پیدا میکند.
همچنین <wordlist> به مسیر فایل دیکشنری اشاره دارد.
🔐 توکن JWT یا JSON Web Token یک استاندارد رایج برای انتقال اطلاعات بین کلاینت و سرور به صورت امن و رمزگذاری شده است.
یک توکن JWT از سه بخش تشکیل میشود:
<header>.<payload>.<signature>
امنیت این توکن به کلید مخفیای (Secret) که برای تولید امضا استفاده میشود وابسته است و در صورتی که سیکرت استفاده شده ضعیف باشد به راحتی توسط ابزارهایی مانند hashcat میتوان آن را کرک کرد.
🔓 hashcat ابزاری برای کرک کردن و بازیابی پسورد (Password Recovery) میباشد. این ابزار امکان حملات مختلف نظیر بروت فورس و دیکشنری را فراهم کرده و همچنین امکان تسریع این پروسه با GPU نیز وجود دارد. این ابزار به دلیل توانایی شکستن انواع الگوریتمها مانند bcrypt، SHA1 و MD5 به یکی ابزارهای محبوب برای کارشناسان امنیت تبدیل شده است. همچنین قابلیت تنظیم پروفایلهای مختلف برای سطوح مختلف پردازشی این امکان را فراهم میکند تا بتوان بین عملکرد و مصرف منابع تعادل ایجاد کرد.
در JWT عمدتا از الگوریتم HS256 برای رمزنگاری استفاده میشود:
{"alg": "HS256", "typ": "JWT"}این یک نمونه از سربرگ (Header) استفاده شده برای یک توکن JWT میباشد.
در بخش پیلود نیز مقادیر مورد نیاز درج میشود:
{"user": "admin", "name": "John Doe", "isAdmin": True}در نهایت توکن تولید شده با مقادیر بالا به شکل زیر است:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiYWRtaW4iLCJuYW1lIjoiSm9obiBEb2UiLCJpc0FkbWluIjp0cnVlfQ.2GIQULwOog_vwCsOjmeVXsRH03AW6E2BpcwOGXiaRO8
🔑 نحوه شکستن توکن با hashcat
به دو روش امکان شکستن وجود دارد:
1- بروت فورس مستقیم
2- با استفاده از wordlist یا دیکشنری
در روش اول اگر الگوی استفاده شده برای سیکرت مشخص باشد و صرفا نیاز به بررسی حالتهای مختلف وجود داشته باشد میتوان از کامند زیر استفاده کرد:
hashcat -m 16500 -a 3 <jwt> ?d?d?d
در این حالت <jwt> به مسیر فایل دارای توکن اشاره دارد. d? به معنای این است که کاراکتر ست استفاده شده از اعداد باشد و در نهایت hashcat تمام حالتهای متشکل از سه رقم را بررسی میکند.
- پارامتر m- نوع الگوریتم جهت کرک را مشخص میکند که در hashcat از کد 16500 برای JWT استفاده میشود.
- پارامتر a- نیز برای تعیین نوع حمله استفاده میشود که در اینجا عدد 3 به منظور بروت فورس استفاده میشود.
کاراکتر ستها و تعداد آن نیز قابل تنظیم است.
برای مثال اگر بدانیم که سیکرت به ترتیب از دو کاراکتر بزرگ و 3 کاراکتر کوچک و 4 رقم استفاده میکند پارامتر hashcat به این شکل تعریف میشود:
hashcat -m 16500 -a 3 <jwt> ?u?u?l?l?l?d?d?d?
کاراکتر ستهای قابل استفاده در hashcat به شرح زیر است:
l | abcdefghijklmnopqrstuvwxyz [a-z]
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ [A-Z]
d | 0123456789 [0-9]
h | 0123456789abcdef [0-9a-f]
H | 0123456789ABCDEF [0-9A-F]
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
a | ?l?u?d?s
b | 0x00 - 0xff
در روش دوم قابلیت استفاده از دیکشنری یا وردلیست وجود دارد که برای JWT از این وردلیست میتوانید استفاده کنید:
https://github.com/wallarm/jwt-secrets/blob/master/jwt.secrets.list
برای این نوع حمله:
hashcat -m 16500 -a 0 <jwt> <wordlist>
در این حالت پارامتر a- به میزان 0 تغییر پیدا میکند.
همچنین <wordlist> به مسیر فایل دیکشنری اشاره دارد.
👍6❤1
Forwarded from VPN CLUB
13ماه استفاده رایگان از google AI Pro
دسترسی به ابزارهای پیشرفته Google AI (مثل Gemini Advanced).
امکان اشتراکگذاری فضای ذخیرهسازی با اعضای خانواده.
فضای ذخیرهسازی ۲ ترابایت (2 TB)
در سرویسهای Google مثل Google Drive، Gmail، و Google Photos.
فعالسازی پرمیوم google one
فقط با آی پی آمریکا باید وارد بشید
وارد لینک شدید روی Get student offer بزنید
http://one.google.com/join/ai-student
دسترسی به ابزارهای پیشرفته Google AI (مثل Gemini Advanced).
امکان اشتراکگذاری فضای ذخیرهسازی با اعضای خانواده.
فضای ذخیرهسازی ۲ ترابایت (2 TB)
در سرویسهای Google مثل Google Drive، Gmail، و Google Photos.
فعالسازی پرمیوم google one
فقط با آی پی آمریکا باید وارد بشید
وارد لینک شدید روی Get student offer بزنید
http://one.google.com/join/ai-student
👍5
/dev/null
GIF
داشتم درباره Channel Layer ها تویه Django میخوندم دیدم بحث جالبیه
Channel Layer
در Django Channels یک لایه انتزاعی (abstraction layer) هس که برای مدیریت ارتباط بین مصرفکنندگان (Consumers) در یک اپلیکیشن Django استفاده میشه. این لایه بهتون امکان میده پیامها رو بین بخشهای مختلف برنامهتون (مثل سرورهای مختلف یا پروسههای مختلف) ارسال و دریافت کنین. در واقع، Channel Layer مثل یه message broker عمل میکنه که پیامها رو به صورت ناهمگام (asynchronous) مدیریت میکنه.
حالا اصلا چرا بهش نیاز داریم ؟
در Django Channels برای پشتیبانی از قابلیتهایی مثل WebSocket، چت real-time، اعلانها و هر چیزی که نیاز به ارتباط ناهمگام داره، طراحی شده. اما چون Django بهصورت پیشفرض برای درخواستهای همگام (synchronous HTTP) ساخته شده، Channel Layer بهعنوان مثلا یه پل ارتباطی اضافه شده تا
پیامها رو بین چندین instance از اپلیکیشن پخش کنه یا چند تا سرور داشته باشیم که بتونن با هم هماهنگ کار کنن یا ارسال پیام به گروه ها و ...
حالا خود Channel Layer سه تا جزء داره :
Channels:
کانالها مثل یه لوله ارتباطی هستن که پیامها از طریق اونها جابهجا میشن. هر کانال یه اسم منحصربهفرد داره (مثل chat_room1).
Groups:
گروهها برای مدیریت چندین کانال بهصورت همزمان استفاده میشن. مثلاً تو یه اپلیکیشن چت، میتونید یه گروه برای یه اتاق چت بسازید و پیامها رو به همه اعضای اون گروه بفرستید.
Backend:
Channel Layer
به یه سیستم بکاند (مثل Redis یا In-Memory) نیاز داره تا پیامها رو ذخیره و مدیریت کنه. این بکاند تعیین میکنه که پیامها چطور ذخیره و منتقل میشن.
((طبیعتا In-Memory واسه تسته فقط و واسه محیط واقعی کاربرد نداره چون فقط تویه یه پروسه کار میکنه و برای مدریت کابران بیشتر مناسب نیس مثلا :
اگر کاربر A به پروسه 1 سرور شما متصل بشه و کاربر B به پروسه 2، و کاربر A پیامی به یک گروه چت ارسال کنه، کاربر B آن پیام را دریافت نمیکنه، چون پیام فقط در حافظه پروسه 1 پخش شده و این مشکل با Redis حل میشه ! . ))
چطوری کار میکنه ؟
وقتی یه Consumer پیامی رو به یه کانال میفرسته، Channel Layer این پیام رو به بکاند (مثل Redis) میفرسته.
سایر Consumer که به همون کانال گوش میدن، پیام رو دریافت میکنن.
Channel Layer
در Django Channels یک لایه انتزاعی (abstraction layer) هس که برای مدیریت ارتباط بین مصرفکنندگان (Consumers) در یک اپلیکیشن Django استفاده میشه. این لایه بهتون امکان میده پیامها رو بین بخشهای مختلف برنامهتون (مثل سرورهای مختلف یا پروسههای مختلف) ارسال و دریافت کنین. در واقع، Channel Layer مثل یه message broker عمل میکنه که پیامها رو به صورت ناهمگام (asynchronous) مدیریت میکنه.
حالا اصلا چرا بهش نیاز داریم ؟
در Django Channels برای پشتیبانی از قابلیتهایی مثل WebSocket، چت real-time، اعلانها و هر چیزی که نیاز به ارتباط ناهمگام داره، طراحی شده. اما چون Django بهصورت پیشفرض برای درخواستهای همگام (synchronous HTTP) ساخته شده، Channel Layer بهعنوان مثلا یه پل ارتباطی اضافه شده تا
پیامها رو بین چندین instance از اپلیکیشن پخش کنه یا چند تا سرور داشته باشیم که بتونن با هم هماهنگ کار کنن یا ارسال پیام به گروه ها و ...
حالا خود Channel Layer سه تا جزء داره :
Channels:
کانالها مثل یه لوله ارتباطی هستن که پیامها از طریق اونها جابهجا میشن. هر کانال یه اسم منحصربهفرد داره (مثل chat_room1).
Groups:
گروهها برای مدیریت چندین کانال بهصورت همزمان استفاده میشن. مثلاً تو یه اپلیکیشن چت، میتونید یه گروه برای یه اتاق چت بسازید و پیامها رو به همه اعضای اون گروه بفرستید.
Backend:
Channel Layer
به یه سیستم بکاند (مثل Redis یا In-Memory) نیاز داره تا پیامها رو ذخیره و مدیریت کنه. این بکاند تعیین میکنه که پیامها چطور ذخیره و منتقل میشن.
((طبیعتا In-Memory واسه تسته فقط و واسه محیط واقعی کاربرد نداره چون فقط تویه یه پروسه کار میکنه و برای مدریت کابران بیشتر مناسب نیس مثلا :
اگر کاربر A به پروسه 1 سرور شما متصل بشه و کاربر B به پروسه 2، و کاربر A پیامی به یک گروه چت ارسال کنه، کاربر B آن پیام را دریافت نمیکنه، چون پیام فقط در حافظه پروسه 1 پخش شده و این مشکل با Redis حل میشه ! . ))
چطوری کار میکنه ؟
وقتی یه Consumer پیامی رو به یه کانال میفرسته، Channel Layer این پیام رو به بکاند (مثل Redis) میفرسته.
سایر Consumer که به همون کانال گوش میدن، پیام رو دریافت میکنن.
👍8
/dev/null
داشتم درباره Channel Layer ها تویه Django میخوندم دیدم بحث جالبیه Channel Layer در Django Channels یک لایه انتزاعی (abstraction layer) هس که برای مدیریت ارتباط بین مصرفکنندگان (Consumers) در یک اپلیکیشن Django استفاده میشه. این لایه بهتون امکان میده…
قبلا واسه ارسال ایمیل ها یه تابعی به اسم send_mail نوشته بودم که وقتی ادمین یه سری کاربر رو دعوت به میت میکرد یه ایمیل براشون فرستاده میشد با django.core.mail که تویه فلان ساعت و فلان روز میت هس
اما یه مشکلی داره که طبیعتا فشار زیادی رویه سرور میاد و اگه تعداد ایمیل ها زیاد باشه ادمین باید کلی صبر کنه تا ایمیل ها فرستاده بشه بعد حالا به یه جایی redirect بشه
میشه همبن کار رو ناهمزمان اجرا کرد به دو روش :
اولیش استفاده از Threading هس . هر برنامه تویه یه Thread اصلی اجرا میشه اما میتونیم به صورت موازی (یا شبه موازی به دلیل cpu bound ) بیایم تسک ها در کنار برنامه اجرا کنیم مثلا ارسال ایمیل در یه ترد جداگونه اجرا میشه و دیگه نیازی به صبر نیس
دومیش هم استفاده از celery که سیستم صف وظایف هس . تسک ها درون یک صف قرار میگیرن و بعد توسط یک یا چند تا worker که منظور همون پروسه های سیستم هستن از صف برداشته و اجرا میشن .
اما این وسط نیاز به یه broker داریم که ارتباط بین برنامه و پروسه ها رو ایجاد کنه (ینی یه جا باشه که تسک ها داخل صف ذخیره بشن) مثل Redis
با celery beat یا cronjob هم میشه تسک ها رو تویه یه زمانبندی خاص اجرا کرد.
اما یه مشکلی داره که طبیعتا فشار زیادی رویه سرور میاد و اگه تعداد ایمیل ها زیاد باشه ادمین باید کلی صبر کنه تا ایمیل ها فرستاده بشه بعد حالا به یه جایی redirect بشه
میشه همبن کار رو ناهمزمان اجرا کرد به دو روش :
اولیش استفاده از Threading هس . هر برنامه تویه یه Thread اصلی اجرا میشه اما میتونیم به صورت موازی (یا شبه موازی به دلیل cpu bound ) بیایم تسک ها در کنار برنامه اجرا کنیم مثلا ارسال ایمیل در یه ترد جداگونه اجرا میشه و دیگه نیازی به صبر نیس
دومیش هم استفاده از celery که سیستم صف وظایف هس . تسک ها درون یک صف قرار میگیرن و بعد توسط یک یا چند تا worker که منظور همون پروسه های سیستم هستن از صف برداشته و اجرا میشن .
اما این وسط نیاز به یه broker داریم که ارتباط بین برنامه و پروسه ها رو ایجاد کنه (ینی یه جا باشه که تسک ها داخل صف ذخیره بشن) مثل Redis
با celery beat یا cronjob هم میشه تسک ها رو تویه یه زمانبندی خاص اجرا کرد.
👍6