Forwarded from Source Chat (Friend)
Please open Telegram to view this post
VIEW IN TELEGRAM
دوستان سایت هانتلرن که تازه راه افتاده یه سه چهارتا دوره گذاشته که بعضا رایگانن
مثلا دوره javascript for hunters داره که رایگانه
دوست داشتین ثبت نام کنین
huntlearn.com
مثلا دوره javascript for hunters داره که رایگانه
دوست داشتین ثبت نام کنین
huntlearn.com
🫡2
Return Value Optimization(RVO) in C++
https://sigcpp.github.io/2020/06/08/return-value-optimization
#programming
#cpp
https://sigcpp.github.io/2020/06/08/return-value-optimization
#programming
#cpp
sigcpp
Return value optimization (RVO)
Return-value optimization is a compiler technique to avoid copying an object that a function returns as its value, including avoiding creation of a temporary object. This optimization permits a function to efficiently return large objects while also simplifying…
🔥1
Forwarded from HuntLearn
ورکشاپ مقدمهای بر ردتیم و شبیه سازی APT38؛ با تدریس استاد هاشمی ( @soheilsec ). مقدمهای از پایه ردتیم و پایهای ترین توضیحات و سپس پیاده سازی APT38 برای درک بهتر و بیشتر. و ارائه راهکارهای دفاعی در تمامی مراحل.
https://huntlearn.com/courses/تیم-قرمز?show=webinar
در این ورکشاپ، افراد علاقه مند، ردتیمر و SOC میتوانند حضور پیدا کنند. لینک ورود به وبینار به صورت پابلیک قرار داده خواهد شد اما به افرادی که در سایت، توی وبینار ثبت نام کرده باشند به قید قرعه، چندین کتاب به انتخاب خود شخص، آفر شغلی و آموزشی و... داده خواهد شد👌🏻
به صورت کاملا رایگان!
پشتیبانی هانت لرن:
@huntlearn_support
https://huntlearn.com/courses/تیم-قرمز?show=webinar
در این ورکشاپ، افراد علاقه مند، ردتیمر و SOC میتوانند حضور پیدا کنند. لینک ورود به وبینار به صورت پابلیک قرار داده خواهد شد اما به افرادی که در سایت، توی وبینار ثبت نام کرده باشند به قید قرعه، چندین کتاب به انتخاب خود شخص، آفر شغلی و آموزشی و... داده خواهد شد👌🏻
به صورت کاملا رایگان!
پشتیبانی هانت لرن:
@huntlearn_support
Forwarded from Source Byte (t a h a)
https://web.archive.org/web/20240719160444/https://undocumented.ntinternals.net/
Xray(actually nudes) of windows internals
Xray(actually nudes) of windows internals
مقداری سوکت پروگرمینگ در لینوکس
فرض کنید بخوایم یه سرور بسازیم که دیتا رو از طریق tcp یا udp از چندتا کلاینت دریافت کنیم. به چه مراحلی نیاز خواهیم داشت؟
اول از همه باید یه سوکت بسازیم. سوکت توی لینوکس فقط یه فایله که لایه ابسترکشن حساب میشه. اینجوری که بعد از تنظیم و وصل کردن به آیپی کلاینت، اگه توش چیزی بنویسیم، عملا داریم به اون کلاینت دیتا رو منتقل میکنیم و اگه بخونیم، دیتایی رو میخونیم که اون کلاینت برای ما فرستاده
پس اولین مرحله میشه ساختن سوکت که با تابع socket از هدرفایل sys/socket.h صورت میگیره. مثلا اگه یه سوکت برای ارتباط tcp خواسته باشیم، کافیه خط زیر رو وارد کنیم
پارامتر اول تابع خانواده پروتکل مدنظرمون هست که اینجا برای IPv4 باید PF_INET باشه. پارامتر دوم نوع سوکت مدنظرمونه که اینجا برای tcp، مقدار SOCK_STREAM قرار داده شده. پارامتر آخر هم همیشه صفره(دقیق نمیدونم چیه)
خب. تا الان یه سوکت ساختیم
مرحله بعد اینه که این سوکت رو به یه آدرس آیپی و پورت وصل کنیم. برای اینکار باید توی سرور از تابع bind و توی کلاینت از connect استفاده کنیم. درواقع تابع بایند یه سوکت رو به یه آدرس لوکال مرتبط میکنه درحالیکه connect، سوکت رو به یه آدرس ریموت وصل میکنه. پروتوتایپ تابع connect به شکل زیر هست:
پروتوتایپ تابع بایند هم همین شکلی هست. نکتهای که باید اینجا موردتوجهمون باشه، sockaddr هست.
این استراکچر، یه فرمت عمومی برای آدرسدهی های مختلف توی پروتکلهای مختلف هست. یعنی آدرسهای ما توی هر پروتکلی باید نهایتا به پوینتری به این استراکچر تبدیل بشن.
اما برای پروتکل آیپی، استراکچر sockaddr_in رو داریم که دقیقا سایز یکسانی با sockaddr داره و شامل فیلدهای آیپی، پورت و پدینگ(برای رسیدن سایزش به سایز sockaddr میشه). پس کافیه از این استراکچر برای آدرسهامون استفاده کنیم و نهایتا موقع پاس دادنش به تابع connect، یه استاتیک کست ساده انجام بدیم.
نکته آخری که میمونه این هست که باید توی استراکچر sockaddr_in، پورت و آیپی به شکل big endian ذخیره بشن درحالیکه کامپایلرما little endian هست. برای این مورد هم یه سری تابع آماده داریم به اسمهای htons و inet_aton که در پستهای بعدی توضیح خواهم داد
ادامه دارد:)
#Linux
#Programming
#Network
فرض کنید بخوایم یه سرور بسازیم که دیتا رو از طریق tcp یا udp از چندتا کلاینت دریافت کنیم. به چه مراحلی نیاز خواهیم داشت؟
اول از همه باید یه سوکت بسازیم. سوکت توی لینوکس فقط یه فایله که لایه ابسترکشن حساب میشه. اینجوری که بعد از تنظیم و وصل کردن به آیپی کلاینت، اگه توش چیزی بنویسیم، عملا داریم به اون کلاینت دیتا رو منتقل میکنیم و اگه بخونیم، دیتایی رو میخونیم که اون کلاینت برای ما فرستاده
پس اولین مرحله میشه ساختن سوکت که با تابع socket از هدرفایل sys/socket.h صورت میگیره. مثلا اگه یه سوکت برای ارتباط tcp خواسته باشیم، کافیه خط زیر رو وارد کنیم
int file_desc = socket(PF_INET, SOCK_STREM, 0);
پارامتر اول تابع خانواده پروتکل مدنظرمون هست که اینجا برای IPv4 باید PF_INET باشه. پارامتر دوم نوع سوکت مدنظرمونه که اینجا برای tcp، مقدار SOCK_STREAM قرار داده شده. پارامتر آخر هم همیشه صفره(دقیق نمیدونم چیه)
خب. تا الان یه سوکت ساختیم
مرحله بعد اینه که این سوکت رو به یه آدرس آیپی و پورت وصل کنیم. برای اینکار باید توی سرور از تابع bind و توی کلاینت از connect استفاده کنیم. درواقع تابع بایند یه سوکت رو به یه آدرس لوکال مرتبط میکنه درحالیکه connect، سوکت رو به یه آدرس ریموت وصل میکنه. پروتوتایپ تابع connect به شکل زیر هست:
int connect (int fd, struct sockaddr* remote_addr, socklen_t* size)
پروتوتایپ تابع بایند هم همین شکلی هست. نکتهای که باید اینجا موردتوجهمون باشه، sockaddr هست.
این استراکچر، یه فرمت عمومی برای آدرسدهی های مختلف توی پروتکلهای مختلف هست. یعنی آدرسهای ما توی هر پروتکلی باید نهایتا به پوینتری به این استراکچر تبدیل بشن.
اما برای پروتکل آیپی، استراکچر sockaddr_in رو داریم که دقیقا سایز یکسانی با sockaddr داره و شامل فیلدهای آیپی، پورت و پدینگ(برای رسیدن سایزش به سایز sockaddr میشه). پس کافیه از این استراکچر برای آدرسهامون استفاده کنیم و نهایتا موقع پاس دادنش به تابع connect، یه استاتیک کست ساده انجام بدیم.
نکته آخری که میمونه این هست که باید توی استراکچر sockaddr_in، پورت و آیپی به شکل big endian ذخیره بشن درحالیکه کامپایلرما little endian هست. برای این مورد هم یه سری تابع آماده داریم به اسمهای htons و inet_aton که در پستهای بعدی توضیح خواهم داد
ادامه دارد:)
#Linux
#Programming
#Network
🔥2
نوشتن کل tcp/ip suite از ابتدا:
https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/
#Programming
#Network
https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/
#Programming
#Network
saminiir's hacker blog
Let's code a TCP/IP stack, 1: Ethernet & ARP
Writing your own TCP/IP stack may seem like a daunting task. Indeed, TCP has accumulated many specifications over its lifetime of more than thirty years. The core specification, however, is seemingly compact[^tcp-roadmap] - the important parts being TCP header…
Stuff for Geeks
مقداری سوکت پروگرمینگ در لینوکس فرض کنید بخوایم یه سرور بسازیم که دیتا رو از طریق tcp یا udp از چندتا کلاینت دریافت کنیم. به چه مراحلی نیاز خواهیم داشت؟ اول از همه باید یه سوکت بسازیم. سوکت توی لینوکس فقط یه فایله که لایه ابسترکشن حساب میشه. اینجوری که بعد…
مقداری سوکت پروگرمینگ در لینوکس
قسمت دوم
خب تا اینجا فهمیدیم که باید یه سوکت بسازیم (با تابع socket) و بعد از اون اگه کلاینت هستیم تابع connect و اگه سرور هستیم تابع bind رو با یه آدرس مناسب (یه متغیر از جنس sockaddr_in) صدا بزنیم تا سوکتمون که صرفا یه فایله، به یه آدرس ریموت یا لوکال وصل بشه.
نکتهای که آخر پست قبل بود، این بود که مقادیر ما big endian هستن توی توابع شبکه درحالیکه کامپایلر little endian هست. برای حل این مشکل یه سری تابع داریم.
اول از همه برای تبدیل اعداد صحیح، توابع زیر رو داریم که توی هدر arpa/inet.h تعریف شدن:
htonl(uint32_t longvalue)
یک عدد لانگ رو از لیتل اندین به بیگ اندین تبدیل میکنه (host to network long)
کافیه به جای l که مخفف لانگ هست و برای اعداد چهار بایتی استفاده میشه، s بذاریم که مخفف short هست و برای اعداد دوبایتی استفاده میشه تا به تابع htons برسیم.
همچنین میتونیم بجای hton از ntoh استفاده کنیم تا یه عدد big endian رو به little endian تبدیل کنیم.
(یادآوری: عدد یک پورت، یک عدد دوبایتی هست. یعنی عدد پرت میتونه از صفر تا ۶۵۵۳۵ باشه و برای همین باید برای تبدیل شماره پورت از تابع htons استفاده کنیم)
توابع مفید بعدیای که توی این هدر داریم، برای تبدیل یه استرینگ به آیپی ازشون استفاده میکنیم. تابع inet_aton، یه رشته اسکی که شامل یه آیپی جدا شده با نقطه هست رو میگیره و آیپی عددی مناسب برای استفاده توی sockaddr_in رو بهمون میده(ascii to network).
پس نهایتا تا الان میتونیم یه آدرس مناسب برای سوکتمون تعریف کنیم. مثلا فرض کنید من کلاینت هستم و قراره به یه سرور با آیپی 10.11.12.13 روی پورت 4050 وصل بشم.
متغیر sockaddr_in ای که نیاز خواهم داشت، به شکل زیر تعریف میشه:
و به این ترتیب، کلاینت ما به سرورمون وصل خواهد شد!
در ادامه درمورد نحوه ارسال و دریافت دیتا صحبت خواهیم کرد
ادامه دارد :)
#Linux
#Programming
#Network
قسمت دوم
خب تا اینجا فهمیدیم که باید یه سوکت بسازیم (با تابع socket) و بعد از اون اگه کلاینت هستیم تابع connect و اگه سرور هستیم تابع bind رو با یه آدرس مناسب (یه متغیر از جنس sockaddr_in) صدا بزنیم تا سوکتمون که صرفا یه فایله، به یه آدرس ریموت یا لوکال وصل بشه.
نکتهای که آخر پست قبل بود، این بود که مقادیر ما big endian هستن توی توابع شبکه درحالیکه کامپایلر little endian هست. برای حل این مشکل یه سری تابع داریم.
اول از همه برای تبدیل اعداد صحیح، توابع زیر رو داریم که توی هدر arpa/inet.h تعریف شدن:
htonl(uint32_t longvalue)
یک عدد لانگ رو از لیتل اندین به بیگ اندین تبدیل میکنه (host to network long)
کافیه به جای l که مخفف لانگ هست و برای اعداد چهار بایتی استفاده میشه، s بذاریم که مخفف short هست و برای اعداد دوبایتی استفاده میشه تا به تابع htons برسیم.
همچنین میتونیم بجای hton از ntoh استفاده کنیم تا یه عدد big endian رو به little endian تبدیل کنیم.
(یادآوری: عدد یک پورت، یک عدد دوبایتی هست. یعنی عدد پرت میتونه از صفر تا ۶۵۵۳۵ باشه و برای همین باید برای تبدیل شماره پورت از تابع htons استفاده کنیم)
توابع مفید بعدیای که توی این هدر داریم، برای تبدیل یه استرینگ به آیپی ازشون استفاده میکنیم. تابع inet_aton، یه رشته اسکی که شامل یه آیپی جدا شده با نقطه هست رو میگیره و آیپی عددی مناسب برای استفاده توی sockaddr_in رو بهمون میده(ascii to network).
پس نهایتا تا الان میتونیم یه آدرس مناسب برای سوکتمون تعریف کنیم. مثلا فرض کنید من کلاینت هستم و قراره به یه سرور با آیپی 10.11.12.13 روی پورت 4050 وصل بشم.
متغیر sockaddr_in ای که نیاز خواهم داشت، به شکل زیر تعریف میشه:
int socket_fd;
sockaddr_in serverAddr;
socket_fd=socket(PF_INET, SOCK_STREAM, 0);
memset(serverAddr, 0, sizeof(serverAddr));
serverAddr.sin_family=AF_INET; //inet addres family
serverAddr.sin_port=htons(4050);
serverAddr.sin_addr=inet_aton("10.11.12.13");
connect(socket_fd, (sockaddr_in*)&serverAddr, sizeof(serverAddr));
و به این ترتیب، کلاینت ما به سرورمون وصل خواهد شد!
در ادامه درمورد نحوه ارسال و دریافت دیتا صحبت خواهیم کرد
ادامه دارد :)
#Linux
#Programming
#Network
🔥2
Forwarded from Sisoog مرجع متن باز الکترونیک-سیسوگ
📌انواع پروتکل های شبکه و اینترنت (بخش اول) | قسمت هشتم مفاهیم شبکه و اینترنت در راهاندازی ماژول ESP8266
👈#سیسوگ
🖋 نویسنده: #حمیدرضا_روشنی
⏱ مدت مطالعه: 10 دقیقه
💭 مقدمه
از این که هفت قسمت با من همراه بودید، بسیار خوشحال هستم و امیدوارم تا اینجا خسته نشده باشید. شاید پیش خودتون بگید “عنوان این مقاله با محتوای این هشت قسمت فرق داره! چرا باید این مطالب را بخونم؟!” در جواب باید بگم شاید در ظاهر مطالب هفت قسمت گذشته و حتی این قسمت ربطی به ماژول ESP8266 نداشته باشند؛ ولی موقع راهاندازی و استفاده از این ماژول حتماً به موارد توضیح داده شده در این فصول برخواهید خورد و باید معانی و مفهوم اونها را بدونید.
✍️ خلاصه کلی
توی این قسمت سعی کردم هر نوع پروتکلی که (تا زمان نوشتن این مقاله) در شبکه محلی و یا شبکه اینترنت استفاده میشند و اسم اونها را زیاد میشنوید و در راه اندازی ESP8266 بدرد میخورند را توضیح بدم. البته این ماژول فقط چند پروتکل (اصلی و مهم) را پشتیبانی میکنه ولی سعی کردم خیلی جامعتر توضیح بدم.
⚠️ مطلب بالا، تنها خلاصه و کلیتی از اصل مقاله است، مقاله کامل را می توانید در وب سایت سیسوگ (ادامه مطلب) مطالعه فرمایید.
👈🏻 ادامه مطلب
📣 عضویت در کانال تلگرام سیسوگ
👈#سیسوگ
🖋 نویسنده: #حمیدرضا_روشنی
⏱ مدت مطالعه: 10 دقیقه
💭 مقدمه
از این که هفت قسمت با من همراه بودید، بسیار خوشحال هستم و امیدوارم تا اینجا خسته نشده باشید. شاید پیش خودتون بگید “عنوان این مقاله با محتوای این هشت قسمت فرق داره! چرا باید این مطالب را بخونم؟!” در جواب باید بگم شاید در ظاهر مطالب هفت قسمت گذشته و حتی این قسمت ربطی به ماژول ESP8266 نداشته باشند؛ ولی موقع راهاندازی و استفاده از این ماژول حتماً به موارد توضیح داده شده در این فصول برخواهید خورد و باید معانی و مفهوم اونها را بدونید.
✍️ خلاصه کلی
توی این قسمت سعی کردم هر نوع پروتکلی که (تا زمان نوشتن این مقاله) در شبکه محلی و یا شبکه اینترنت استفاده میشند و اسم اونها را زیاد میشنوید و در راه اندازی ESP8266 بدرد میخورند را توضیح بدم. البته این ماژول فقط چند پروتکل (اصلی و مهم) را پشتیبانی میکنه ولی سعی کردم خیلی جامعتر توضیح بدم.
⚠️ مطلب بالا، تنها خلاصه و کلیتی از اصل مقاله است، مقاله کامل را می توانید در وب سایت سیسوگ (ادامه مطلب) مطالعه فرمایید.
👈🏻 ادامه مطلب
📣 عضویت در کانال تلگرام سیسوگ
سیسوگ
انواع پروتکل های شبکه و اینترنت (بخش اول) | قسمت هشتم مفاهیم شبکه و اینترنت در راهاندازی ماژول ESP8266 - سیسوگ
نواع پروتکلهایی که به طریقی شما با آنها در کار با شبکه یا وب سروکار خواهید داشت در اینجا بهصورت دستهبندیشده توضیح میدهیم.