CleverDevs – Telegram
CleverDevs
8.45K subscribers
734 photos
283 videos
27 files
436 links
به کانال کلوردوز خوش اومدین

سعی میکنیم چیزایی که بنظر کاربردی هستن رو باهاتون به اشتراک بزاریم


🔥لینوکس
🔥برنامه نویسی فرانت‌اند
🔥برنامه نویسی بک‌اند
🔥اخبار تکنولوژی و...

CleverDevs are better than other Devs
💢~> @mmdrsdev
Download Telegram
شاید براتون سوال باشه که اپلیکیشن‌های ویندوزی چطوری کرک می‌شدن. قبلا، مثلاً وقتی Visual Studio را دانلود می‌کردید، کنارش یک فایل پچ یا Keygen وجود داشت که به وسیله آن می‌تونستین اپلیکیشن رو فعال کنید.

این فرآیند با استفاده از علمی به نام مهندسی معکوس انجام می‌شه. مهندسی معکوس به بررسی و تحلیل سیستم‌ها، نرم‌افزارها و سخت‌افزارها برای فهمیدن ساختار داخلی و نحوه کارکرد آن‌ها می‌پردازه. خود این علم به شاخه‌های مختلفی تقسیم می‌شه که در دنیای کامپیوتر به این شکله:

- مهندسی معکوس نرم‌افزار
- کرک کردن اپلیکیشن‌ها: فرآیندی که طی اون محدودیت‌های نرم‌افزاری حذف یا تغییر داده می‌شه تا بشه از آن به صورت رایگان یا بدون محدودیت استفاده کرد.
- هک کردن بازی‌ها: شامل تغییر کدهای بازی‌ها برای دسترسی به ویژگی‌های مخفی، تقلب یا بهبود تجربه بازی.
- مهندسی معکوس پروتکل‌ها: تجزیه و تحلیل پروتکل‌های ارتباطی برای فهمیدن نحوه عملکرد و احتمالا ایجاد نسخه‌های سازگار یا بهره‌برداری از نقاط ضعف. (مثلا TeamSpeak رو ریورس کردن تا بتونن پروتکلش که یک پروتکل proprietary عه رو بفهمن)
- ...
- مهندسی معکوس سخت‌افزار
- تجزیه و تحلیل مدارهای الکترونیکی و قطعات سخت‌افزاری برای فهمیدن نحوه کارکرد و ساختار آن‌ها.

مهندسی معکوس کاربردهای مختلفی داره، مثل بررسی امنیت نرم‌افزارها، بازیابی اطلاعات از نرم‌افزارهای قدیمی، و حتی ساخت نسخه‌های بهینه‌تر و سازگارتر از نرم‌افزارها و سخت‌افزارهای موجود.

من سعی می‌کنم تو زمان‌های آزاد، درباره مبانی این حوزه پست‌های بیشتری بذارم تا شاید کسی به این حوزه علاقه‌مند بشه. علاوه بر این، در آینده احتمالا چالش‌هایی در این زمینه برگزار کنیم !

@CleverDevs - @CleverDevsGp
👍42🔥8👌3
#داکر یا #Docker چیه؟

یه پلتفرم نرم‌افزاری که به شما امکان میده برنامه‌ها و سرویس‌ها رو توی محیطای ایزوله‌ به اسم "کانتینر" اجرا کنید
به زبان ساده‌تر، داکر به شما کمک میکنه تا برنامه‌ هاتونو رو با همه نیازمندیا و وابستگیاش (مثل کتابخانه‌ها و تنظیمات) توی یه بسته کوچک بزارید📦

این بسته‌ها میتونن به راحتی بین کامپیوترها جابجا شده و اجراشن بدون اینکه نیازی به نصب جداگانه اونا باشه
این کار باعث می‌شود برنامه‌ها توی محیطی (مثل کامپیوتر شخصی، سرور یا فضای ابری) به یک شکل عمل کنند و مشکلات ناسازگاری محیطی کمترشه👾

