Sonia Software Notes
2.02K subscribers
307 photos
16 videos
46 files
531 links
Download Telegram
Forwarded from Sadra Codes
من چطور مقاله تکنیکال ‌می‌نویسم؟ شما چطور بنویسید؟!

اولین نکته، انتخاب موضوع مناسبه. سعی کنید درباره مباحثی بنویسید که اصطلاحا بهش میگن Hot Topic و موضوع روز دنیاست. مثلا درحال حاضر، ChatGPT یکی از این مدل موضوعاته. اگه یه ابزار آپدیتی می‌ده، می‌تونید درباره اون آپدیت بنویسید یا تجربه خودتون از یه ابزار یا...

نکته بعدی، نوشتن اولین درفت (Draft) از مقاله هست. توی درفت، فقط سکشن‌ها و عناوین رو بنویسید و در بدنه هر عنوان، یه بولت لیست داشته باشید حاوی یه سری سوالات که معمولا مشخص می‌کنن در این سکشن، قراره درباره چی صحبت کنید. یکم تحقیق کنید و بولت لیست رو به ساب سکشن‌ها و ساب ساب سکشن‌ها تبدیل کنید و نهایتا شروع به نوشتن کنید.

نکته پایانی، یادتون نره Conclusion و لیست منابع (در صورت وجود) رو قید کنید. 🍻
👍13👎4
قابلیتی بیهوده به روایت تصویر
#تپسی
#ارسالی
#chatgpt
👍28🤡8👎3
Forwarded from Security Analysis
⭕️ دور زدن SSRF Protection از طریق Cross Protocol Redirect

یکی از راه هایی که حتما میدونید برای دور زدن SSRF Protection و دستیابی به internal asset مثل localhost و ... این هست که ما redirect انجام بدیم. برای مثال آدرس URL ای به اپ میدیم که تحت کنترل ماست و اون درخواست http رو ریدایرکت میکنه به یه asset inernal

محقق طی یه پروژه با تارگتی روبه رو میشه که هیچگونه جلوگیری ای برای ssrf نداشته و بعد از گزارش برنامه نویس از لایببری ssrf-req-filter توی node.js استفاده میکنه و محقق هنگام اولین retest متوجه میشه آسیب پذیری پچ شده اما زمانی که محقق Cross-Protocol Redirect رو تست میکنه دوباره با موفقیت به اون asset internal دسترسی میگیره

اما Cross-Protocol Redirect چیه؟ منظور اینه که پروتکل از http به https هنگام ریدایرکت تغییر پیدا کنه یا برعکس
در اینجا محقق URL ابتدایی که به App داده پروتکل https داشته اما در ریدایرکت گفته که به localhost ریدایرکت صورت بگیره روی پروتکل http
https://example.com/?redirect=https://localhost

اما چرا این اتفاق میفته؟ به طور خلاصه ما کد JS شبیه به کد زیر رو داریم که از ssrf جلوگیری کنه
request({
    uri: url,
    agent: ssrfFilter(url),
});
اما در لایبرری request در قسمت lib/redirect.js ما یه شرط جالب داریم:
if (request.uri.protocol !== uriPrev.protocol) {
  delete request.agent
}
بازم هم به طور خیلی خلاصه بخوام بگم این شرط بررسی میکنه که اگر هنگام ریدایرکت تغییر پروتکل داشتیم request.agent حذف بشه که در این کیس ما باعث میشه ssrf filter ای نداشته باشیم (‌ چون خود متد ssrfFilter اگر دقت کنید در قسمت agent کال شده)

https://blog.doyensec.com/2023/03/16/ssrf-remediation-bypass.html

#web_security #ssrf
@securation
👍7
😁232🤣1
Forwarded from Django Expert (Majid A.M)
✔️بدترین تجربه مصاحبه کاری من به عنوان یک برنامه نویس توسعه‌‌دهنده وب:

اول اسم شرکت رو بگم خدمتتون اسم شرکت "نقش اول کیفیت" (ناک) هست که خودشون رو بزرگترین کارگزار(وندور) همراه اول معرفی میکنند

