Stuff for Geeks
158 subscribers
181 photos
38 videos
178 files
575 links
Admin: @the_mhbr
Download Telegram
آیا std::endl و کارکتر newline با کد اسکی ۱۰ با هم تفاوتی دارند؟
Anonymous Quiz
75%
بله
25%
خیر
Forwarded from Source Chat (Friend)
Please open Telegram to view this post
VIEW IN TELEGRAM
دوستان سایت هانت‌لرن که تازه راه افتاده یه سه چهارتا دوره گذاشته که بعضا رایگانن
مثلا دوره javascript for hunters داره که رایگانه

دوست داشتین ثبت نام کنین
huntlearn.com
🫡2
این چه سمیه؟؟
https://sarkwt.persiangig.com/
Forwarded from HuntLearn
ورکشاپ مقدمه‌ای بر ردتیم و شبیه سازی APT38؛ با تدریس استاد هاشمی (⁦ @soheilsec ⁩ ). مقدمه‌ای از پایه ردتیم و پایه‌ای ترین توضیحات و سپس پیاده سازی APT38 برای درک بهتر و بیشتر. و ارائه راهکار‌های دفاعی در تمامی مراحل.


https://huntlearn.com/courses/تیم-قرمز?show=webinar


در این ورکشاپ، افراد علاقه مند، ردتیمر و SOC میتوانند حضور پیدا کنند. لینک ورود به وبینار به صورت پابلیک قرار داده خواهد شد اما به افرادی که در سایت، توی وبینار ثبت نام کرده باشند به قید قرعه، چندین کتاب به انتخاب خود شخص، آفر شغلی و آموزشی و... داده خواهد شد👌🏻


به صورت کاملا رایگان!

پشتیبانی هانت لرن:
@huntlearn_support
Forwarded from Source Byte (t a h a)
مقداری سوکت پروگرمینگ در لینوکس

فرض کنید بخوایم یه سرور بسازیم که دیتا رو از طریق 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
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 ای که نیاز خواهم داشت، به شکل زیر تعریف میشه:
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
ایشالا که IrLeaks داره دروغ میگه🎃
پ.ن: پیامو پاک کردن
😁1
📌انواع پروتکل های شبکه و اینترنت (بخش اول) | قسمت هشتم مفاهیم شبکه و اینترنت در راه‌اندازی ماژول ESP8266
👈#سیسوگ
🖋 نویسنده: #حمیدرضا_روشنی
مدت مطالعه: 10 دقیقه


💭 مقدمه
از این که هفت قسمت با من همراه بودید، بسیار خوشحال هستم و امیدوارم تا اینجا خسته نشده باشید. شاید پیش خودتون بگید “عنوان این مقاله با محتوای این هشت قسمت فرق داره! چرا باید این مطالب را بخونم؟!” در جواب باید بگم شاید در ظاهر مطالب هفت قسمت گذشته و حتی این قسمت ربطی به ماژول ESP8266 نداشته باشند؛ ولی موقع راه‌اندازی و استفاده از این ماژول حتماً به موارد توضیح داده شده در این فصول برخواهید خورد و باید معانی و مفهوم اونها را بدونید.


✍️ خلاصه کلی
توی این قسمت سعی کردم هر نوع پروتکلی که (تا زمان نوشتن این مقاله) در شبکه محلی و یا شبکه اینترنت استفاده میشند و اسم اونها را زیاد می‌شنوید و در راه ­اندازی ESP8266 بدرد می­خورند را توضیح بدم. البته این ماژول فقط چند پروتکل (اصلی و مهم) را پشتیبانی میکنه ولی سعی کردم خیلی جامع­تر توضیح بدم.


⚠️ مطلب بالا، تنها خلاصه و کلیتی از اصل مقاله است، مقاله کامل را می توانید در وب سایت سیسوگ (ادامه مطلب) مطالعه فرمایید.


👈🏻 ادامه مطلب

📣 عضویت در کانال تلگرام سیسوگ