بعنوان مثال فرض کنید شما یه برنامه وب نوشتین که از زبان برنامه‌نویسی پایتون استفاده میکنه و به یه پایگاه داده MySQL نیاز داره، برای اجرای این برنامه روی سیستم خودتون باید پایتون و MySQL را نصب و تنظیمات لازم رو انجام بدید و اگه بخاید این برنامه رو روی یه سرور دیگه اجرا کنید باید دوباره تمام این مراحلو تکرار کنید🥴

با داکر شما میاید یه کانتینر ایجاد میکنید که شامل همه چیزهاییه که برنامه شما نیاز داره: پایتون، MySQL، کتابخانه‌هایی که نیاز دارید و حتی کدهای خود برنامه.
بعدشم خیلی راحت کانتینر و به سرور  منتقل کنید و حالشو ببرید 🤤
این باعث میشه توسعه و انتقال برنامه‌ها ساده‌تر و مطمئن‌تر باشه


@CleverDevs
@CleverDevsGp
👍45🔥7💯3🆒2
اگه تازه به لینوکس مهاجرت کردید و سر در گمید و نمیدونید چیکار کنید
میتونید پلی لیست مهاجرت به لینوکس از گویبان رو ببینید آموزش های جالبی داره برای کسایی که تو لینوکس تازه کارن

فقط از اونجایی که الان این پلی لیست تازه شروع شده تکمیل نیست و ویدیو هاش به صورت هفتگی میاد
https://www.youtube.com/playlist?list=PLpl25_8ecATgtyo2pJwurI53-ol-CTdkp

اگه منبع دیگه های هم میشناسید که میتونه به افراد تازه کار توی گنو/لینوکس کمک کنه میتونید تو کامنتا بفرستید

#GNU #Linux
@CleverDevs - @CleverDevsGp
🔥20👍1043😁3
چیه؟ DLL (Dynamic Link Library) Injection

به‌طور کلی یه تکنیکه که بیشتر توی سیستم‌عامل‌های ویندوز رایجه و بهتون اجازه میده تا کدهای دلخواه خودتونو توی یه فرآیند (Process) دیگه اجرا کنین که چنتا از کاربرداشو پایین براتون میگم👇

دیباگینگ و مهندسی معکوس:
میشه از DLL Injection برای دیباگ کردن برنامه‌های خود یا برنامه های دیگه استفاده کرد. این تکنیک اجازه میده تا کدهای خاصی رو در زمان اجرا تزریق کرده و رفتار برنامه رو مشاهده کنن

افزودن قابلیت‌های جدید به نرم‌افزارها:
با DLL injection میشه قابلیت‌های جدیدی به نرم‌افزارها اضافه کرد. مثلا میتونین ویژگی‌های سفارشی رو به برنامه‌ها اضافه کنین

automation:
میشه از DLL Injection برای automation برنامه‌های دیگه استفاده کنند مثل پر کردن خودکار فرم‌ها یا انجام عملیات تکراری.

کاربردهای مخربی هم داره از جمله:
نصب بدافزارها، سرقت اطلاعات، دور زدن مکانیزم‌های امنیتی، اجرای کدهای مخرب، تغییر رفتار نرم‌افزارها و....

#DLLinjection
@CleverDevs
@CleverDevsGp
👍11🔥3🆒21💯1
🦸🏼‍♂ | Puppeteer

پاپیتیر یک کتابخانه بسیار قدرتمند که توسط توسعه دهندگان تیم گوگل ساخته شده، مناسب Web Scraping و Page Manipulation و Browser Automation هستش و کلی قابلیت های معرکه دیگه داره که میشه به تمام قابلیت های مرورگر دسترسی داشت و چیزهای خفنی باهاش توسعه داد.

🔥 چند نمونه از استفاده های پرکاربرد:

- دریافت اطلاعات از سایت‌ها بدون نیاز به API.


- انواع حملات و سو استفاده از وبسایت.


- اتومیشن کردن سناریو های مختلف.