من بعد از یک جلسه مصاحبه hr آنلاین دعوت به مصاحبه حضوری شدم و بعد از مراجعه به ساختمان این شرکت به من گفته شد که به دلیل اشتباه در تنظیمات تقویم فردی که در بخش نیروی انسانی مشغول به کار هست (hr محترم بدون هیچ گونه عذرخواهی این کلمات رو بیان کردند) یک ساعت دیرتر این مصاحبه قرار هست شکل بگیره بعد از اعتراض بنده به موضوع گفتند که فرد مصاحبه کننده فنی (که از دفتر همراه اول قرار بود تشریف بیاورند و این پروژه به صورت کامل برای همراه اول و در دفتر مرکزی این شرکت بود گفته های من بر اساس اطلاعاتی هست که به بنده حین تماس تلفنی برای دعوت به مصاحبه منتقل کردند) در راه هستند و ۲۰ دقیقه دیگه مصاحبه انجام میشه و اگر قصد دارم مصاحبه رو انجام ندم به ایشان اطلاع بدم با قبول طرفین نسبت به این موضوع بنده رفتم یه میان وعده ای بخورم و برگردم
بعد از مراجعت مجدد من به ساختمان اصلی و بعد از ۵ دقیقه از زمان تعیین شده (یعنی ۲۵ دقیقه انتظار من) بنده تماس گرفتم و این فرد محترم به من گفتند که مصاحبه کنسل شده و من مجدداً اعتراض کردم و پرسیدم آیا به نظر شما این رفتار حرفه ای هست؟ ایشون بدون هیچ گونه عذر خواهی تلفن رو قطع کردند.

حالا شاید جالب باشه چرا مصاحبه کنسل شده؟ به دلیل عدم هماهنگی بین پرسنل خوده ناک یا شرکت نقش اول کیفیت (یا همون بزرگترین وندور همراه اول 😅)

به عنوان کسی که بیشتر از ۲۰۰ مصاحبه رفته و مصاحبه بخشی از روتین ماهانه اش هست و همچنین بیشتر از ۵۰ تا مصاحبه گرفته (در هر دو پوزیشن تجربه داشته به نظرم این دلیل ابدا قابل قبول نیست)

و کسی که تجربه کار ریموت/داخلی /بین المللی/ پروژه‌ای/ سازمانی(سازمانهای بیشتر از پانصد نفر) میتونم بگم بدترین تجربه من از دعوت به مصاحبه در این شرکت رخ داده

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

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


ارادتمند همیشگی شما: مجید آقامحمد

™️ @DjangoEx

© @DjangoIR
👍19👎2😡1
Forwarded from جادی | Jadi
اگر گندی که به #فیلترنت زدن رو اعصاب شما هم هست و لازمه لحظاتی روحیه رو تقویت کنین، به این سایت سر بزنین (:

https://ridanbe.net/

