KAMENE(1) General Commands Manual KAMENE(1)

kamene - ابزار تعاملی دستکاری بسته‌ها

kamene [گزینه‌ها]

این صفحهٔ راهنما به طور خلاصه ابزار kamene را مستند می‌کند.

kamene ابزاری تعاملی و قدرتمند برای دستکاری بسته‌ها، تولید بسته، پویش شبکه، کشف شبکه، شنود بسته (packet sniffing) و غیره است. این ابزار در حال حاضر می‌تواند جایگزین hping، بخش‌هایی از nmap، arpspoof، arp-sk، arping، tcpdump، tshark، p0f و ... شود.

kamene از مفسر python به عنوان یک بورد فرمان استفاده می‌کند. این بدان معناست که می‌توانید مستقیماً از زبان python استفاده کنید (مقداردهی متغیرها، استفاده از حلقه‌ها، تعریف توابع و غیره). اگر هنگام اجرای kamene فایلی را به عنوان پارامتر ارسال کنید، نشست شما (متغیرها، توابع، نمونه‌ها و ...) هنگام خروج از مفسر ذخیره شده و در اجرای بعدی kamene بازیابی خواهد شد.

ایدهٔ اصلی ساده است. این دست از ابزارها دو کار انجام می‌دهند: ارسال بسته‌ها و دریافت پاسخ‌ها. این دقیقاً همان کاری است که kamene انجام می‌دهد: شما مجموعه‌ای از بسته‌ها را تعریف می‌کنید، ابزار آن‌ها را ارسال کرده، پاسخ‌ها را دریافت می‌کند، درخواست‌ها را با پاسخ‌ها مطابقت می‌دهد و فهرستی از جفت‌های بسته (درخواست، پاسخ) و فهرستی از بسته‌های مطابقت‌نیافته را برمی‌گرداند. این رویکرد مزیت بزرگی نسبت به ابزارهایی مانند nmap یا hping دارد، زیرا پاسخ دریافتی به حالت‌های (open/closed/filtered) خلاصه نمی‌شود، بلکه کل بسته بازگردانده می‌شود.

علاوه بر این، می‌توان توابع سطح بالاتری روی آن پیاده کرد؛ به عنوان مثال تابعی که traceroute انجام دهد و در نتیجه فقط TTL شروع درخواست و IP مبدأ پاسخ را ارائه دهد، یا تابعی که کل یک شبکه را پینگ کرده و فهرستی از ماشین‌های پاسخ‌دهنده را بدهد، و یا تابعی که پویش درگاه را انجام داده و یک گزارش LaTeX تولید کند.

گزینه‌های kamene عبارتند از:

نمایش نحوهٔ استفاده.
افزایش پرگویی گزارش‌ها (log verbosity). می‌تواند چندین بار استفاده شود.
استفاده از FILE برای ذخیره/بارگذاری مقادیر نشست (متغیرها، توابع، نمونه‌ها و ...).
استفاده از PRESTART_FILE به جای $HOME/.kamene_prestart.py به عنوان فایل پیش از راه‌اندازی (pre-startup).
عدم اجرای فایل پیش از راه‌اندازی.
استفاده از STARTUP_FILE به جای $HOME/.kamene_startup.py به عنوان فایل راه‌اندازی.
عدم اجرای فایل راه‌اندازی.

در حال حاضر تنها دستورهای حیاتی برای شروع در اینجا فهرست شده‌اند.

فهرست کردن لایه‌های پروتکل پشتیبانی‌شده. اگر یک لایه پروتکل به عنوان پارامتر ارسال شود، فیلدها و انواع فیلدهای آن را فهرست می‌کند.
فهرست کردن برخی از دستورهای کاربر. اگر یک دستور به عنوان پارامتر ارسال شود، مستندات آن نمایش داده می‌شود.
این شیء حاوی پیکربندی است.

$HOME/.kamene_prestart.py این فایل پیش از بارگذاری هستهٔ kamene اجرا می‌شود. تنها شیء conf در دسترس است. این فایل می‌تواند برای تغییر فهرست conf.load_layers جهت انتخاب لایه‌هایی که باید بارگذاری شوند، استفاده شود:

conf.load_layers.remove("bluetooth")
conf.load_layers.append("new_layer")

$HOME/.kamene_startup.py این فایل پس از بارگذاری kamene اجرا می‌شود. می‌توان از آن برای پیکربندی برخی از رفتارهای kamene استفاده کرد:

conf.prog.pdfreader="xpdf"
split_layers(UDP,DNS)

مثال‌های دقیق‌تر در نشانی زیر در دسترس هستند: https://phaethon.github.io/kamene تنها کافی است kamene را اجرا کرده و دستورهای زیر را در مفسر امتحان کنید.

شنود و کالبدشکافی بسته (با فیلتر bpf یا خروجی شبیه به ethereal):

a=sniff(filter="tcp port 110")
a=sniff(prn = lambda x: x.display) 

ارسال مجدد بستهٔ شنودشده:

a=sniff(filter="tcp port 110")
sendp(a)

ارسال مجدد بسته‌های فایل Pcap:

sendp(rdpcap("file.cap"))

ردیابی مسیر (traceroute) دستی با TCP:

sr(IP(dst="www.google.com", ttl=(1,30))/TCP(seq=RandInt(), sport=RandShort(), dport=dport)

پویش پروتکل:

sr(IP(dst="172.16.1.28", proto=(1,254)))

پینگ ARP:

srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="172.16.1.1/24"))

پویش ACK:

sr(IP(dst="172.16.1.28")/TCP(dport=(1,1024), flags="A"))

مسموم‌سازی حافظهٔ موقت ARP (ARP cache poisoning):

sendp(Ether(dst=tmac)/ARP(op="who-has", psrc=victim, pdst=target))

گزارش‌گیری:

report_ports("192.168.2.34", (20,30))

http://github.com/phaethon/kamene

برای مسیرهایی که از نام‌های مستعار رابط شبکه (interface aliases) استفاده می‌کنند، IP مبدأ درستی ارائه نمی‌دهد.

ممکن است در زیر بار کاری سنگین، برخی بسته‌ها را از دست بدهد.

ذخیره‌سازی نشست به توانایی Python در سریال‌سازی (marshal) اشیاء محدود است. در نتیجه، توابع lambda و مولدها (generators) ذخیره نمی‌شوند که این امر کاربرد این قابلیت را به طور چشمگیری کاهش می‌دهد.

فیلترهای BPF روی رابط‌های نقطه به نقطه (Point-to-point) کار نمی‌کنند.

نویسندهٔ اصلی scapy فیلیپ بیوندی (Philippe Biondi) <phil@secdev.org> است.

پورت کردن به python3 و بهبودهای بعدی توسط اریکس دوبلیس (Eriks Dobelis) و جامعهٔ کاربری انجام شده است.

این صفحهٔ راهنما توسط آلبرتو گونزالس اینیستا (Alberto Gonzalez Iniesta) <agi@agi.as>، فیلیپ بیوندی (Philippe Biondi) و اریکس دوبلیس (Eriks Dobelis) نوشته شده است.

December 2, 2016