- تست کردن وبسایت، گرفتن خروجی بصورت پی دی اف و یا اسکرینشات.


#puppeteer | #tools
@CleverDevs - @CleverDevsGp
👍23👌4🔥2
درود دوستان امروز با یه مبحثی اومدم که تقریبا 99 درصد شرکت های ایرانی در صورتی که خیلی پر اهمیت هست ولی اهمیتی بهش ندادن.

در برنامه‌نویسی شبکه‌ای و وب سرورها یه مبحثی هست با نام "graceful shutdown" یعنی kill کردن یا بستن بهینه سرویس ها با حداق تلفات در درخواست ها، میتونه در شرکت های بزرگ انقدر بهینه پیاده سازی بشه تا به هیچ عنوان درخواست یا دیتایی از دست نره.

خب حالا بیاین یه مثال ساده ازش بزنیم، برای مثال ما یه سرویسی داریم که کلی ریکوست از سمت کلاینت داره و میخوایم بنا به دلایلی چند لحظه down کنیمش اینجاس که پای "graceful shutdown" به ماجرا باز میشه، ما باید یه سیستمی پیاده کنیم تا دو مورد زیر رو تکمیل کنه و سپس process رو kill کنه.

تکمیل درخواست‌های جاری: زمانی که سرور خاموش میشه، درخواست‌هایی که در حال پردازش هستن باید به درستی تکمیل بشن.
آزادسازی منابع: منابعی مثل پایگاه داده‌ها و فایل‌ها باید به درستی بسته بشن تا از نشت یا ذخیره ناقص منابع جلوگیری بشه.

یه مثال با golang اینجا میارم، به علت اینکه کد طولانی شد میزارمش تو یه فایل تکست پایین

break;

حالا اجازه بدین به زبون خودمونی توضیح بدم که چرا استفاده از Graceful Shutdown (خاموشی تمیز) مهمه و چطوری توی این کد \پایین اجرا شده.

فرض کن یه مغازه‌داری. وقتی می‌خوای مغازه‌ات رو ببندی، قبلش مطمئن میشی که همه مشتری‌ها کارشون تموم شده، حساب کتاباشون رو کردن و دارن میرن بیرون. نمیای وسط کار مشتری‌ها، کرکره رو بکشی پایین و در رو قفل کنی. اینجوری هم خودت ضرر می‌کنی، هم مشتری‌ها ناراضی میشن.

حالا همینو بیاریم توی برنامه‌نویسی سرور:

تموم کردن کارهای در حال اجرا: وقتی سرور رو یهویی خاموش نکنی، به درخواست‌هایی که در حال پردازش هستن فرصت میدی کارشون رو تموم کنن. مثلا وقتی کسی داره اطلاعاتی رو از سرور می‌گیره، اگه وسطش سرور خاموش بشه، اون شخص به اطلاعاتش نمیرسه. با Graceful Shutdown، سرور منتظر می‌مونه تا این درخواست‌ها تموم بشن.

جلوگیری از از دست رفتن داده‌ها: اگه سرور وسط نوشتن اطلاعات به پایگاه داده خاموش بشه، ممکنه داده‌ها خراب بشن یا ناقص ذخیره بشن. خاموشی تمیز باعث میشه همه کارها به درستی و تا آخر انجام بشن و بعد سرور خاموش بشه.

مدیریت بهتر منابع: وقتی سرور رو تمیز خاموش می‌کنی، منابعی مثل حافظه و اتصالات شبکه به درستی آزاد میشن. اینجوری وقتی دوباره سرور رو روشن می‌کنی، با مشکلات کمتری مواجه میشی.

حالا توی کد پایین، اینطوری این کار انجام شده:

تعریف یک کانال برای دریافت سیگنال‌ها:
go
Copy code
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt, syscall.SIGTERM, syscall.SIGINT)

این قسمت میگه که وقتی سیگنال‌های مشخصی (مثل Ctrl+C زدن توی ترمینال) دریافت شد، بره سراغ خاموشی تمیز.

