نمایش نتایج 1 تا 5 از 5

نام تاپیک: تجزيه httpHeader از ارتباطي با پروتكل tcp

  1. #1

    تجزيه httpHeader از ارتباطي با پروتكل tcp

    وقتتون بخير

    در يك كانكشن با پروتكل tcp ميخوايم از ابتداي اولين پاكت كه در اون http header حاوي فيلد هاي http response هست فيلد host در http header رو به دست بياريم اما اين فيلد در http request وجود داره و اين response جواب درخواست هست ، چون با raw socket داريم پاكت ها رو دريافت ميكنيم ، پيشنهاد شما براي به دست آوردن , host ,uri چيه؟

    نمونه زير از http response هست كه با گوش دادن به اولين پاكت دريافت شده داريمش كه همونطور كه ميبينيد ابتداي اون http header هست

    "\b\n???\0\f??HTTP/1.1 200 OK\r\nDate: Sat, 07 Jul 2012 12:39:03 GMT\r\nExpires: -1\r\nCache-Control: private, max-age=0\r\nContent-Type: text/html; charset=UTF-8\r\nServer: gws\r\nX-XSS-Protection: 1; mode=block\r\nX-Frame-Options: SAMEORIGIN\r\nContent-Length: 25422\r\nConnection: Keep-Alive\r\nContent-Encoding: gzip\r\n\r\n?\b\0\0\0\0\0???y{???8?>???8bM??/Rh??8K?6I????pmJ?I?K}?w\v\t???4=????uCa\f?`0 ???]7v???kM?i??\0??0???'??N??\"??M?<mnf????N??x?; x ????`????????????#?3i??u??{?k?3?N?$??'???,h?{ vx2\b????????Efnk?^??,??\b?%YkJf??,???D-?#?<??V?&^??.?y?!?wA?<?l?OH???S???\tf\bTt???L?X ??9i? MZ?\b?8v??v?g?%I?*\vi??D???%??'g!????N2\v }????J?`??0\"????????Z???#mx?|??y???c??O????z hF????g?&????-{|>\t#?M????I\a??y???[[k???????t??@LBR(??????\a?:k???1Z:@??@??,?\a?dG? C?5??NY?m???4N>????????????v????7???n??o????6? ??cn????nw?;4\a??A?Vw\b????'???-???\vWV?? ?|2??t?5?L#?>?r????@?= ??????4#?^???3????ul??\0???F\aR???k\\??/?????Z?\b?I'r\fB???????g^????Fg?????%??z??{?? ????1?Z?8??w??5???N??????t??0u????9cP6l{?\t\f,?? 7m3?fG??`?????5\a??:Y???C[????????????? ?k??L??H?I'????kk?rT[????h5`y???W?_k???(??E?:?`???br?^????1?????P??? ???????S??i(????#+O???????c???\0bk???x?Z????g?? ?????d:??????td??\f??Hsv?]s???}?????|?v??\v?]\nZ.??N?Z?!P?E+f??%????u?';????8???e?1?9??? mS?cu\rg?X?5?j?f;?\tgI??|?G?C0&?2?/~2??B???~?~??h???I?~??????c?$???V??:?<???{ I??DZv?/?"


    نكته ديگه اينكه وقتي اين يا هر response رو utf8.getstring و يا ascii.getstring ميگيريم كد هاي بهم ريخته ديكُد نميشه

    مرسي ، لطفاً پيشنهادتون رو بگيد

  2. #2

    نقل قول: تجزيه httpHeader از ارتباطي با پروتكل tcp

    دوستان كلاسي براي تجزيه http header نداريد؟

  3. #3

    نقل قول: تجزيه httpHeader از ارتباطي با پروتكل tcp

    دوستان اين ارتباط از طريق browser هست كه وقتي يك آدرس رو ميزنه header response رو ميخوايم كه دامين هم توشه.

  4. #4
    کاربر دائمی آواتار Saeed_m_Farid
    تاریخ عضویت
    تیر 1386
    محل زندگی
    فضای تهی میان دیوارها
    سن
    44
    پست
    1,046

    نقل قول: تجزيه httpHeader از ارتباطي با پروتكل tcp

    سلام
    دوست عزیز، می‌دونم از دست من شاکی هستی (چون تاپیک قبلی رو نصفه کاره ول کردی اومدی اینجا) ولی فکر کنم حرف بدی نزدم و صحبت‌ام فقط اینه که اگه درست سوال بپرسین، زودتر و بهتر جواب می‌گیرین. پس بنظرم بهتره نه خودتون رو گیج کنید، نه دیگران رو؛ خیلی از مواردی که تو تاپیک‌هاتون ذکر می‌کنید فقط شامل برداشت‌های اشتباه / بی‌معنی فنی هستند، چرا؟
    نقل قول نوشته شده توسط youngold مشاهده تاپیک

    1. در يك كانكشن با پروتكل tcp ميخوايم از ابتداي اولين پاكت كه در اون http header حاوي فيلد هاي http response هست فيلد host در http header رو به دست بياريم اما اين فيلد در http request وجود داره و اين response جواب درخواست هست
    2. چون با raw socket داريم پاكت ها رو دريافت ميكنيم ، پيشنهاد شما براي به دست آوردن , host ,uri چيه؟
    3. نكته ديگه اينكه وقتي اين يا هر response رو utf8.getstring و يا ascii.getstring ميگيريم كد هاي بهم ريخته ديكُد نميشه
    1. اونجا هم گفتم، وقتی دارید در لایه Application کار می‌کنید، دیگه با لایه‌های پایین‌تر نباید کار داشته باشید: قبول! شما از TCP استفاده می‌کنید، ولی وقتی درخواست Http می‌فرستید دیگه معلومه روی چی سوار هستید و نیاز نیست خودتون رو با اون لایه درگیر کنید (مگر اینکه قصدتون نوشتن پورت اسکنر و DDOS و ... باشه که کار خوبی نیستن!)، چون فقط باعث سردرگمی بیشترتون میشه؛ بعنوان نمونه در Responses ما چیزی بنام Host نداریم! پس جای غلطی دارید دنبال Host می‌گردین، ضمناً به Resource های پروتکل HTTP پکت نمی‌گن، اصطلاحاً متدها یا verbs نامیده میشن که شامل نه مِتُد (HEAD، GET، POST، PUT، DELETE، TRACE، OPTIONS، CONNECT، PATCH) هست و ما عموماً با GET / POST کار می‌کنیم (پروتکل باینری نیست که لازم باشه اسامی عجیب غریب روش بذاریم، پکت، دیتاگرام و ... بنا به برداشت من، معمولاً به واحدهای اطلاعاتی شامل مقادیر باینری اطلاق میشه)
    2. شما نمی‌تونید برای ویندوزهای معمول و درشرایط عادی با Raw Sockets کار کنید! در Windows Vista، Windows XP-SP3، Windows XP-SP2 و Windows 7 ارسال و دریافت اطلاعات روی Raw Sockets محدود شده، مگر اینکه فقط از ویندوزهای عهد بوقی یا نسخه های سرور استفاده کنید[1]
    3. وقتی دات نت، اینقدر کلاس آماده و کامل (WebRequest و HttpWebRequest و HttpWebResponse) برای اینکار در دسترس شما قرار داده، اینکار کاملاً غیراصولی و اشتباه هست! کسی که میخواد Header یه پروتکل رو decode کنه، باید خود پروتکل رو بنظر من حفظ باشه، اونهم پروتکل ساده‌ای مثل HTTP ...

    پیشنهاد: مطالعه لینک زیر رو برای آموزش گام به گام برای کارهای فضولی! داخلی و Header پروتکل ها و ... پیشنهاد می‌کنم:

    __________________________
    [1]
    : جهت جلوگیری از برنامه های Port scanner و استفاده های مخرب برای چیزایی مثل SharpPcap و ... کلاً در ویندوزهای دسکتاپ، آب رو از ورودی بستن! مطابق با بند آخر این مقاله MSDN:

    Limitations on Raw Sockets

    On Windows 7, Windows Vista, Windows XP with Service Pack 2 (SP2), and Windows XP with Service Pack 3 (SP3), the ability to send traffic over raw sockets has been restricted in several ways


    • TCP data cannot be sent over raw sockets.
    • UDP datagrams with an invalid source address cannot be sent over raw sockets. The IP source address for any outgoing UDP datagram must exist on a network interface or the datagram is dropped. This change was made to limit the ability of malicious code to create distributed denial-of-service attacks and limits the ability to send spoofed packets (TCP/IP packets with a forged source IP address).
    • A call to the bind function with a raw socket for the IPPROTO_TCP protocol is not allowed. Note The bind function with a raw socket is allowed for other protocols (IPPROTO_IP, IPPROTO_UDP, or IPPROTO_SCTP, for example).

    These above restrictions do not apply to Windows Server 2008 R2, Windows Server 2008 , Windows Server 2003, or to versions of the operating system earlier than Windows XP with SP2.

    Note The Microsoft implementation of TCP/IP on Windows is capable of opening a raw UDP or TCP socket based on the above restrictions. Other Winsock providers may not support the use of raw sockets.
    There are further limitations for applications that use a socket of type SOCK_RAW. For example, all applications listening for a specific protocol will receive all packets received for this protocol. This may not be what is desired for multiple applications using a protocol. This is also not suitable for high-performance applications. To get around these issues, it may be required to write a Windows network protocol driver (device driver) for the specific network protocol. On Windows Vista and later, Winsock Kernel (WSK), a new transport-independent kernel mode Network Programming Interface can be used to write a network protocol driver. On Windows Server 2003 and earlier, a Transport Driver Interface (TDI) provider and a Winsock helper DLL can be written to support the network protocol. The network protocol would then be added to the Winsock catalog as a supported protocol. This allows multiple applications to open sockets for this specific protocol and the device driver can keep track of which socket receives specific packets and errors. For information on writing a network protocol provider, see the sections on WSK and TDI in the Windows Driver Kit (WDK).

  5. #5

    نقل قول: تجزيه httpHeader از ارتباطي با پروتكل tcp

    اينقدر هم كه گفتي پيچيده نبود حلش كردم از دست بي خوابي ...
    كافي بود ميگفتي همون httpHeader توي محتوا بسته ها (كه به مرورگر ميره و مياد) هست !
    مسئله بسيار ساده اي بود!
    البته خيلي وقت از زدن اين تاپيك گذشت ولي باز گفتم نتيجه رو بگم كسي ديگه تاپيك رو ميخونه متوجه بشه چي شد
    آخرین ویرایش به وسیله youngold : سه شنبه 30 آبان 1391 در 11:44 صبح

تاپیک های مشابه

  1. بخش دوم مقاله TCP/IP
    نوشته شده توسط الهام تفریشی در بخش شبکه و Networking‌
    پاسخ: 7
    آخرین پست: دوشنبه 24 مرداد 1390, 07:35 صبح
  2. سوال: پروتكل TCP
    نوشته شده توسط baghmalek در بخش شبکه و Networking‌
    پاسخ: 2
    آخرین پست: سه شنبه 01 اردیبهشت 1388, 12:57 عصر
  3. مقدمه ای از TCP/IP
    نوشته شده توسط الهام تفریشی در بخش شبکه و Networking‌
    پاسخ: 24
    آخرین پست: چهارشنبه 20 آذر 1387, 09:25 صبح
  4. قسمت سوم پروتکل TCP/IP
    نوشته شده توسط الهام تفریشی در بخش شبکه و Networking‌
    پاسخ: 0
    آخرین پست: شنبه 17 آبان 1382, 08:53 صبح
  5. TCP/IP and RS232
    نوشته شده توسط RezaBS در بخش توسعه نرم افزارهای تحت شبکه
    پاسخ: 11
    آخرین پست: جمعه 15 فروردین 1382, 22:42 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •