PDA

View Full Version : برنامه نویسی raw socket با winasm



veria
جمعه 20 خرداد 1384, 21:15 عصر
کسی تجربه کار روی raw socket با winasm رو داره. در واقع دنبال کسی میگردم که تو این زمینه با هم تبادل تجربه داشته باشیم.

Inprise
جمعه 20 خرداد 1384, 22:36 عصر
سوالاتت رو بپرس ؛ جواب خواهی گرفت .

veria
شنبه 21 خرداد 1384, 13:29 عصر
بسیار خوب.
به نظر TCP SYN port scanning برای شروع خوب باشه. کدهای خوب زیادی به زبان C در این مورد وجود داره. اما با masm32 تا حالا هیچ کد موفقی ندیدم. تمام تلاشهای خودم هم در این باره به جایی نرسیده.
http://board.win32asmcommunity.net/index.php?topic=19691.0
شما تا به حال تجربه موفقی در این زمینه داشتی؟

Inprise
شنبه 21 خرداد 1384, 14:13 عصر
اگر منظورت اینه که این رو با اسمبلی نوشته باشم یا وقت ی برای نوشتنش داشته باشم جواب منفیه . لیکن اگر منظور اینه که میخای بنویسی و یه جائی یا جاهائی مشکل داری میتونی بنویسی تا حلش کنیم .

موفق باشی

veria
شنبه 21 خرداد 1384, 16:50 عصر
لینک تلاشهای قبلیم رو تو این زمینه تو post قبلی آوردم. لطفا اول اونو ببینید:
http://board.win32asmcommunity.net/index.php?topic=19691.0

Inprise
شنبه 21 خرداد 1384, 18:48 عصر
فرصت خوندن کدت رو پیدا نکردم ؛ لیکن یک سوال : آیا روی ویندوز اکس پی محیط توسعه ات SP2 نصب کردی ؟

veria
شنبه 21 خرداد 1384, 19:05 عصر
یک سوال : آیا روی ویندوز اکس پی محیط توسعه ات SP2 نصب کردی ؟

نه همیشه. به این موضوع آگاه هستم که raw socket همراه با محدودیتهایی هست که با نسخه های متفاوت ویندوز اعمال میشه. از جمله در مورد مساله packet capturing که در مورد ویندوز xp/sp2 محدودیتی در مورد به دام انداختن پاکتهای ارسالی اعمال میشه یا مثالهایی از این قبیل. ولی مساله اساسی اینه که تا به حال نتیجه مطلوبی از تلاشهام نگرفتم، روی تمام نسخه های xp.

Inprise
شنبه 21 خرداد 1384, 19:17 عصر
اصولا" روی SP2 امکان ایجاد Raw Socket وجود نداره : با استفاده از WinSock ؛ و اگر بر اینکار اصرار داشته باشی باید یکی دو جا رو دستکاری کنی .

کدت رو بعدا" میخونم لیکن فکر میکنم مشکلت به کد اسمبلی ات مربوطه و نه دسترسی به توابع سوکت و ...کتابخانه ها و غیرهم .

veria
شنبه 21 خرداد 1384, 19:48 عصر
ممنونت میشم اگه مشکلات کد رو به من بگی. اما در مورد مساله محدودیت های sp2:
مطمئن نیستم که مرز این محدودیتها چقدره. تا اونجایی که می دونم pinger ای که بر مبنای raw socket نوشته شده بود روی sp2 جواب داد و همین طور روی windows .net server 2003.
اما در مورد روشی که میشه با دستکاری تنظیمات، محدودیتها رو بر طرف کرد چیزی نمی دونم. در این مورد اگه اطلاعاتی داری، ممنونت میشم که منو در جریان بگذاری.

Inprise
شنبه 21 خرداد 1384, 22:33 عصر
Ping ارتباطی با Raw Socket نداره . پینگ در واقع یکی از ساب ستهای ICMP است و اصولا" تو بحث سوکت مطرح نیست . محدودیتهای اعمال شده در SP2 دقیقا برای محدود کردن Syn و ACK Flooding ای که کدهای مخرب پس از انتشار ایجاد میکنند و باعث حملات وسیع DDOS میشه در نظر گرفته شده . نتیجتا" بصورت پیش فرض حق ایجاد Raw Socket با استفاده از WinSock رو نداری ( بگذریم از اینکه برای چنین مقاصدی اصولا" WinSock مناسب نیست و استفاده از Packet Driver هائی مثل WinPcap معقولتره )

روش حذف محدودیت قبلا مطرح شده و میتونی با جستجو روی فروم پیداش کنی .

فعلا .

veria
یک شنبه 22 خرداد 1384, 09:46 صبح
Ping رو میشه با raw socket و سر هم بندی هدرهای IP و ICMP از جمله TTL و غیره پیاده سازی کرد.

veria
یک شنبه 22 خرداد 1384, 17:47 عصر
به هر حال ممکنه محدودیتهای اعمالی باعث شده که سر هم بندی یه پاکت TCP نتیجه مطلوب رو نده. اما به هر حال دوست دارم اشکالات احتمالی کد خودم رو در این مورد بدونم.
در ضمن می خوام بدونم که TCP SYN scanning رو با زبانهای دیگه مثل C روی WIN XP با سرویس پک های مختلف یا بدون سرویس پک، قبلا امتحان کردید و نتیجه هر کدم از اونها چی بوده؟

Inprise
یک شنبه 22 خرداد 1384, 17:56 عصر
Ping رو میشه با raw socket و سر هم بندی هدرهای IP و ICMP از جمله TTL و غیره پیاده سازی کرد
مرسی بخاطر تعریف پینگ !


به هر حال ممکنه محدودیتهای اعمالی باعث شده که سر هم بندی یه پاکت TCP نتیجه مطلوب رو نده
جواب قبلی ام واضح بود . روی SP2 امکان ایجاد یک Raw IP Socket وجود نداره ؛ همین .


در ضمن می خوام بدونم که TCP SYN scanning رو با زبانهای دیگه مثل C روی WIN XP با سرویس پک های مختلف یا بدون سرویس پک، قبلا امتحان کردید و نتیجه هر کدم از اونها چی بوده؟

من یک اسکنر کامل با دلفی نوشته ام که به عنوان Packet Driver از WinPcap استفاده میکنه و روی ویندوزهای پس از 2000 بدون مشکل کار میکنه . قاعدتا" هدفم خلق مجدد چرخ نبود و این اسکنر بخشی از یک راه حل بزرگتر است که به موضوع بحث مرتبط نیست لیکن توصیه میکنم از WinSock2 فقط برای تبادلات Application-Level استفاده کنی .

veria
یک شنبه 22 خرداد 1384, 18:38 عصر
Ping ارتباطی با Raw Socket نداره .

مرسی بخاطر تعریف پینگ !
به هر حال قصد بر این بود که وجود ارتباط و همین طور امکان ایجاد پاکت Ping رو با raw socket یاد آوری کنم نه چیز دیگه.


جواب قبلی ام واضح بود . روی SP2 امکان ایجاد یک Raw IP Socket وجود نداره ؛ همین .
من هنوز روی سرویس پک 1 هم هیچ کد C رو با winsock امتحان نکردم. صرفا تو محیط لینوکس جواب گرفتم. تاکیدم بیشتر روی درستی کدیه که روش کار کردم.

از اینکه جواب دادی به سوالاتم ممنونم. اما در مورد winpcap، هیچ وقت دوست ندارم با چیزی کار کنم که تا پایین ترین حد روش کنترل ندارم. به همین خاطره که تا حالا از کار با winpcap طفره رفتم. نمی دونم از عهده نوشتن یه ndis یا tdi kmd بر میام یا نه. ولی چیزی که مشخصه خیلی کار می بره. به هر حال امیدوارم اگه کسی فرصت و علاقه این کار رو داشت بتونیم رو این قضیه هم فکری و تبادل تجربه داشته باشیم.

Inprise
یک شنبه 22 خرداد 1384, 18:50 عصر
اما در مورد winpcap، هیچ وقت دوست ندارم با چیزی کار کنم که تا پایین ترین حد روش کنترل ندارم. به همین خاطره که تا حالا از کار با winpcap طفره رفتم

WinPcap سورس آزاد است ؛ کنترلهای متعددی هم برای تسریع توسعه مبتنی بر اون موجوده ، همچنین نمونه کد و برنامه های نمایشی متعدد . PCap که والد WinPcap روی لینوکس است هم همینطور ؛


نمی دونم از عهده نوشتن یه ndis یا tdi kmd بر میام یا نه. ولی چیزی که مشخصه خیلی کار می بره

در مورد کاری که میخواهی انجام بدی چیزی نمیدونم لیکن تولید Raw IP Socket یا دستکاری هدر بسته های IP و ارسال اونها و امثالهم چیزی نیست که به حوزهء NDIS و درایورهای سطح کرنل مربوط باشه .

Inprise
یک شنبه 22 خرداد 1384, 19:08 عصر
راستی یک زمانی از LibnetNT استفاده کردم و خیلی خوب هم جواب داد ؛ شاید بتونه به تو هم کمک کنه .

http://www.eeye.com/html/Research/Tools/libnetnt.html