گوش دادن به سیگنال‌ها و شروع فرآیند خاموشی:
go
Copy code
<-stop
log.Println("Server is shutting down...")
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
log.Fatalf("Server Shutdown Failed:%+v", err)
}

اینجا وقتی سیگنال رو دریافت کرد، پیام "سرور داره خاموش میشه" رو لاگ می‌کنه. بعد با استفاده از یه کانتکست 30 ثانیه‌ای سرور رو خاموش می‌کنه. یعنی سرور تا 30 ثانیه فرصت داره کارهای در حال اجرا رو تموم کنه و بعدش خاموش بشه.

صبر کردن تا تموم شدن همه کارها:
go
Copy code
wg.Wait()
log.Println("Server exited properly")


اینجا منتظر می‌مونه تا همه کارها (که با استفاده از wg.Add(1) و wg.Done() کنترل میشه) تموم بشن. وقتی همه کارها تموم شد، پیام "سرور به درستی خاموش شد" رو لاگ می‌کنه.

به طور خلاصه، استفاده از Graceful Shutdown کمک می‌کنه سرور به درستی و بدون ایجاد مشکل خاموش بشه، کارهای در حال اجرا تموم بشن و داده‌ها به درستی ذخیره بشن. این باعث میشه که سرور همیشه به صورت مطمئن و پایدار کار کنه و تجربه بهتری برای کاربرها فراهم کنه، و از خیلی چیزای دیگه مثل ذخیره شدن ناقص اطلاعت یا بسته نشدن procss ها که باعث میشن منابع الکی هدر بره جلوگیره کنه.

#Graceful_Shutdown
@CleverDevs - @CleverDevsGp
🔥19👍9🆒3👎1
دوستان ما یه تصمیمی گرفتیم که اگه بیشتر از یه تعدادی از بچه ها پایه باشید شروعش کنیم 👨‍💻

کارمون از این قراره که ما اومدیم یه اکانت گیت هاب زدیم و میخوایم تیم های مختلفی تشکیل بدیم و باهم دیگه پروژه های اوپن سورس بزنیم
اما مزیت این کار اینه که میتونید تو کار تیمی پیشرفت کنید از طرفی در زمینه اوپن سورس هم بعد ها میشه حرفی برای گفتن داشت 🔥

اگه تعداد افرادی که مشارکت کنن تو این کار به حد مناسبی برسه میایم و بچه هارو بر اساس استک های مختلف دسته بندی میکنیم و  تیم هایی میسازیم مثلا تیم ریکت کار ها یا تیم لاراول کار ها و ...
هرکدوم از این تیم ها میان توی ارگان CleverDevs  برای خودشون پروژه های کاربردی مختلفی میسازن و میتونن با تیم های دیگه هم کاری هم کنن 👌

برای هر تیم هم بر اساس رزومه و مهارت یک نفر رو به عنوان لیدر انتخاب میکنیم که تیم رو مدیریت کنه

این فعلا یه ایده اولیه از کاره و میتونید پیشنهاد هایی که دارید رو تو کامنت ها بگید و شرکت یا عدم شرکت خودتون توی این برنامه رو تو نظرسنجی پایین انتخاب کنید

@CleverDevs - @CleverDevsGp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍68🔥11🆒3👎2
CleverDevs
#GN @CleverDevs - @CleverDevsGp
This media is not supported in your browser
VIEW IN TELEGRAM
سیستمی که باهاش ستاپ های خفن GN هارو میبینیم:

#fun
@CleverDevs - @CleverDevsGp
🤣58🔥3💔2
CleverDevs
دوستان ما یه تصمیمی گرفتیم که اگه بیشتر از یه تعدادی از بچه ها پایه باشید شروعش کنیم 👨‍💻 کارمون از این قراره که ما اومدیم یه اکانت گیت هاب زدیم و میخوایم تیم های مختلفی تشکیل بدیم و باهم دیگه پروژه های اوپن سورس بزنیم اما مزیت این کار اینه که میتونید تو…
خب رفقا برای اینکه بحث مربوط به تیم با فعالیت اصلی چنل قاطی نشه یه گروه دیگه برای این کار تشکیل دادیم اگه پایه بودید بیایید اونجا تا درباره جزئیات کار تصمیم بگیریم

