| HPING2(8) | System Manager's Manual | HPING2(8) |
نام (NAME)
hping2 - ارسال (تقریباً) هرگونه بسته سفارشی TCP/IP به میزبانهای شبکه
خلاصه دستور (SYNOPSIS)
hping2 [ -hvnqVDzZ012WrfxykQbFSRPAUXYjJBuTG ] [ -c count ] [ -i wait ] [ --fast ] [ -I interface ] [ -9 signature ] [ -a host ] [ -t ttl ] [ -N ip id ] [ -H ip protocol ] [ -g fragoff ] [ -m mtu ] [ -o tos ] [ -C icmp type ] [ -K icmp code ] [ -s source port ] [ -p[+][+] dest port ] [ -w tcp window ] [ -O tcp offset ] [ -M tcp sequence number ] [ -L tcp ack ] [ -d data size ] [ -E filename ] [ -e signature ] [ --icmp-ipver version ] [ --icmp-iphlen length ] [ --icmp-iplen length ] [ --icmp-ipid id ] [ --icmp-ipproto protocol ] [ --icmp-cksum checksum ] [ --icmp-ts ] [ --icmp-addr ] [ --tcpexitcode ] [ --tcp-timestamp ] [ --tr-stop ] [ --tr-keep-ttl ] [ --tr-no-rtt ] [ --rand-dest ] [ --rand-source ] [ --beep ] hostname
توضیحات (DESCRIPTION)
دستور hping2 یک ابزار شبکه است که قادر به ارسال بستههای سفارشی TCP/IP و نمایش پاسخهای هدف همانند برنامه ping با پاسخهای ICMP است. hping2 تکهتکهسازی (fragmentation)، بدنه و اندازه دلخواه بستهها را مدیریت میکند و میتواند برای انتقال فایلهای کپسولهشده تحت پروتکلهای پشتیبانیشده به کار رود. با استفاده از hping2 میتوانید دستکم کارهای زیر را انجام دهید:
- آزمایش
قوانین
دیواره آتش
(firewall)
- پویش
پیشرفته
درگاهها (port
scanning)
- آزمایش
کارایی
شبکه با
استفاده از
پروتکلهای
مختلف،
اندازه
بسته، TOS (نوع
سرویس) و
تکهتکهسازی.
- کشف MTU مسیر (Path MTU
discovery)
- انتقال
فایلها
حتی از میان
سختگیرانهترین
قوانین
دیواره آتش.
- عملکردی
مشابه traceroute تحت
پروتکلهای
گوناگون.
- کاربردی
مشابه
ابزار Firewalk.
-
انگشتنگاری
از راه دور
سیستمعامل
(OS fingerprinting).
- ممیزی و
ارزیابی
پشته TCP/IP.
- و بسیاری
موارد
دیگر.
این ابزار همچنین یک ابزار آموزشی عالی برای یادگیری TCP/IP است. برنامه hping2 توسط antirez@invece.org توسعه یافته و نگهداری میشود و تحت مجوز GPL نسخه ۲ منتشر شده است. فرآیند توسعه باز است، بنابراین میتوانید بدون هیچ مانعی وصلهها، پیشنهادات و انتقادات خود را ارسال کنید.
سایت HPING (HPING SITE)
سایت اصلی در http://www.hping.org. میتوانید نسخه پایدار و دستورالعملهای بارگیری آخرین کد منبع را در http://www.hping.org/download.html بیابید.
گزینههای پایه (BASE OPTIONS)
- -h --help
- نمایش صفحه راهنما در خروجی استاندارد، به طوری که بتوانید آن را به less هدایت (pipe) کنید.
- -v --version
- نمایش اطلاعات نسخه و رابط برنامهنویسی (API) استفادهشده برای دسترسی به لایه پیوند داده، linux sock packet یا libpcap.
- -c --count count
- توقف پس از ارسال (و دریافت) count بسته پاسخ. پس از ارسال آخرین بسته، hping2 به مدت COUNTREACHED_TIMEOUT ثانیه منتظر پاسخهای میزبان هدف میماند. شما میتوانید مقدار COUNTREACHED_TIMEOUT را با ویرایش hping2.h تنظیم کنید.
- -i --interval
- مدت زمان مشخصشده بر حسب ثانیه یا میکروثانیه بین ارسال هر بسته را درنگ میکند. --interval X مقدار wait را روی X ثانیه تنظیم میکند، و --interval uX مقدار wait را روی X میکروثانیه قرار میدهد. حالت پیشفرض، یک ثانیه درنگ بین هر بسته است. هنگام استفاده از hping2 برای انتقال فایل، تنظیم این گزینه به منظور افزایش نرخ انتقال بسیار حائز اهمیت است. حتی هنگام استفاده از hping2 برای انجام پویشهای idle/spoofing نیز باید این گزینه را تنظیم کنید؛ برای اطلاعات بیشتر به HPING2-HOWTO مراجعه نمایید.
- --fast
- نام مستعار برای -i u10000. ابزار hping تعداد ۱۰ بسته در هر ثانیه ارسال خواهد کرد.
- --faster
- نام مستعار برای -i u1. سریعتر از --fast ;) (اما نه به سرعتی که رایانه شما میتواند بستهها را ارسال کند، به دلیل طراحی مبتنی بر سیگنال).
- --flood
- ارسال بستهها با حداکثر سرعت ممکن، بدون توجه به نمایش پاسخهای دریافتی. این روش بسیار سریعتر از تعیین گزینه -i u0 است.
- -n --numeric
- فقط خروجی عددی؛ هیچ تلاشی برای یافتن نامهای نمادین (DNS lookup) برای آدرسهای میزبان انجام نخواهد شد.
- -q --quiet
- خروجی بیصدا. به جز خطوط خلاصه در زمان شروع و هنگام پایان، هیچ چیز دیگری نمایش داده نمیشود.
- -I --interface interface name
- بهطور پیشفرض در سیستمهای لینوکس و BSD، ابزار hping2 از رابط مسیریابی پیشفرض استفاده میکند. در سیستمهای دیگر یا زمانی که هیچ مسیر پیشفرضی وجود ندارد، hping2 از نخستین رابط غیر محلی (non-loopback) استفاده میکند. با این حال با استفاده از این گزینه میتوانید hping2 را مجبور به استفاده از رابط مورد نیاز خود کنید. نکته: نیازی به تعیین نام کامل نیست؛ برای نمونه -I et با eth0 ،ethernet0 ،myet1 و غیره مطابقت خواهد داشت. اگر هیچ رابطی مطابقت نداشته باشد، hping2 تلاش میکند از lo استفاده کند.
- -V --verbose
- فعالسازی
خروجی پرگو
(verbose).
پاسخهای TCP
به صورت زیر
نمایش داده
خواهند شد:
len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0 win=0 rtt=0.4 ms tos=0 iplen=40 seq=0 ack=1380893504 sum=2010 urp=0
- -D --debug
- فعالسازی حالت اشکالزدایی؛ این حالت زمانی که با hping2 دچار مشکل میشوید بسیار مفید است. با فعال بودن حالت اشکالزدایی، اطلاعات بیشتری در مورد تشخیص رابط، دسترسی به لایه پیوند داده، تنظیمات رابط، تجزیه گزینهها، تکهتکهسازی، پروتکل HCMP و موارد دیگر دریافت خواهید کرد.
- -z --bind
- اتصال کلیدهای ترکیبی CTRL+Z به طول عمر بسته (TTL) به طوری که بتوانید با یک یا دو بار فشردن CTRL+Z مقدار TTL بستههای خروجی را افزایش یا کاهش دهید.
- -Z --unbind
- لغو اتصال CTRL+Z تا بتوانید اجرای hping2 را متوقف کنید.
- --beep
- ایجاد صدای بوق به ازای هر بسته دریافتی منطبق (اما نه برای خطاهای ICMP).
انتخاب پروتکل (PROTOCOL SELECTION)
پروتکل پیشفرض TCP است. بهطور پیشفرض hping2 هدرهای TCP را بدون هیچ پرچم (flag) فعال، با اندازه پنجره (winsize) برابر با ۶۴ به درگاه شماره ۰ میزبان هدف ارسال میکند. این اغلب بهترین روش برای انجام یک 'ping مخفی' است و زمانی که هدف پشت دیواره آتشی باشد که بستههای ICMP را دور میاندازد بسیار کاربرد دارد. علاوه بر این، یک بسته TCP بدون پرچم (null-flag) به درگاه ۰ احتمال زیادی دارد که در گزارشها (logs) ثبت نشود.
- -0 --rawip
- حالت RAW IP؛ در این حالت hping2 هدر IP را به همراه دادههای اضافهشده توسط --signature و/یا --file ارسال میکند. همچنین گزینه --ipproto را ببینید که به شما امکان تنظیم فیلد پروتکل IP را میدهد.
- -1 --icmp
- حالت ICMP؛ بهطور پیشفرض hping2 یک درخواست بازتاب ICMP (echo-request) ارسال میکند. میتوانید با استفاده از گزینههای --icmptype --icmpcode نوع و کد ICMP دیگری را تنظیم کنید.
- -2 --udp
- حالت UDP؛ بهطور پیشفرض hping2 بستههای UDP را به درگاه ۰ میزبان هدف ارسال میکند. گزینههای قابل تنظیم برای هدر UDP به شرح زیر است: --baseport, --destport, --keep.
- -8 --scan
- حالت پویش (Scan
mode)؛ این
گزینه یک
آرگومان
دریافت
میکند که
گروههایی
از
درگاهها
را برای
پویش توصیف
میکند.
گروههای
درگاه با
کاما از هم
جدا
میشوند: یک
عدد تنها یک
درگاه را
مشخص
میکند،
بنابراین 1,2,3
یعنی
درگاههای
۱، ۲ و ۳.
محدودهها
با ساختار
شروع-پایان
مشخص
میشوند،
مانند 1-1000 که
به hping
میگوید
درگاههای
بین ۱ تا
۱۰۰۰ (شامل
خود آنها)
را پویش
کند. کلمه
ویژه all نام
مستعاری
برای 0-65535 است،
در حالی که
کلمه ویژه
known شامل
تمام
درگاههای
فهرستشده
در /etc/services
میباشد.
گروهها را میتوان با هم ترکیب کرد، بنابراین خط فرمان زیر درگاههای بین ۱ تا ۱۰۰۰ و درگاه ۸۸۸۸ و درگاههای فهرستشده در /etc/services را پویش میکند: hping --scan 1-1000,8888,known -S target.host.com
گروهها را میتوان با استفاده از نویسه ! به عنوان پیشوند نفی (کم) کرد، بنابراین خط فرمان زیر تمام درگاههایی را در محدوده 1-1024 که در /etc/services فهرست نشدهاند پویش میکند: hping --scan '1-1024,!known' -S target.host.com
به یاد داشته باشید که هرچند hping در این حالت بسیار شبیه به یک پورت اسکنر عمل میکند، اکثر سوییچهای hping همچنان رعایت میشوند؛ بنابراین برای نمونه جهت انجام پویش SYN باید گزینه -S را مشخص کنید، میتوانید اندازه پنجره TCP، مقدار TTL و کنترل تکهتکهسازی IP را مطابق معمول تغییر دهید و غیره. تنها تفاوت واقعی این است که رفتارهای استاندارد hping در قالب یک الگوریتم پویش کپسوله شدهاند.
نکته فنی: حالت پویش از طراحی دو فرآیندی با حافظه اشتراکی برای همگامسازی استفاده میکند. الگوریتم پویش هنوز کاملاً بهینه نیست، اما در حال حاضر بسیار سریع است.
راهنمایی: برخلاف بیشتر پویشگرها، hping اطلاعات جالبی در مورد بستههای دریافتی مانند شناسه IP (IP ID)، اندازه پنجره TCP (TCP win)، مقدار TTL و غیره نمایش میدهد؛ هنگام انجام پویش، بررسی این اطلاعات تکمیلی را فراموش نکنید! گاهی اوقات آنها جزئیات بسیار جالبی را نشان میدهند. - -9 --listen signature
- حالت شنود HPING2؛ با استفاده از این گزینه hping2 منتظر بستهای میماند که حاوی signature (امضا) باشد و محتوای پس از signature تا انتهای بسته را تخلیه (dump) میکند. برای مثال، اگر دستور hping2 --listen TEST بستهای را بخواند که حاوی 234-09sdflkjs45-TESThello_world باشد، عبارت hello_world را نمایش خواهد داد.
گزینههای مربوط به IP (IP RELATED OPTIONS)
- -a --spoof hostname
- استفاده از این گزینه برای تعیین یک آدرس جعلی مبدأ IP است؛ این گزینه تضمین میکند که هدف آدرس واقعی شما را به دست نیاورد. با این حال پاسخها به آدرس جعلشده فرستاده خواهند شد، بنابراین شما قادر به دیدن آنها نخواهید بود. برای آگاهی از نحوه انجام پویش جعلشده/بیکار (spoofed/idle scanning) به HPING2-HOWTO مراجعه کنید.
- --rand-source
- این گزینه حالت مبدأ تصادفی را فعال میکند. hping بستهها را با آدرس مبدأ تصادفی ارسال خواهد کرد. استفاده از این گزینه برای اعمال فشار (stress test) بر جداول وضعیت دیواره آتش و سایر جداول پویا بر پایه IP در پشتههای TCP/IP و نرمافزارهای دیواره آتش جالب است.
- --rand-dest
- این گزینه
حالت مقصد
تصادفی را
فعال
میکند. hping
بستهها را
به
آدرسهای
تصادفی به
دست آمده بر
اساس
قانونی که
به عنوان
میزبان هدف
تعیین
کردهاید،
ارسال
خواهد کرد.
شما باید یک
آدرس IP عددی
را به عنوان
میزبان هدف
مانند 10.0.0.x
مشخص کنید.
تمام موارد
x با یک عدد
تصادفی در
محدوده 0-255
جایگزین
خواهند شد.
بنابراین
برای به دست
آوردن
آدرسهای IP
اینترنتی
در کل فضای IPv4
میتوانید
از چیزی
شبیه به hping x.x.x.x
--rand-dest استفاده
کنید. اگر
مطمئن
نیستید که
قانون شما
چه نوع
آدرسهایی
را تولید
میکند،
سعی کنید از
سوییچ --debug
برای نمایش
هر آدرس
مقصد جدید
تولیدشده
استفاده
کنید. وقتی
این گزینه
فعال باشد،
بستههای
منطبق از
تمام
مقصدها
پذیرفته
خواهند شد.
هشدار: هنگامی که این گزینه فعال است، hping نمیتواند رابط خروجی مناسب را برای بستهها شناسایی کند، بنابراین باید از گزینه --interface برای انتخاب رابط خروجی مورد نظر استفاده کنید. - -t --ttl time to live
- با استفاده از این گزینه میتوانید مقدار TTL (طول عمر / time to live) بستههای خروجی را تنظیم کنید؛ احتمالاً از این گزینه همراه با گزینههای --traceroute یا --bind استفاده خواهید کرد. در صورت تردید دستور `hping2 some.host.com -t 1 --traceroute'. را امتحان کنید.
- -N --id
- تنظیم فیلد ip->id. مقدار پیشفرض id تصادفی است، اما اگر تکهتکهسازی فعال باشد و id مشخص نشده باشد، برابر با getpid() & 0xFF خواهد بود؛ پیادهسازی یک راهکار بهتر در فهرست کارهای آینده (TODO) قرار دارد.
- -H --ipproto
- تنظیم پروتکل IP در حالت RAW IP.
- -W --winid
- شناسه (id) در سیستمهای Windows* قبل از Win2k دارای ترتیب بایت متفاوتی است؛ اگر این گزینه فعال باشد، hping2 پاسخهای id این نسخههای ویندوز را به درستی نمایش میدهد.
- -r --rel
- نمایش تغییرات نسبی (increments) شناسه به جای خود id. برای اطلاعات بیشتر به HPING2-HOWTO مراجعه کنید. تغییرات نسبی به صورت id[N]-id[N-1] محاسبه نمیشوند، بلکه با استفاده از جبران بستههای از دست رفته محاسبه میگردند. برای اطلاعات بیشتر فایل relid.c را ببینید.
- -f --frag
- تقسیم بستهها به تکههای (fragment) بیشتر؛ این گزینه ممکن است برای آزمایش کارایی تکهتکهسازی پشتههای IP و همچنین آزمایش اینکه آیا یک فیلتر بسته آنقدر ضعیف است که بتوان با بستههای بسیار ریز از آن عبور کرد (روشی قدیمی)، مفید باشد. مقدار پیشفرض 'mtu مجازی' ۱۶ بایت است. همچنین گزینه --mtu را ببینید.
- -x --morefrag
- تنظیم پرچم More Fragments در IP؛ اگر میخواهید میزبان هدف خطای ICMP time-exceeded during reassembly (اتمام زمان در هنگام بازترکیب) ارسال کند، از این گزینه استفاده کنید.
- -y --dontfrag
- تنظیم پرچم Don't Fragment در IP؛ این گزینه میتواند برای انجام کشف MTU مسیر (MTU path discovery) استفاده شود.
- -g --fragoff fragment offset value
- تنظیم مقدار آفست تکه (fragment offset).
- -m --mtu mtu value
- تنظیم مقدار 'mtu مجازی' متفاوت با ۱۶ هنگام فعال بودن تکهتکهسازی. اگر اندازه بستهها بزرگتر از 'mtu مجازی' باشد، تکهتکهسازی بهطور خودکار فعال میشود.
- -o --tos hex_tos
- تنظیم نوع سرویس (Type Of Service - TOS)؛ برای اطلاعات بیشتر --tos help را امتحان کنید.
- -G --rroute
- ثبت مسیر (Record route). گزینه RECORD_ROUTE را در هر بسته ارسالی درج کرده و بافر مسیر بستههای برگشتی را نمایش میدهد. توجه داشته باشید که هدر IP تنها برای نه مسیر از این دست فضای کافی دارد. بسیاری از میزبانها این گزینه را نادیده میگیرند یا دور میاندازند. همچنین توجه داشته باشید که با استفاده از hping میتوانید حتی در صورتی که میزبان هدف ICMP را فیلتر کرده باشد از record route استفاده کنید. ثبت مسیر یک گزینه IP است نه یک گزینه ICMP، بنابراین میتوانید از گزینه record route حتی در حالتهای TCP و UDP نیز استفاده کنید.
گزینههای مربوط به ICMP (ICMP RELATED OPTIONS)
- -C --icmptype type
- تنظیم نوع ICMP؛ مقدار پیشفرض ICMP echo request است (به معنای فعال شدن --icmp نیز هست).
- -K --icmpcode code
- تنظیم کد ICMP؛ مقدار پیشفرض ۰ است (به معنای فعال شدن --icmp نیز هست).
- --icmp-ipver
- تنظیم نسخه IP هدر IP موجود در دادههای ICMP؛ مقدار پیشفرض ۴ است.
- --icmp-iphlen
- تنظیم طول هدر IP هدر IP موجود در دادههای ICMP؛ مقدار پیشفرض ۵ است (۵ کلمه ۳۲ بیتی).
- --icmp-iplen
- تنظیم طول بسته IP هدر IP موجود در دادههای ICMP؛ مقدار پیشفرض طول واقعی است.
- --icmp-ipid
- تنظیم شناسه (id) هدر IP موجود در دادههای ICMP؛ مقدار پیشفرض تصادفی است.
- --icmp-ipproto
- تنظیم پروتکل IP هدر IP موجود در دادههای ICMP؛ مقدار پیشفرض TCP است.
- --icmp-cksum
- تنظیم چکسام (checksum) مربوط به ICMP؛ مقدار پیشفرض چکسام معتبر است.
- --icmp-ts
- نام مستعار برای --icmptype 13 (جهت ارسال درخواستهای برچسب زمان / timestamp در ICMP).
- --icmp-addr
- نام مستعار برای --icmptype 17 (جهت ارسال درخواستهای ماسک آدرس / address mask در ICMP).
گزینههای مربوط به TCP/UDP (TCP/UDP RELATED OPTIONS)
- -s --baseport source port
- برنامه hping2 از درگاه مبدأ برای حدس زدن شماره توالی (sequence number) پاسخها استفاده میکند. این ابزار با یک شماره درگاه مبدأ پایه شروع کرده و این شماره را برای هر بسته ارسالی افزایش میدهد. هنگامی که بستهای دریافت میشود، شماره توالی را میتوان به صورت replies.dest.port - base.source.port محاسبه کرد. درگاه مبدأ پایه پیشفرض تصادفی است؛ با استفاده از این گزینه میتوانید عدد متفاوتی را تنظیم کنید. اگر نیاز دارید که درگاه مبدأ برای هر بسته ارسالی افزایش نیابد، از گزینه -k --keep استفاده کنید.
- -p --destport [+][+]dest port
- تنظیم درگاه مقصد؛ مقدار پیشفرض ۰ است. اگر نویسه '+' قبل از شماره درگاه مقصد قرار گیرد (مانند +1024)، درگاه مقصد به ازای هر پاسخ دریافتی افزایش خواهد یافت. اگر دو نویسه '+' قبل از شماره درگاه مقصد قرار گیرد (مانند ++1024)، درگاه مقصد به ازای هر بسته ارسالی افزایش مییابد. بهطور پیشفرض درگاه مقصد را میتوان به صورت تعاملی با استفاده از CTRL+z تغییر داد.
- --keep
- ثابت نگه داشتن درگاه مبدأ؛ برای اطلاعات بیشتر گزینه --baseport را ببینید.
- -w --win
- تنظیم اندازه پنجره TCP. مقدار پیشفرض ۶۴ است.
- -O --tcpoff
- تنظیم آفست جعلی دادههای TCP. مقدار معمول آفست داده tcphdrlen / 4 است.
- -M --tcpseq
- تنظیم شماره توالی (sequence number) در TCP.
- -L --tcpack
- تنظیم مقدار تأییدیه (ACK) در TCP.
- -Q --seqnum
- از این
گزینه
میتوان
برای
جمعآوری
شمارههای
توالی
تولیدشده
توسط
میزبان هدف
استفاده
کرد. این
کار زمانی
که
میخواهید
قابل
پیشبینی
بودن
شمارههای
توالی TCP را
تحلیل کنید
بسیار
کاربردی
است. نمونه
خروجی:
#hping2 win98 --seqnum -p 139 -S -i u1 -I eth0
HPING uaz (eth0 192.168.4.41): S set, 40 headers + 0 data bytes 2361294848 +2361294848 2411626496 +50331648 2545844224 +134217728 2713616384 +167772160 2881388544 +167772160 3049160704 +167772160 3216932864 +167772160 3384705024 +167772160 3552477184 +167772160 3720249344 +167772160 3888021504 +167772160 4055793664 +167772160 4223565824 +167772160
ستون اول شماره توالی را گزارش میدهد و ستون دوم اختلاف بین شماره توالی فعلی و قبلی را نشان میدهد. همانطور که مشاهده میکنید شمارههای توالی میزبان هدف قابل پیشبینی هستند.
- -b --badcksum
- ارسال بستهها با چکسام نادرست (bad checksum) در UDP/TCP.
- --tcp-timestamp
- فعالسازی گزینه برچسب زمان TCP (TCP timestamp) و تلاش برای حدس زدن بسامد بهروزرسانی برچسب زمان و مدت زمان روشن بودن سیستم راه دور (uptime).
- -F --fin
- تنظیم پرچم FIN در TCP.
- -S --syn
- تنظیم پرچم SYN در TCP.
- -R --rst
- تنظیم پرچم RST در TCP.
- -P --push
- تنظیم پرچم PUSH در TCP.
- -A --ack
- تنظیم پرچم ACK در TCP.
- -U --urg
- تنظیم پرچم URG در TCP.
- -X --xmas
- تنظیم پرچم Xmas در TCP.
- -Y --ymas
- تنظیم پرچم Ymas در TCP.
گزینههای عمومی (COMMON OPTIONS)
- -d --data data size
- تنظیم اندازه بدنه بسته. هشدار: با استفاده از --data 40 برنامه hping2 بستههای ۰ بایتی تولید نخواهد کرد، بلکه protocol_header+40 بایت تولید خواهد کرد. hping2 اطلاعات اندازه بسته را در خط اول خروجی به این صورت نمایش میدهد: HPING www.yahoo.com (ppp0 204.71.200.67): NO FLAGS are set, 40 headers + 40 data bytes
- -E --file filename
- استفاده از محتویات filename برای پر کردن دادههای بسته.
- -e --sign signature
- پر کردن نخستین signature length بایت از دادهها با signature. اگر signature length بزرگتر از اندازه داده باشد، پیام خطا نمایش داده خواهد شد. اگر اندازه داده را تعیین نکنید، hping از اندازه امضا به عنوان اندازه داده استفاده خواهد کرد. این گزینه میتواند با اطمینان همراه با گزینه --file filename استفاده شود، که در این حالت فضای باقیمانده داده با استفاده از filename پر خواهد شد.
- -j --dump
- تخلیه (dump) بستههای دریافتی به صورت شانزدهشانزدهی (hex).
- -J --print
- تخلیه نویسههای قابل چاپ بستههای دریافتی.
- -B --safe
- فعالسازی
پروتکل
ایمن؛ با
استفاده از
این گزینه
بستههای
از دست رفته
در انتقال
فایل
دوباره
ارسال
خواهند شد.
به عنوان
مثال جهت
ارسال فایل
/etc/passwd از
میزبان A به
میزبان B
میتوانید
از دستور
زیر
استفاده
کنید:
[host_a] # hping2 host_b --udp -p 53 -d 100 --sign signature --safe --file /etc/passwd [host_b] # hping2 host_a --listen signature --safe --icmp
- -u --end
- در صورت استفاده از گزینه --file filename رسیدن به انتهای فایل (EOF) را به شما اطلاع میدهد. علاوه بر این، مانع از پذیرش بستههای بیشتر توسط طرف مقابل میشود. لطفاً برای اطلاعات بیشتر به HPING2-HOWTO مراجعه کنید.
- -T --traceroute
- حالت ردیابی مسیر (Traceroute). با استفاده از این گزینه hping2 به ازای هر ICMP time to live 0 during transit دریافتی، مقدار ttl را افزایش میدهد. دستور hping2 host --traceroute را امتحان کنید. این گزینه مستلزم --bind و --ttl 1 است. با استفاده از گزینه --ttl میتوانید مقدار پیشفرض ttl که ۱ است را بازنویسی کنید. از نسخه پایدار 2.0.0 به بعد، اطلاعات RTT را نیز چاپ میکند.
- --tr-keep-ttl
- ثابت نگه داشتن مقدار TTL در حالت traceroute، به طوری که بتوانید تنها یک گام (hop) در مسیر را پایش کنید. برای مثال، جهت پایش چگونگی تغییر گام پنجم یا تغییرات RTT آن میتوانید دستور زیر را امتحان کنید: hping2 host --traceroute --ttl 5 --tr-keep-ttl
- --tr-stop
- در صورت تعیین این گزینه، hping به محض دریافت نخستین بستهای که از نوع ICMP time exceeded نباشد، خارج میشود. این رفتار مشابهت بیشتری با ابزار traceroute ایجاد میکند.
- --tr-no-rtt
- عدم نمایش اطلاعات RTT در حالت traceroute. در صورت تنظیم این گزینه، اطلاعات RTT مربوط به ICMP time exceeded حتی محاسبه نیز نمیشوند.
- --tcpexitcode
- خروج با پرچم tcp->th_flag آخرین بسته دریافتی به عنوان کد خروج. برای اسکریپتهایی کاربرد دارد که نیاز دارند مثلاً بدانند آیا درگاه ۹۹۹ میزبانی به بسته SYN با SYN/ACK پاسخ داده است یا با RST (یعنی سرویس فعال است یا غیرفعال).
قالب خروجی TCP (TCP OUTPUT FORMAT)
قالب استاندارد خروجی TCP به شرح زیر است:
len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0 win=0 rtt=0.4 ms
len اندازه (بر حسب بایت) دادههای گرفتهشده از لایه پیوند داده بدون احتساب اندازه هدر لایه پیوند داده است. این مقدار ممکن است به دلیل لایهبندی و پرسازی (padding) لایه انتقال سطح پایین، با اندازه دیتاگرام IP مطابقت نداشته باشد.
ip آدرس IP مبدأ است.
flags پرچمهای TCP هستند: R برای RESET، S برای SYN، A برای ACK، F برای FIN، P برای PUSH، U برای URGENT، X برای غیراستاندارد 0x40، و Y برای غیراستاندارد 0x80.
اگر پاسخ حاوی DF باشد، بیت don't fragment در هدر IP فعال است.
seq شماره توالی بسته است که برای بستههای TCP/UDP از درگاه مبدأ و برای بستههای ICMP از فیلد sequence به دست میآید.
id فیلد شناسه IP (IP ID) است.
win اندازه پنجره TCP است.
rtt زمان رفت و برگشت (round trip time) بر حسب میلیثانیه است.
اگر hping را با سوییچ خط فرمان -V اجرا کنید، اطلاعات بیشتری در مورد بسته نمایش خواهد داد، برای نمونه:
len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0 win=0 rtt=0.4 ms tos=0 iplen=40 seq=0 ack=1223672061 sum=e61d urp=0
tos فیلد نوع سرویس (type of service) در هدر IP است.
iplen فیلد طول کل IP است.
seq and ack شمارههای ۳۲ بیتی توالی (sequence) و تأییدیه (acknowledge) در هدر TCP هستند.
sum مقدار چکسام هدر TCP است.
urp مقدار اشارهگر اضطراری (urgent pointer) در TCP است.
قالب خروجی UDP (UDP OUTPUT FORMAT)
قالب استاندارد خروجی به شرح زیر است:
len=46 ip=192.168.1.1 seq=0 ttl=64 id=0 rtt=6.0 ms
معنی فیلدها دقیقاً مشابه معنی همان فیلدها در خروجی TCP است.
قالب خروجی ICMP (ICMP OUTPUT FORMAT)
نمونهای از خروجی ICMP:
ICMP Port Unreachable from ip=192.168.1.1 name=nano.marmoc.net
درک آن بسیار ساده است. با رشته "ICMP" آغاز میشود که به دنبال آن توصیف خطای ICMP (در این مثال Port Unreachable) میآید. فیلد ip آدرس مبدأ IP در دیتاگرام IP حاوی خطای ICMP است، فیلد name صرفاً آدرس عددی ترجمهشده به یک نام (یک درخواست dns PTR) یا UNKNOWN در صورت ناموفق بودن ترجمه است.
قالب خطای ICMP Time exceeded during transit یا reassembly اندکی متفاوت است:
TTL 0 during transit from ip=192.168.1.1 name=nano.marmoc.net
TTL 0 during reassembly from ip=192.70.106.25 name=UNKNOWN
تنها تفاوت در توصیف خطا است که با TTL 0 آغاز میشود.
نویسنده (AUTHOR)
سالواتوره سانفیلیپو (Salvatore Sanfilippo) <antirez@invece.org>، با کمک افراد نامبرده در فایل AUTHORS و در http://www.hping.org/authors.html
باگها (BUGS)
حتی هنگام استفاده از گزینههای --end و --safe برای انتقال فایلها، بسته نهایی با بایتهای 0x00 پر (pad) خواهد شد.
دادهها بدون توجه به تراز (alignment) خوانده میشوند، اما تراز در ساختارهای داده اعمال میشود. این موضوع در i386 مشکلی ایجاد نخواهد کرد؛ اما در حالی که معمولاً هدرهای TCP/IP بهطور طبیعی تراز شدهاند، در صورت وجود دسترسیهای ترازنشده در کد (که امیدواریم وجود نداشته باشد)، ممکن است با پردازندههای مختلف و بستههای ساختگی (bogus) مشکلاتی ایجاد کند.
در سولاریس (Solaris)، ابزار hping روی رابط loopback کار نمیکند. همانطور که در فهرست پستی tcpdump-workers بیان شده است، این یک مشکل مربوط به سولاریس به نظر میرسد، بنابراین libpcap نمیتواند کاری برای مدیریت صحیح آن انجام دهد.
همچنین ببینید (SEE ALSO)
| 2001 Aug 14 |