پ.ن. نمی‌دونم کی ساخته.. ظاهرا اسپانسرش خیار دات نت است ولی ((:
😁11🤣3
https://github.com/GFW-knocker/gfw_resist_tls_proxy

خلاصه کار به فارسی:
روترهای gfw تلاش میکنند اما نمیتوانند همه packet های fragment را سرهم کنند زمانی که delay بین پکت ها باشد
چرا؟ چون کل ترافیک کشور ازشون عبور میکنه و براشون سخته و cache محدود دارند و باید سریع باشند
از طرفی gfw نمیتونه پکت های فرگمنت رو reject کنه چون اولا fragmet جزو اصول شبکه هست
ثانیا در خیلی از نت های ضعیف packet ها تکه میشوند
در صورت reject کردن نت بسیاری از گوشی های قدیمی و خطوط ضعیف مختل میشه
همچنین در مسیر روترهای پرسرعت fragmentation اتفاق می افته
و اینو gfw میدونه بنابراین سعی میکنه اسمبل کنه و اگر نتونه عبور میده
سرورها ولی موظف به سرهم کردن fragment ها هستند چون در پروتکل ip قید شده و سرشون به اندازه gfw شلوغ نیست
سرورهای کلودفلر به خوبی این کارو میکنن
باور کنید یا نکنید کار gfw ساختست
الان عمده ترافیک TLS هست و تنها با تحلیل SNI میتونه ترافیک TLS رو تفکیک کنه
و ما کار رو براش هزینه بر و پردازش بر میکنیم
یا باید کل cloudflare رو با همه سایت هاش ببنده و عملا نت جهانی رو قطع کنه
یا باید فرگمنت رو drop کنه که در هر صورت سیستم های خودشون هم دچار اختلال میشه
این سیستم تست شده و کار میکنه
و شما با domain فیلتر شده و با ip کثیف cloudflare میتوانید از gfw عبور کنید
با اندکی تنظیمات ، سرعت handshake اول هم بالا خواهد رفت
اینترنت برای همه یا برای هیچکس
🔥9👎8👍3🌚2❤‍🔥1
Sonia Software Notes
https://github.com/GFW-knocker/gfw_resist_tls_proxy خلاصه کار به فارسی: روترهای gfw تلاش میکنند اما نمیتوانند همه packet های fragment را سرهم کنند زمانی که delay بین پکت ها باشد چرا؟ چون کل ترافیک کشور ازشون عبور میکنه و براشون سخته و cache محدود دارند و…
اما من مشکلی که در این روش دیدم تنها این تکه از کد بود :‌
resource.setrlimit(resource.RLIMIT_NOFILE, (127000, 128000))
این کد باعث میشود که ulimit کرنل بیش از حد شود و اگر سروری داشته باشید که نتونه این همه کانکنشن رو دریافت کنه سریعا ریسورس رو اشکال میکنه
👍6🍌5❤‍🔥1🌚1
Sonia Software Notes
https://github.com/GFW-knocker/gfw_resist_tls_proxy خلاصه کار به فارسی: روترهای gfw تلاش میکنند اما نمیتوانند همه packet های fragment را سرهم کنند زمانی که delay بین پکت ها باشد چرا؟ چون کل ترافیک کشور ازشون عبور میکنه و براشون سخته و cache محدود دارند و…
و اما خلاصه این روش و دلایل نیاز آن :
وقتی یک پکتی فرستاده میشه اون پکت میتونه یا به صورت خیلی واضح فرستاده باشه یا به صورت مبهم سازی شده . ( کاری که xray , v2ray ) انجام دادن

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

و برای این روش هم ۲ راهکار دیگه وجود داره
روی اون سرویس vpn یی که استفاده میشه tls هم اضافه میشه که پکت خوندنش سخت تر بشه
بردن آی پی سرور پشت کلاد فلر

در روش دوم هم اتفاقی میوفته وقتی آی پی رو پشت کلاد فلیر میبرید روی ای پی ها کلاد فلیر اختلال میندازن یا در بدترین حالت اگر متوجه این بشن که دامینتون چی هستش ( با کمک SNI ) سریعا فلیترش میکنن.
به همین دلیل روشی برای اسکن کردن آی پی های کلاد فلیر روی سرویس پروایدر خاص به وجود اومد که کاربران متوجه شوند کدوم آی پی ها روی اینترنتشون جواب بهتری میده و اون رو به جای آدرس وی پی انشون جایگذاری میکردن

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

مثلا شما اگر بخواید ۴۰۹۶ بایت به یک سروری ارسال کنید اون ۴۰۹۶ تقسیم بر ۴ پکت میشود که هر پکت ۱۰۲۴ بایت دارد و بعد از ارسال هر ۴۰۹۶ بایت ۱۰ یا ۵۰ میلی ثانیه تاخییر در ارسال پکت بعدی اعمال میشه.

#GFW
👍10❤‍🔥1👎1🌚1
Forwarded from Sadra Codes
دوتا ابزار جالب و کاربردی دواپسی که من (بعنوان بک‌اند کار) خیلی ازشون خوشم اومد!

- لوکال استک:‌ AWS لوکال
- اَکت: GitHub Actions لوکال

یه تایم می‌گفتیم چرا رو سیستمت نگه می‌داری؟ بفرست بالا رو ابرا.. از اینترنت استفاده کن.. حالا همه‌چی داره لوکال میشه. 😁
👍71🍌1
چرا واقعا 🙂
نکته اش اینه که powershell اینو داره ولی cmd نه
🤣23👍6💋31🍌1
How does Docker Work ?

#Docker
👍14🍓4👎1
SSH over QUIC
https://github.com/moul/quicssh

برنامه quicssh یک پراکسی quic هستش که اجازه میدهد از quic برای وصل شدن به ssh خود استفاده کنید و نیازی به پچ کردن openssh ندارد.

نحوه نصب :
برای نصب این برنامه باید گولنگ در سیستم شما نصب شده باشد و سپس با این دستور میتوانید آن را اضافه کنید :
go get -u moul.io/quicssh

نکته :
اگر از سیستم عامل یونیکسی استفاده میکنید به صورت پیشفرض گولنگ باینری ها رو در پوشه زیر ذخیره میکند :
linux : 
/home/$USER/go/bin
darwin :
/Users/$USER/go/bin

#QUIC
#SSH
👍8👎1🙏1
Sonia Software Notes
و اما خلاصه این روش و دلایل نیاز آن : وقتی یک پکتی فرستاده میشه اون پکت میتونه یا به صورت خیلی واضح فرستاده باشه یا به صورت مبهم سازی شده . ( کاری که xray , v2ray ) انجام دادن اما مبهم سازی کردن پکت زیاد تضمین این رو نمیکند که پکتی که ارسال میشه باز هم…
gfwKnock
https://github.com/SonyaCore/gfwKnock

این پروژه با بازنویسی gfw_resist میباشد که با زبان گولنگ توسعه داده شده
با استفاده از این پروژه میتوانید پکت هایی که توسط وی پی ان v2ray فرستاده میشه رو تقسیم بندی کنید.

——
نحوه نصب :
برای دریافت باینری به این قسمت مراجعه کنید :
https://github.com/SonyaCore/gfwKnock/releases/tag/v0.1

——
نحوه کامپایل از سورس :
مخزن را کلون کنید :
git clone https://github.com/SonyaCore/gfwKnock.git
و به پوشه مخزن بروید و با این دستور از کد را کامپایل کنید :
go build -o gfwKnock -ldflags "-s -w -buildid=" .

و باینری را اجرا نمایید :
./gfwKnock

——
تنظیمات :
این پروژه تنظیماتی را مثل پروژه gfw_resist دارد با این تفاوت که تنظیمات از فایل config.json خوانده میشود
نمونه ای از فایل config.json و تایپ های آن :
{
// key : value : type
"listen_port": 8080, // Integer
"cloud_flare_ip": "45.85.110.55", // String
"cloud_flare_port": 443, // Integer
"socket_timeout": "60", // int Seconds
"fragment_sleep": "100" // int Miliseconds,
"l_fragment": 77 // int Byte

}
هنگام دریافت پروژه از مخزن یک فایل نمونه در آن قرار گرفته که میتوانید از آن استفاده کنید.

——
توضیحات فیلد های تنظیمات gfwKnock :
listen_port
پورتی که برای بالا آمدن کلاینت gfwKnock استفاده میشود و از آن به عنوان پراکسی میتوانید روی vpn v2ray استفاده نمایید
cloud_flare_ip
آی پی کلاد فلیر برای استفاده از وی پی ان
cloud_flare_port
پورت برای آی پی کلاد فلیر
socket_timeout
تایم اوت وصل شدن به آی پی کلاد فلیر که ۶۰ ثانیه میباشد.

fragment_sleep
تاخیر انداختن بعد از هر فرگمنتی که کامل میشود .
l_fragment
طول فرگمنت ها برای فرستادن client hello که به صورت بایت ست میشود.
——
#gfwKnock
🔥19👎2❤‍🔥1👍1
👍24👌2
Forwarded from جادی | Jadi
grok-algor.pdf
24.5 MB
معرفی کتاب «درک الگوریتم؛ راهنمای تصویری برای برنامه‌نو یس‌ها و افراد کنجکاو»

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

این کتاب با اسم کامل «درک الگوریتم، راهنمای تصو یری برای برنامه نو یس‌ها و افراد کنجکاو»‌ چیزی است که اگر یکی بگه «می خوام الگوریتم بخونم» من بهش پیشنهاد می‌کنم. عکس های کیوت و بامزه و بی مزه و دارای فصل بندی خوب و توضیحات مناسب و نمونه سوال بدون وارد شدن به جزییات خیلی ریز ریاضی‌وار.

و خبر خوب؟ کتاب رو مهران ترجمه کرده و برای دانلود رایگان در اختیار ما گذاشته. می تونین از کانال jadivarlog در تلگرام بگیرینش (:

https://youtu.be/p21OlSQIRZk
5👍41🎅1
👍25😁9
Forwarded from Semicolon (Ali Moeinian)
روز معلم فقط مبارک خودت باشه :) ❤️
47👍3😁3👎1🔥1
Latency numbers every developer should know.
👍7🔥1
Sonia Software Notes
Latency numbers every developer should know.
🔹L1 and L2 caches: 1 ns, 10 ns
E.g.: They are usually built onto the microprocessor chip. Unless you work with hardware directly, you probably don’t need to worry about them.

🔹RAM access: 100 ns
E.g.: It takes around 100 ns to read data from memory. Redis is an in-memory data store, so it takes about 100 ns to read data from Redis.

🔹Send 1K bytes over 1 Gbps network: 10 us
E.g.: It takes around 10 us to send 1KB of data from Memcached through the network.

🔹Read from SSD: 100 us
E.g.: RocksDB is a disk-based K/V store, so the read latency is around 100 us on SSD.

🔹Database insert operation: 1 ms.
E.g.: Postgresql commit might take 1ms. The database needs to store the data, create the index, and flush logs. All these actions take time.

🔹Send packet CA->Netherlands->CA: 100 ms
E.g.: If we have a long-distance Zoom call, the latency might be around 100 ms.

🔹Retry/refresh internal: 1-10s
E.g: In a monitoring system, the refresh interval is usually set to 5~10 seconds

Notes
-----
1 ns = 10^-9 seconds
1 us = 10^-6 seconds = 1,000 ns
1 ms = 10^-3 seconds = 1,000 us = 1,000,000 ns

#LatencyNumbers
👍4🔥1