پیام پین شده توی گروه رو هم حتما بخونید

https://news.1rj.ru/str/+mdJgJfZOBfU0ODlk


@CleverDevs - @CleverDevsGp
👍8🔥3💯1
قابلیت tag توی گیت یکی از قابلیت های خفن گیته که برای ورژن بندی کمک زیادی میکنه در واقع تگ ها توی گیت برای نشانه گذاری زمان خاصی از تاریخچه پروژه هست

مثلا ما یه سری فیچر برای پروژمون زدیم و میخوایم که به عنوان ورژن 1 علامت گذاری کنیم میایم و از tag ها استفاده میکنم و اون کامیت اخر رو با تگ v1 نشانه گذاری میکنیم و بعد تر که فیچر های دیگه ای اومد و ورژن 2 آماده بود میتونیم به اخرین کامیت اون لحظه هم تگ v2 رو اختصاص بدیم


اما ما دو نوع تگ توی گیت داریم

نوع اول Annotated tags هست که اطلاعات بیشتری درباره اون تگ مثل اسم و ایمیل کسی که تگ رو ایجاد کرده ، تاریخ ایجاد تگ و یک پیام برای تگ و یک هش مخصوص برای اون کامیتی که تگ شده ست میکنن
برای ایجاد این نوع تگ ها باید کامند زیر رو بزنید که

git tag -a v1.0.0 -m "version 1.0.0"


که سوئیچ a به Annotated اشاره میکنه و سوئیچ m هم پیام مربوط به تگه (میتونید توی کامندتون پیام رو ست نکنید در این صورت گیت ادیتور رو براتون باز میکنه تا بنویسید)

نوع دوم lightweight tags هست که هیچ اطلاعات اضافه ای درباره تگ نمیده و فقط به اون کامیتی که تگ روش زده شده اشاره میکنه که بیشتر برای نشانه گذاری های موقت بدرد بخوره برای ایجاد این تگ ها هم باید کامند زیر رو بزنید

git tag v1.0.0


تگ های lightweight دیگه سوئیچ های m و a رو نمیگیرن

اگه خواستید بیشتر دربارش بدونید پیشنهاد میکنم به لینک زیر یه نگاه بندازید

https://www.freecodecamp.org/news/git-tag-explained-how-to-add-remove/

#git
@CleverDevs - @CleverDevsGp
👍28🔥621
آسیب پذیری های امنیتی جاوا اسکریپت🖇
#part1

1⃣ آسیب‌پذیری Cross-Site Scripting (XSS):
حمله‌ای که  مهاجم کد مخربو به یک وب‌سایت وارد میکنه و این کد در مرورگر کاربرا اجرا میشه.

راهای جلوگیری:
امن‌سازی داده‌های ورودی با تابع هایی مثل encodeURIComponent.
جلوگیری از نمایش مستقیم داده‌های کاربر در صفحات وب.


2⃣ آسیب‌پذیری Cross-Site Request Forgery (CSRF)
توضیح: حمله‌کننده با استفاده از کاربر و کوکی‌های مرورگر، عملیات ناخواسته‌ای رو اجرا میکنه و وقتی اتفاق میوفته که یک سایت بدون بررسی اعتبار درخواستای ارسالی از کاربرو اجرا کنه

راهای جلوگیری:
استفاده از توکن‌های CSRF در فرم‌ها و درخواست‌های حساس و تنظیم کوکی‌ها به گونه‌ای که فقط از طریق سرور قابل دسترس باشن (HttpOnly)


3⃣ حمله DDoS (Distributed Denial of Service)
توضیح: حمله‌ای که با ارسال تعداد زیادی درخواست به یک سرور، اونو از دسترس خارج میکنه.

