Wireshark เป็นเครื่องมือวิเคราะห์ทราฟฟิกเครือข่ายโอเพนซอร์สชั้นนำ ใช้สำหรับการดักจับและตรวจสอบแพ็กเก็ตแบบเรียลไทม์ เครื่องมือนี้รองรับโปรโตคอลเครือข่ายมากกว่าสองพันโปรโตคอลและทำงานบนแพลตฟอร์มหลักทั้งหมด จากข้อมูลใน Wireshark User Guide (2026) ยูทิลิตีนี้ใช้สำหรับการวินิจฉัยเครือข่าย การดีบัก API และการวิเคราะห์ความปลอดภัยในการพัฒนาแอปมือถือและเว็บ
ประเด็นสำคัญ
Wireshark เป็นโปรแกรมโอเพนซอร์ส (GPLv2) ที่ดักจับแพ็กเก็ตข้อมูลที่ผ่านอินเทอร์เฟซเครือข่ายของคอมพิวเตอร์ โดยอิงจากไลบรารี libpcap (Unix) หรือ Npcap (Windows) สำหรับการดักจับที่ระดับเลเยอร์เชื่อมโยงข้อมูลของโมเดล OSI
ในโหมดปกติ การ์ดเครือข่ายจะรับเฉพาะเฟรมที่ส่งถึงแอดเดรส MAC ของตัวเอง Wireshark สลับอินเทอร์เฟซไปที่โหมด promiscuous (ไม่เลือก) ซึ่งระบบจะประมวลผลเฟรมที่ผ่านทั้งหมดโดยไม่คำนึงถึงผู้รับ ข้อมูลที่ดักจับได้จะถูกส่งไปยังเคอร์เนลผ่าน raw socket จากนั้นไลบรารี libpcap จะคัดลอกไปยังยูสเซอร์สเปซเพื่อการวิเคราะห์
Wireshark ใช้สถาปัตยกรรมแบบโมดูลาร์: โปรโตคอลแต่ละตัวถูกนำไปใช้เป็น dissector แยกต่างหาก — ปลั๊กอินที่แยกวิเคราะห์ข้อมูลไบนารีและแสดงผลในรูปแบบโครงสร้าง ณ ปี 2026 โปรแกรมมี dissector สำหรับ 2,874 โปรโตคอล รวมถึง HTTP/2, QUIC, gRPC และ MQTT dissector ทำงานผ่านระบบทรีโปรโตคอล — แต่ละแพ็กเก็ตถูกแยกวิเคราะห์ทีละเลเยอร์ ตั้งแต่เฟรม Ethernet ไปจนถึงเลเยอร์แอปพลิเคชัน
// ตัวอย่าง dissector อย่างง่ายสำหรับโปรโตคอลที่กำหนดเอง
static int dissect_custom(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, void *data) {
proto_item *ti = proto_tree_add_item(tree, hf_custom_field,
tvb, 0, tvb_captured_length(tvb), ENC_NA);
return 0;
}
อินเทอร์เฟซแบบกราฟิกของ Wireshark แบ่งออกเป็นสามแผง: รายการแพ็กเก็ต (packet list) รายละเอียดโปรโตคอล (packet details) และดัมป์เลขฐานสิบหก (packet bytes) แต่ละแผงจะอัปเดตแบบเรียลไทม์และรองรับการนำทางแบบโต้ตอบ — การคลิกที่แถวแพ็กเก็ตจะเปิดโครงสร้างทั้งหมด
เครื่องมืออ่านไฟล์ดักจับในรูปแบบ pcap, pcapng, snoop และ NetMon สามารถส่งออกเป็น JSON, XML, CSV และข้อความธรรมดา ในบรรดาโปรโตคอลเลเยอร์แอปพลิเคชันหลัก ได้แก่ HTTP/HTTPS, DNS, DHCP, TCP, UDP, TLS, QUIC, WebSocket, MQTT, AMQP และ Protobuf สำหรับการพัฒนาแอปมือถือ การรองรับ gRPC และ HTTP/2 แบบมัลติเพล็กซ์สตรีมมีความสำคัญเป็นพิเศษ
ยูทิลิตีในตัวประกอบด้วย Follow Stream (การสร้างบทสนทนา TCP/UDP/TLS เต็มรูปแบบ), IO Graph (กราฟแบนด์วิดท์), สถิติบทสนทนา (Conversations) และลำดับชั้นโปรโตคอล (Protocol Hierarchy) ฟังก์ชัน Flow Graph แสดงภาพลำดับแพ็กเก็ตระหว่างโหนด ซึ่งช่วยให้ค้นหาสาเหตุของความล่าช้าในการดีบักการโต้ตอบระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ได้ง่ายขึ้น
การเริ่มดักจับ เริ่มจากการเลือกอินเทอร์เฟซเครือข่าย — Ethernet, Wi-Fi, Bluetooth PAN หรือ Loopback บน Windows อาจต้องติดตั้ง Npcap ในโหมด WinPcap API Compatible Mode สำหรับการดักจับบนอุปกรณ์มือถือ จะใช้ Remote Packet Capture ผ่านอุโมงค์ SSH
บนอุปกรณ์ Android ทราฟฟิกจะถูกดักจับด้วย tcpdump หรือ PCAPdroid จากนั้นส่งไฟล์ไปยังคอมพิวเตอร์ทำงาน คำสั่งสำหรับการดักจับระยะไกลผ่าน ADB:
# การดักจับทราฟฟิกบน Android ผ่าน ADB shell
adb shell tcpdump -i wlan0 -s 0 -w /sdcard/capture.pcap
# การคัดลอกไปยังคอมพิวเตอร์
adb pull /sdcard/capture.pcap .
บน Windows ทราฟฟิก localhost (127.0.0.1) ไม่ผ่านอินเทอร์เฟซทางกายภาพ ดังนั้น Wireshark จึงไม่เห็นโดยตรง วิธีแก้คือติดตั้ง Npcap พร้อมตัวเลือก Loopback Support หรือเปลี่ยนเส้นทางทราฟฟิกผ่าน RawCap บน Linux และ macOS อินเทอร์เฟซ loopback (lo) จะถูกดักจับโดยไม่ต้องตั้งค่าเพิ่มเติม
Wireshark มีฟิลเตอร์สองประเภท: capture filters (ใช้ก่อนการดักจับที่ระดับ libpcap) และ display filters (ใช้กับข้อมูลที่ดักจับแล้ว) capture filters ใช้ไวยากรณ์ BPF (Berkeley Packet Filter) ส่วน display filters ใช้ภาษาของ Wireshark เองที่มีการเติมคำอัตโนมัติ
ฟิลเตอร์ BPF เขียนในรูปแบบ tcpdump และทำงานในเคอร์เนล ซึ่งช่วยลดการสูญเสียแพ็กเก็ตเมื่อโหลดสูง ตัวอย่างฟิลเตอร์:
| ฟิลเตอร์ | วัตถุประสงค์ |
|---|---|
| tcp port 80 | เฉพาะทราฟฟิก HTTP บนพอร์ตมาตรฐาน |
| host 192.168.1.1 | แพ็กเก็ตจากโฮสต์เฉพาะ |
| not arp | แพ็กเก็ตทั้งหมดยกเว้นคำขอ ARP |
display filters ใช้ภายหลังและรองรับเงื่อนไขที่ซับซ้อนด้วยตัวดำเนินการตรรกะ and, or, not ตัวอย่าง: http.request.method == "POST" and ip.src == 192.168.0.100 จะกรองเฉพาะคำขอ POST จาก IP ที่ระบุ ฟิลเตอร์สามารถบันทึกเป็นรายการโปรดเพื่อใช้อีกครั้ง
ทราฟฟิก HTTP แสดงใน Wireshark ในรูปแบบที่อ่านง่าย: เมธอดคำขอ URI ส่วนหัวและเนื้อหาคำตอบ ฟังก์ชัน Follow TCP Stream รวบรวมบทสนทนาเต็มรูปแบบระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ในหน้าต่างเดียว สำหรับ HTTPS จำเป็นต้องถอดรหัสเซสชัน TLS เนื่องจากเนื้อหาถูกเข้ารหัส
เบราว์เซอร์ Chrome และ Firefox รองรับตัวแปรสภาพแวดล้อม SSLKEYLOGFILE ซึ่งเขียนคีย์เซสชัน TLS ลงในไฟล์ข้อความ Wireshark ใช้ไฟล์นี้เพื่อถอดรหัสบันทึก การตั้งค่าทำผ่าน Preferences → Protocols → TLS → (Pre)-Master-Secret log filename
# เปิด Chrome พร้อมบันทึกคีย์ TLS
export SSLKEYLOGFILE=/tmp/sslkeys.log
google-chrome .
# หลังจากดักจับ ให้ระบุเส้นทางใน Wireshark
# Edit → Preferences → Protocols → TLS → Log Filename
gRPC ใช้ HTTP/2 เป็นตัวขนส่งและ Protobuf ในการทำให้ข้อมูลเป็นซีเรียล Wireshark ถอดรหัสข้อความ gRPC หากระบุไฟล์ .proto พร้อมนิยามโครงสร้าง dissector Protobuf จะจับคู่ฟิลด์ไบนารีกับชื่อในไฟล์ proto ซึ่งสำคัญอย่างยิ่งในการดีบักสถาปัตยกรรมไมโครเซอร์วิส
การดีบักแอปมือถือ ผ่าน Wireshark ต้องพร็อกซีทราฟฟิกของอุปกรณ์ไปยังคอมพิวเตอร์ วิธีที่น่าเชื่อถือที่สุดคือการสร้างจุดเชื่อมต่อ Wi-Fi บนแล็ปท็อปและเปลี่ยนเส้นทางทราฟฟิกผ่าน NAT บน Android ยังมีวิธี VPN กับแอป PCAPdroid โดยไม่ต้องมีสิทธิ์ root
PCAPdroid สร้างบริการ VPN ในเครื่องที่เปลี่ยนเส้นทางทราฟฟิกของแอปไปยัง Wireshark ผ่านสตรีม UDP แอปไม่ต้องการสิทธิ์ root และรองรับการกรองตามกระบวนการแต่ละกระบวนการ ไฟล์ pcap ที่ได้จะเปิดใน Wireshark เพื่อการวิเคราะห์เต็มรูปแบบ
# การรับทราฟฟิกจาก PCAPdroid บนคอมพิวเตอร์
# PCAPdroid → Settings → PCAP dumper → UDP Exporter
nc -l -u 192.168.0.10 12345 > capture.pcap
Wireshark เป็นเครื่องมืออเนกประสงค์ แต่สำหรับงานเฉพาะมีโซลูชันที่เชี่ยวชาญกว่า tcpdump มีประสิทธิภาพกว่าสำหรับการดักจับฝั่งเซิร์ฟเวอร์แบบไม่มีกราฟิก Charles Proxy สะดวกกว่าสำหรับการวิเคราะห์ทราฟฟิก HTTPS ส่วน Fiddler เหมาะสำหรับการตรวจสอบทราฟฟิกเว็บพร้อมความสามารถในการแก้ไขคำขอทันที
Charles Proxy ทำหน้าที่เป็นเซิร์ฟเวอร์พร็อกซีกลางที่มีความสามารถในการดักจับ HTTPS ผ่านการรับรอง SSL ของตัวเอง ต่างจาก Wireshark ตรงที่ Charles ไม่ต้องตั้งค่า SSLKEYLOGFILE และสามารถไม่เพียงดูเท่านั้นแต่ยังแก้ไขทราฟฟิกได้ — แทนที่คำตอบ จำลองความล่าช้า และทำคำขอซ้ำ
Fiddler เป็นเครื่องมือพร็อกซีอีกตัวที่นิยมในระบบนิเวศ .NET มีตัวแก้ไขคำขอในตัว รองรับ AutoResponder สำหรับ mock และคอมโพเซอร์สำหรับสร้างคำขอแบบกำหนดเอง Fiddler เหมาะกว่าสำหรับการวิเคราะห์ทราฟฟิกเว็บของเบราว์เซอร์ ส่วน Wireshark เหมาะสำหรับการวิเคราะห์เครือข่ายระดับต่ำ
| เครื่องมือ | ประเภท | HTTPS ไม่ต้องใช้คีย์ | การแก้ไขทราฟฟิก |
|---|---|---|---|
| Wireshark | ตัวดักจับ | ไม่ (ต้องใช้ SSLKEYLOGFILE) | ดูอย่างเดียว |
| Charles | พร็อกซี | ใช่ (ใบรับรองกำหนดเอง) | ใช่ |
| Fiddler | พร็อกซี | ใช่ (ใบรับรองกำหนดเอง) | ใช่ |
| tcpdump | ตัวดักจับ | ไม่ | ดูอย่างเดียว |
Wireshark ต้องเข้าใจหลักการพื้นฐานของการดักจับทราฟฟิก สถานการณ์หนึ่งที่พบบ่อยคือการค้นหาแหล่งที่มาของความล่าช้าในแอปมือถือผ่านฟิลเตอร์ tcp.analysis.ack_rtt หากต้องการหาคำขอ HTTP ที่ช้า ให้ใช้เงื่อนไข http.time มากกว่า 1
หากต้องการหาคำขอ HTTP ที่ช้า ให้กรอง http.time มากกว่า 1 — Wireshark จะแสดงคำขอที่มีเวลาตอบสนองมากกว่า 1 วินาที รวมกับ ip.addr เพื่อวิเคราะห์เซิร์ฟเวอร์เฉพาะ IO Graph ที่ช่วง 1 วินาทีจะแสดงจุดสูงสุดของโหลดได้ชัดเจน
Wireshark รองรับการส่งออกเป็น CSV, JSON และ XML ผ่านเมนู File สำหรับการวิเคราะห์อัตโนมัติ ให้ใช้ tshark — เวอร์ชันคอนโซลที่ทำงานในไปป์ไลน์ CI/CD Tshark รองรับฟิลเตอร์และรูปแบบเอาต์พุตเดียวกันกับเวอร์ชันกราฟิก
Wireshark ต้องเข้าใจหลักการพื้นฐานของการดักจับทราฟฟิก สถานการณ์หนึ่งที่พบบ่อยคือการค้นหาแหล่งที่มาของความล่าช้าในแอปมือถือผ่านฟิลเตอร์ tcp.analysis.ack_rtt หากต้องการหาคำขอ HTTP ที่ช้า ให้ใช้เงื่อนไข http.time มากกว่า 1
หากต้องการหาคำขอ HTTP ที่ช้า ให้กรอง http.time มากกว่า 1 — Wireshark จะแสดงคำขอที่มีเวลาตอบสนองมากกว่า 1 วินาที รวมกับ ip.addr เพื่อวิเคราะห์เซิร์ฟเวอร์เฉพาะ IO Graph ที่ช่วง 1 วินาทีจะแสดงจุดสูงสุดของโหลดได้ชัดเจน
Wireshark รองรับการส่งออกเป็น CSV, JSON และ XML ผ่านเมนู File สำหรับการวิเคราะห์อัตโนมัติ ให้ใช้ tshark — เวอร์ชันคอนโซลที่ทำงานในไปป์ไลน์ CI/CD Tshark รองรับฟิลเตอร์และรูปแบบเอาต์พุตเดียวกันกับเวอร์ชันกราฟิก
คำถามที่พบบ่อย
Wireshark มีอินเทอร์เฟซแบบกราฟิกพร้อมการแสดงภาพแพ็กเก็ต ฟิลเตอร์ในตัวและสถิติ tcpdump เป็นยูทิลิตีคอนโซลที่ไม่มี GUI สะดวกสำหรับการดักจับฝั่งเซิร์ฟเวอร์ผ่าน SSH Wireshark อ่านไฟล์ของ tcpdump ได้และในทางกลับกัน
การถอดรหัสต้องใช้ไฟล์คีย์เซสชัน TLS (SSLKEYLOGFILE) Chrome และ Firefox ส่งออกคีย์เมื่อเปิดใช้งานพร้อมตัวแปรสภาพแวดล้อม ระบุเส้นทางของไฟล์ในการตั้งค่า Protocols → TLS ใน Wireshark
ทราฟฟิก loopback บน Windows ไม่ผ่านไดรเวอร์ Npcap โดยค่าเริ่มต้น วิธีแก้คือติดตั้ง Npcap พร้อมเปิดตัวเลือก Loopback Support หรือใช้ยูทิลิตี RawCap เพื่อดักจับทราฟฟิกในเครื่อง
ได้ โดยพร็อกซีทราฟฟิกไปยังคอมพิวเตอร์ Android รองรับการดักจับผ่าน PCAPdroid (ไม่ต้อง root) หรือ tcpdump (ต้อง root) iOS ต้องใช้ RVI (Remote Virtual Interface) ผ่าน macOS หรือ jailbreak ในการดักจับ
display filter frame contains ค้นหาสตริงหรือลำดับเลขฐานสิบหกในแพ็กเก็ตทั้งหมด ตัวอย่าง: frame contains "password" จะหาแพ็กเก็ตที่มีสตริงย่อย password ในฟิลด์ใดก็ได้ สำหรับการค้นหาตามฟิลด์ที่แม่นยำ ใช้ http.request.uri contains "api"
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม