DNET(8) System Manager's Manual DNET(8)

dnet — برنامه آزمایشی کتابخانه شبکه‌سازی dumb

dnet command args [...]

dnet یک برنامه آزمایشی ساده برای کتابخانه dnet(3) است. می‌توان از آن برای ایجاد و ارسال دیتگرام‌های شبکه در قالب یک فیلتر به سبک یونیکس (مانند خواندن از یا نوشتن در فایل‌ها و لوله‌ها) یا تغییر پیکربندی شبکه سیستم محلی (شامل حافظه موقت ARP، مجموعه قوانین دیواره آتش، رابط‌های شبکه و جدول مسیریابی) استفاده کرد.

addr address [...]
تبدیل address (مشخص‌شده به صورت نام میزبان، نشانی IP یا نشانی MAC) به نمایش باینری آن در خروجی استاندارد.
hex string [...]
تبدیل string اسکیپ‌شده به سبک C (برای نمونه shellcode) به نمایش باینری آن در خروجی استاندارد.
rand len
نوشتن len بایت تصادفی در خروجی استاندارد.

eth [type type] [src mac] [dst mac]
افزودن سرایند اترنت به ابتدای داده‌های خوانده‌شده از ورودی استاندارد در خروجی استاندارد. نوع اترنت type می‌تواند به صورت ‘arp’, ‘ip’, یا به عنوان یک عدد هگزادسیمال، اکتال یا ده‌دهی مشخص شود.
arp [op op] [sha mac] [spa host] [tha mac] [tpa host]
افزودن سرایند ARP به ابتدای داده‌های خوانده‌شده از ورودی استاندارد در خروجی استاندارد. عمل ARP op می‌تواند به صورت ‘req’, ‘rep’, ‘revreq’, ‘revrep’, یا به عنوان یک عدد هگزادسیمال، اکتال یا ده‌دهی مشخص شود.
ip [tos num] [id num] [off offset] [ttl num] [proto protocol] [src host] [dst dst]
افزودن سرایند IP به ابتدای داده‌های خوانده‌شده از ورودی استاندارد در خروجی استاندارد. مقدار افست قطعه‌بندی offset می‌تواند به عنوان یک عدد ده‌دهی (اختیاراً پیوست‌شده با ‘+’ برای نشان دادن قطعات بیشتر) یا به عنوان یک عدد هگزادسیمال مشخص شود. پروتکل protocol می‌تواند با نام، یا به عنوان یک عدد هگزادسیمال، اکتال یا ده‌دهی مشخص گردد.
icmp [type num] [code num]
افزودن سرایند ICMP به ابتدای داده‌های خوانده‌شده از ورودی استاندارد در خروجی استاندارد.
tcp [sport port] [dport port] [flags flags] [seq num] [ack num] [win num] [urp num]
افزودن سرایند TCP به ابتدای داده‌های خوانده‌شده از ورودی استاندارد در خروجی استاندارد. یک port می‌تواند با نام یا به صورت یک عدد هگزادسیمال، اکتال یا ده‌دهی مشخص شود. پرچم‌های TCP در flags می‌توانند به صورت ترکیبی از نویسه‌ها در مجموعه ‘SAFRPU’ یا به صورت یک عدد هگزادسیمال مشخص شوند.
udp [sport port] [dport port]
افزودن سرایند UDP به ابتدای داده‌های خوانده‌شده از ورودی استاندارد در خروجی استاندارد. یک port می‌تواند با نام یا به صورت یک عدد هگزادسیمال، اکتال یا ده‌دهی مشخص شود.

send [device]
خواندن یک بسته از ورودی استاندارد و ارسال آن در شبکه. اگر هیچ device مشخص نشده باشد، فرض می‌شود که بسته یک دیتگرام IP است و به سمت مقصدش مسیریابی می‌شود. در غیر این صورت، بسته یک فریم اترنت در نظر گرفته شده و روی رابط مشخص‌شده ارسال می‌شود.

arp show
نمایش حافظه موقت ARP کرنل.
arp get host
نمایش مدخل ARP کرنل برای host.
arp add host mac
افزودن یک مدخل ARP برای نگاشت نشانی mac برای host.
arp delete host
حذف مدخل ARP برای host.
fw show
نمایش مجموعه قوانین دیواره آتش کرنل.
fw add|delete action direction device protocol src[:port[-max]] dst[:port[-max]] [type[/code]]
افزودن یک قانون به یا حذف یک قانون از مجموعه قوانین فعال دیواره آتش. عمل action باید ‘allow’ یا ‘block’ باشد. جهت باید ‘in’ یا ‘out’ باشد. device می‌تواند یک نام رابط، یا ‘any’ را مشخص کند. protocol می‌تواند با نام، یا به صورت یک عدد ده‌دهی مشخص شود. برای پروتکل‌های TCP و UDP، یک port (یا بازه در صورت مشخص شدن با مقدار max) می‌تواند به صورت ده‌دهی مشخص شده و به نشانی مبدأ یا مقصد پیوست شود. برای ICMP، یک type (و code اختیاری) می‌تواند به صورت ده‌دهی مشخص گردد.
intf show
نمایش پیکربندی تمام رابط‌های شبکه.
intf get device
نمایش پیکربندی برای رابط مشخص‌شده توسط device.
intf set device [alias host] [dst host] [inet host] [link mac] [up|down] [arp|noarp]
پیکربندی رابط مشخص‌شده توسط device.
route show
نمایش جدول مسیریابی کرنل.
route get dst
نمایش مسیر برای مقصد dst, مشخص‌شده به صورت نام میزبان، نشانی IP یا پیشوند شبکه در قالب نمادگذاری CIDR.
route add dst gw
افزودن یک مسیر برای مقصد dst از طریق دروازه gw.
route delete dst
حذف مسیر برای مقصد dst.

ارسال یک دیتگرام UDP حاوی کد شل (shellcode) تصادفی:

dnet hex "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89" \
"\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80" \
"\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh" | \
dnet udp sport 555 dport 666 | \
dnet ip proto udp src 1.2.3.4 dst 5.6.7.8 | dnet send

ذخیره یک درخواست ARP در یک فایل و ارسال دوباره آن:

dnet arp op req sha 0:d:e:a:d:0 spa 10.0.0.3 tpa 10.0.0.4 | \
dnet eth type arp src 0:d:e:a:d:0 dst ff:ff:ff:ff:ff:ff > arp.pkt
dnet send fxp0 < arp.pkt
dnet send fxp0 < arp.pkt

ارسال یک بسته پینگ قطعه‌بندی‌شده:

# ایجاد بسته پینگ با سرایند IP برای تنظیم جمع کنترلی ICMP
echo "monkey monkey monkey monkey" | dnet icmp type 8 code 0 | \
dnet ip proto icmp src 1.2.3.4 dst 5.6.7.8 > ping.pkt

# برش و حذف سرایند IP
dd if=ping.pkt of=ping.data bs=20 skip=1

# قطعه‌بندی بار مفید IP
split -b 24 ping.data p.

# ارسال قطعات
dnet ip id 1 off 0+ proto icmp src 1.2.3.4 dst 5.6.7.8 < p.aa | \
dnet send
dnet ip id 1 off 24 proto icmp src 1.2.3.4 dst 5.6.7.8 < p.ab | \
dnet send

dnet(3)

Dug Song ⟨dugsong@monkey.org⟩

Oliver Falk ⟨oliver@linux-kernel.at⟩

October 17, 2001 Linux 6.12.107+deb13-amd64