راهای جلوگیری:
با محدود کردن تعداد درخواست‌های ورودی به سرور، از بار زیاد جلوگیری میشه.
از سرویس‌های مقابله با DDoS به طور تخصصی برای کاهش اثرات حملات DDoS طراحی شدن استفاده کنید
ظرفیت شبکه رو افزایش بدید و بار ترافیک رو بین چند سرویس توزیع کنین(load balancing)


4⃣ آسیب پذیری SQL injection:
حمله‌ای که  مهاجم دستورات مخربو از طریق ورودی کاربر به سرور ارسال میکنه و این دستورات در سرور اجرا میشن

راهای جلوگیری:
استفاده از parameterized queries
به کارگیری ORM (Object-Relational Mapping) برای تعامل با پایگاه داده‌ها.

@CleverDevs
@CleverDevsGp
👍153👌3🆒21💯1
این قضیه توی نصب فیلترشکن به خاطر برنامه نویس بودن هم صادقه

#fun
@CleverDevs - @CleverDevsGp
🤣56👍5👌2
توی این پست میخوام یه دانلود منیجر خفن و کاربردی رو معرفی کنم که بچه های ایرانی نوشتن

پرسپولیس یک دانلود منیجر و رابط کاربری گرافیکی برای Aria2 میباشد که با پایتون نوشته شده

پرسپولیس یک دانلود منیجر کراس پلتفرمه که برای سیستم عامل های گنو/لینوکس ، ویندوز ، مکینتاش و بی اس دی ها توسعه یافته

یک سری از قابلیت های این دانلود منیجر هم ایناس


رابط کاربری گرافیکی برای Aria2
دانلود چند بخشی فایل
زمانبندی دانلودها
صف‌بندی دانلودها
پیدا و دانلود کردن ویدئو از DailyMotion، Vimeo، Youtube، Aparat و ...


اگه به لینوکس مهاجرت کردید و دنبال یه جایگزین برای IDM میگردید یا توی سایر سیستم عامل ها میخواید از یه دانلود منیجر آزاد و اوپن سورس استفاده کنید پرسپولیس گزینه مناسبیه

اطلاعات بیشتر و نحوه نصب و استفاده :

https://persepolisdm.github.io/fa/

#tools #openSource
@CleverDevs - @CleverDevsGp
🔥33👍10👌2👎1
$$typeof property


توی React وقتی یه کامپوننت رو لاگ میگیریم، یه پراپرتی با این اسم میبینیم و هدفش جلوگیری از حملاتی مثل Cross-Site Scripting هست؛ حالا چطور انجام میشه؟

مقدار این پراپرتی یه Symbol هست، و یکی از Primitive تایپ‌های Js هست که نمیتونه به JSON تبدیل بشه، بخاطر همین اگه هکر بخواد یه کامپوننت فیک به سایتمون ارسال کنه ریکت متوجه این قضیه میشه.
#React #Js
@CleverDevs - @CleverDevsGp
👍14🔥3👌32
تولد داریم . . .

کانال CleverDevs یکساله شد 💥

یکسال پیش چنین روزی کانال با هدف اینکه چیزایی که بلدیم رو به دیگران هم منتقل کنیم شروع به کار کرد  تو این یک سال تجربه های مختلفی داشتیم سعی کردیم کانال تا جای ممکن برای اعضا مفید باشه ❤️

تا جایی که میشد کاری کردیم که کانال دو طرفه باشه یعنی هم ما پست بزاریم و هم اعضا تو کامنت ها چیزایی که میدونن رو با بقیه به اشتراک بزارن 🤝

سعی کردیم پروژه های اوپن سورسی که بچه های خودمون توسعه دادن رو معرفی کنیم تا زحماتشون بیشتر دیده بشه 👨‍💻

اگه پیشنهاد یا نقدی در راستای بهتر شدن چنل دارید خوشحال میشم تو کامنتا مطرحش کنید

@CleverDevs - @CleverDevsGp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64167👍7👎1