/dev/null
Open in Telegram
| دستمو گذاشتم رو این کار ، قلبمو گذاشتم. | هر new ای را delete ای ست و پس از آن null کردنی (:
Show more323
Subscribers
No data24 hours
+37 days
+230 days
Posts Archive
323
قبلا واسه ارسال ایمیل ها یه تابعی به اسم send_mail نوشته بودم که وقتی ادمین یه سری کاربر رو دعوت به میت میکرد یه ایمیل براشون فرستاده میشد با django.core.mail که تویه فلان ساعت و فلان روز میت هس
اما یه مشکلی داره که طبیعتا فشار زیادی رویه سرور میاد و اگه تعداد ایمیل ها زیاد باشه ادمین باید کلی صبر کنه تا ایمیل ها فرستاده بشه بعد حالا به یه جایی redirect بشه
میشه همبن کار رو ناهمزمان اجرا کرد به دو روش :
اولیش استفاده از Threading هس . هر برنامه تویه یه Thread اصلی اجرا میشه اما میتونیم به صورت موازی (یا شبه موازی به دلیل cpu bound ) بیایم تسک ها در کنار برنامه اجرا کنیم مثلا ارسال ایمیل در یه ترد جداگونه اجرا میشه و دیگه نیازی به صبر نیس
دومیش هم استفاده از celery که سیستم صف وظایف هس . تسک ها درون یک صف قرار میگیرن و بعد توسط یک یا چند تا worker که منظور همون پروسه های سیستم هستن از صف برداشته و اجرا میشن .
اما این وسط نیاز به یه broker داریم که ارتباط بین برنامه و پروسه ها رو ایجاد کنه (ینی یه جا باشه که تسک ها داخل صف ذخیره بشن) مثل Redis
با celery beat یا cronjob هم میشه تسک ها رو تویه یه زمانبندی خاص اجرا کرد.
323
داشتم درباره 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 که به همون کانال گوش میدن، پیام رو دریافت میکنن.
323
Repost 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
323
Repost from Hack Hive
🎯 کرک سیکرت توکنهای JWT با استفاده از hashcat
🔐 توکن 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> به مسیر فایل دیکشنری اشاره دارد.323
Repost from Linuxor ?
با کلاینت beekeeper studio میتونید دیتابیس های خودتون رو مدیریت کنید، اکثر دیتابیس هارو ساپورت میکنه توی ورژن های بعدی هم قراره Redis و Snowflake رو ساپورت کنه :
github.com/beekeeper-studio/beekeeper-studio
@Linuxor
323
Repost from Linuxor ?
ابزار Watt Admin هم جالبه باهاش میتونین سرویس های Node.js رو گرافیکی مانیتور کنید
blog.platformatic.dev/introducing-watt-admin
@Linuxor
Available now! Telegram Research 2025 — the year's key insights 
