প্যাকেট অ্যানালাইসিস ও Wireshark বেসিকস
এই পাঠে যা শিখবেন
- প্যাকেট স্নিফিং কী এবং Wireshark কীভাবে ব্যবহৃত হয় (উচ্চ-স্তরে, ইনস্টলেশনের প্রয়োজন নেই)
- একটি ক্যাপচার করা প্যাকেটে ঠিক কী কী তথ্য দেখা যায়
- কেন unencrypted প্রোটোকল ব্যবহার করা একটি বাস্তব নিরাপত্তা ঝুঁকি
- ফিল্টার ব্যবহার করে একটি বড় ক্যাপচার থেকে নির্দিষ্ট ট্র্যাফিক আলাদা করা
১ · প্যাকেট স্নিফিং কী
প্যাকেট স্নিফিংPacket Sniffingএকটি নেটওয়ার্ক ইন্টারফেসের মধ্য দিয়ে যাওয়া raw ট্র্যাফিক ক্যাপচার করে বিশ্লেষণের জন্য সংরক্ষণ করা। মানে একটি নেটওয়ার্ক ইন্টারফেসের মধ্য দিয়ে যাওয়া raw ডেটা ক্যাপচার করে রাখা, যাতে পরে বিশ্লেষণ করা যায়। WiresharkWiresharkপ্যাকেট ক্যাপচার ও বিশ্লেষণের জন্য শিল্প-মানের একটি ফ্রি, ওপেন-সোর্স GUI টুল — নেটওয়ার্ক অ্যাডমিন ও সিকিউরিটি পেশাজীবীদের মধ্যে সবচেয়ে জনপ্রিয়। এই কাজের জন্য সবচেয়ে বহুল-ব্যবহৃত টুল — এটি ক্যাপচার করা প্রতিটি প্যাকেটকে একটি readable, স্তরভিত্তিক ফরম্যাটে দেখায় (Ethernet → IP → TCP/UDP → অ্যাপ্লিকেশন ডেটা)। এই পাঠে আমরা Wireshark ইনস্টল না করেই এর ধারণাটি Python দিয়ে সিমুলেট করব।
২ · একটি ক্যাপচার করা প্যাকেট কী প্রকাশ করে
প্রতিটি প্যাকেটে অন্তত এই তথ্যগুলো থাকে:
কোন ডিভাইস থেকে কোন ডিভাইসে ডেটা যাচ্ছে।
কোন সার্ভিসের উদ্দেশ্যে ডেটা পাঠানো হচ্ছে (L05-এর পোর্ট আলোচনা মনে করুন)।
TCP, UDP, HTTP, DNS ইত্যাদি — কোন নিয়মে ডেটা গঠিত।
প্রকৃত কন্টেন্ট — যদি প্রোটোকলটি এনক্রিপ্টেড না হয়, এই অংশটি plain text-এ পড়া যায়।
যদি কেউ HTTP (encrypted নয়) দিয়ে একটি লগইন ফর্ম সাবমিট করে, সেই ফর্মের ইউজারনেম ও পাসওয়ার্ড প্লেইন টেক্সটে নেটওয়ার্কে ভ্রমণ করে। একই ওয়াইফাই বা নেটওয়ার্ক সেগমেন্টে থাকা যে কেউ Wireshark চালিয়ে সেই প্যাকেট ক্যাপচার করলে পাসওয়ার্ডটি সরাসরি পড়ে ফেলতে পারে — কোনো "হ্যাকিং" স্কিল ছাড়াই। এই কারণেই HTTPS (encrypted) এখন ওয়েবের ডিফল্ট স্ট্যান্ডার্ড, HTTP নয়।
৩ · ফিল্টার — বিশাল ক্যাপচার থেকে নির্দিষ্ট ট্র্যাফিক খুঁজে বের করা
একটি ব্যস্ত নেটওয়ার্কে সেকেন্ডে হাজার হাজার প্যাকেট ক্যাপচার হতে পারে। Wireshark-এর ফিল্টার সিনট্যাক্স
(যেমন tcp.port==80 শুধু পোর্ট ৮০-এর ট্র্যাফিক দেখায়, বা ip.addr==192.168.1.5 শুধু
একটি নির্দিষ্ট ডিভাইসের ট্র্যাফিক দেখায়) দিয়ে বিশ্লেষককে ঠিক যা দরকার শুধু সেটাই আলাদা করে দেখতে দেয়। নিচের কোড
সেলে আমরা একটি সরল filter_packets() ফাংশন দিয়ে এই একই ধারণা প্রয়োগ করব।
৪ · সিমুলেশন — একটি ক্যাপচার করা ট্র্যাফিক লগ বিশ্লেষণ
নিচের কোড সেলে আমরা কয়েকটি "ক্যাপচার করা প্যাকেট"-কে ভুয়া ইন-মেমরি dict হিসেবে সিমুলেট করছি — একটি বাস্তব নেটওয়ার্ক ইন্টারফেস থেকে নয়। একটি প্যাকেট HTTP (plaintext) ও অন্যটি HTTPS (এনক্রিপ্টেড) — লক্ষ্য করুন eavesdropper প্রতিটি থেকে ঠিক কতটুকু দেখতে পায়।
# সিমুলেটেড ক্যাপচার লগ — বাস্তব নেটওয়ার্ক ইন্টারফেস থেকে নয়, শুধু ধারণা দেখানোর জন্য
captured_packets = [
{"src": "10.0.0.7", "dst": "93.184.216.34", "port": 80,
"protocol": "HTTP", "payload": "POST /login user=admin&pass=Winter2024!"},
{"src": "10.0.0.7", "dst": "93.184.216.34", "port": 443,
"protocol": "HTTPS", "payload": "encrypted_blob"},
{"src": "10.0.0.9", "dst": "203.0.113.5", "port": 80,
"protocol": "HTTP", "payload": "GET /index.html"},
]
def filter_packets(packets, port):
"""Wireshark-এর `tcp.port==N` ফিল্টারের সরল সংস্করণ।"""
return [p for p in packets if p["port"] == port]
print("=== সম্পূর্ণ ক্যাপচার — eavesdropper যা দেখে ===")
for p in captured_packets:
print(f"{p['protocol']:6} {p['src']:>10} -> {p['dst']:<14} : {p['payload']}")
print()
print("=== ফিল্টার প্রয়োগ: শুধু port 80 (HTTP) ===")
for p in filter_packets(captured_packets, 80):
print(f"সতর্কতা! plaintext payload দৃশ্যমান -> {p['payload']}")
HTTP প্যাকেটে ব্যবহারকারীর নাম ও পাসওয়ার্ড সরাসরি পড়া যাচ্ছে, কিন্তু HTTPS প্যাকেটে শুধু
encrypted_blob দেখা যাচ্ছে — প্রকৃত কন্টেন্ট সম্পূর্ণ অস্পষ্ট। এটিই দেখায় কেন প্রতিটি আধুনিক
ওয়েবসাইটকে HTTPS-এ মাইগ্রেট করা একটি নিরাপত্তা প্রয়োজনীয়তা, ঐচ্ছিক সুবিধা নয়।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ একটি ক্যাফের পাবলিক ওয়াইফাই ব্যবহার করে কেউ যদি একটি HTTP (non-HTTPS) সাইটে লগইন করে, ঠিক কী ঝুঁকি তৈরি হয়?
একই ওয়াইফাই নেটওয়ার্কে থাকা যেকোনো ব্যক্তি Wireshark-এর মতো একটি সাধারণ টুল দিয়ে সেই লগইন প্যাকেট ক্যাপচার করে ইউজারনেম ও পাসওয়ার্ড plaintext-এ পড়ে ফেলতে পারে — কোনো বিশেষ হ্যাকিং দক্ষতা ছাড়াই। এই কারণেই পাবলিক ওয়াইফাইতে শুধুমাত্র HTTPS সাইট ব্যবহার করা, বা একটি VPN (L07) ব্যবহার করা গুরুত্বপূর্ণ।
প্র ০২ Wireshark-এর মতো একটি টুল কি নিজে "হ্যাকিং টুল"? এটি কখন বৈধ এবং কখন অবৈধ ব্যবহার হয়?
টুলটি নিজে নিরপেক্ষ — নেটওয়ার্ক অ্যাডমিনরা নিয়মিত সমস্যা নির্ণয়ের জন্য Wireshark ব্যবহার করেন, এটি একটি বৈধ পেশাদার টুল। ব্যবহারটি বৈধ হয় যখন আপনি নিজের নেটওয়ার্কে বা লিখিত অনুমতিপ্রাপ্ত নেটওয়ার্কে ক্যাপচার করছেন (L01-এর অনুমতির নীতি)। ঠিক একই টুল দিয়ে অন্য কারো নেটওয়ার্কে অনুমতি ছাড়া ক্যাপচার করা অবৈধ — পার্থক্যটা টুলে নয়, অনুমতিতে।
প্র ০৩
কেন একটি সিকিউরিটি বিশ্লেষকের জন্য ফিল্টার (যেমন tcp.port==80) ব্যবহার করা গুরুত্বপূর্ণ, শুধু সব প্যাকেট ম্যানুয়ালি স্ক্রল করার বদলে?
একটি ব্যস্ত নেটওয়ার্কে সেকেন্ডে হাজার হাজার প্যাকেট ক্যাপচার হতে পারে — ম্যানুয়ালি স্ক্রল করে নির্দিষ্ট ট্র্যাফিক খুঁজে বের করা বাস্তবে অসম্ভব। ফিল্টার বিশ্লেষককে নির্দিষ্ট প্রোটোকল, পোর্ট, বা IP-তে ফোকাস করতে দেয়, যা বড় আকারের ইনসিডেন্ট রেসপন্স বা ট্রাবলশুটিং-এ সময় বাঁচায় এবং গুরুত্বপূর্ণ প্যাকেট মিস হওয়ার ঝুঁকি কমায়।
অনুশীলন
-
চিন্তা করুন: আপনার নিজের দৈনন্দিন ব্যবহৃত অ্যাপ/ওয়েবসাইটগুলোর মধ্যে কোনটি এখনো HTTP ব্যবহার করে বলে মনে হয় (address bar-এ পরীক্ষা করে দেখুন)? কেন এটি একটি সমস্যা?
বেশিরভাগ আধুনিক প্রধান ওয়েবসাইট এখন HTTPS ব্যবহার করে, তবে কিছু পুরনো বা ছোট ওয়েবসাইট এখনো HTTP ব্যবহার করতে পারে। যদি কোনো সাইট লগইন ফর্ম HTTP-তে সাবমিট করে, সেই সাইটে টাইপ করা যেকোনো পাসওয়ার্ড একই নেটওয়ার্কে থাকা যে কারো কাছে সম্ভাব্যভাবে দৃশ্যমান — এটি একটি স্পষ্ট নিরাপত্তা ঝুঁকি, বিশেষত পাবলিক ওয়াইফাইতে।
-
পরীক্ষা করুন: উপরের কোড সেলে
captured_packets-এ একটি নতুন FTP প্যাকেট (port 21, plaintext payload) যোগ করুন এবংfilter_packets(captured_packets, 21)কল করে দেখুন এটি সঠিকভাবে আলাদা হয় কি না।নতুন dict-টি ঠিক অন্যদের মতো একই কী (
src,dst,port,protocol,payload) সহ তালিকায় যোগ করলে,filter_packetsফাংশনটিport == 21মিলিয়ে সঠিকভাবে সেটি ফেরত দেবে — এটি দেখায় ফিল্টার লজিক প্রোটোকল-নির্বিশেষে যেকোনো পোর্টের জন্য কাজ করে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৬০টি পাঠ পরবর্তী পাঠ — নেটওয়ার্ক অ্যাটাক: MITM, ARP ও DNS স্পুফিং — শীঘ্রই যুক্ত হবে।
- Discrete Mathematics কোর্স সহায়ক কোর্স RSA এনক্রিপশন ও নাম্বার থিওরির গণিত শিখতে দেখুন — M7 ক্রিপ্টোগ্রাফি মডিউলের ভিত্তি।
- System Design & Software Architecture কোর্স সঙ্গী কোর্স এনক্রিপশন, অথেন্টিকেশন ও লগিং কীভাবে বড় সিস্টেমে প্রয়োগ হয় তা শিখতে দেখুন।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design ও Cybersecurity — সব এক জায়গায়।