ตัวระบุรหัส
พบสตริงที่น่าสงสัยในโจทย์ CTF ไฟล์ล็อก หรือเอกสารเก่า แต่บอกไม่ได้ว่าเป็น Base64, hex, ไบนารี, มอร์ส หรืออย่างอื่นใช่ไหม วางข้อความลงไป แล้วตัวระบุจะตรวจชุดอักขระและโครงสร้างเพื่อจัดอันดับการเข้ารหัสและรหัสลับที่น่าจะเป็นมากที่สุด เป็นก้าวแรกที่ดีก่อนหันไปใช้ตัวถอดรหัสเฉพาะทาง
ตัวระบุรหัสทำงานอย่างไร
-
1
วางไซเฟอร์เท็กซ์
ความยาวเท่าใดก็ได้ สตริงที่สั้นมาก (< 20 ตัวอักษร) ให้สัญญาณอ่อนกว่า ข้อความที่ยาวขึ้นทำให้สามารถจำแนกประเภทได้ดีขึ้น
-
2
การวิเคราะห์ชุดอักขระ
การกระจายตัวอักษร ตัวเลข และสัญลักษณ์จะทำให้ตัวเลือกแคบลง (เลขฐานสิบหกทั้งหมด ตัวอักษรฐาน 64 ทั้งหมด ภาษาละตินตัวพิมพ์ใหญ่ทั้งหมด ฯลฯ)
-
3
การเทียบลายเซ็น
b$) จะถูกเทียบกับลายเซ็นที่รู้จัก
-
4
ผลการคาดเดาแบบจัดอันดับ
ตัวเลือกที่ตรงทั้งหมดจะถูกจัดอันดับตามความเชื่อมั่นและแสดงเป็นเปอร์เซ็นต์ เพื่อให้คุณรู้ว่าควรลองตัวถอดรหัสตัวไหนก่อน
ฮิวริสติกที่ใช้ตรวจจับ
| เบาะแส | รหัสลับ / การเข้ารหัสที่น่าจะเป็น |
|---|---|
มีเฉพาะ A-Z a-z 0-9 + / = และความยาวเป็นพหุคูณของ 4 |
Base64 |
มีเฉพาะ 0-9 a-f และความยาวเป็นเลขคู่ |
เลขฐานสิบหก (hex) |
มีเฉพาะ 0-1 และมี 8 หลักขึ้นไป |
ไบนารี |
| มีเฉพาะจุด ขีดกลาง เครื่องหมายทับ และช่องว่าง | รหัสมอร์ส |
| มีเฉพาะอักษรละตินตัวพิมพ์ใหญ่ 5 ตัวขึ้นไป | ซีซาร์หรือรหัสแทนที่ |
| อักษรละติน 20 ตัวขึ้นไป ไม่มีช่องว่าง | รหัสแทนที่แบบ monoalphabetic |
| อักษรละตินตัวพิมพ์ใหญ่และเล็กผสม | ข้อความธรรมดา ไม่น่าใช่รหัสลับ |
สามส่วนคั่นด้วยจุด ขึ้นต้นด้วย eyJ |
โทเค็น JWT |
ขึ้นต้นด้วย $2a$, $2b$ หรือ $2y$ |
แฮช bcrypt |
| อักขระ hex 32 ตัวพอดี | แฮช MD5 |
| อักขระ hex 40 ตัวพอดี | แฮช SHA-1 |
| อักขระ hex 64 ตัวพอดี | แฮช SHA-256 |
สัญญาณอื่นนอกเหนือจากชุดอักขระ
- Base64: บล็อกละ 4 ตัวอักษร มี
=เติมท้าย และมี+กับ/ - ซีซาร์หรือการแทนที่: อักษรละตินตัวพิมพ์ใหญ่ ไม่มีตัวเลข ความถี่เหมือนข้อความธรรมดา เพียงแค่ถูกเลื่อน
- มอร์ส: มีเฉพาะจุด ขีดกลาง เครื่องหมายทับ และช่องว่าง
- JWT: สามส่วนคั่นด้วยจุด ปกติขึ้นต้นด้วย
eyJ - แฮช (MD5/SHA): hex ความยาวคงที่ (32 อักขระสำหรับ MD5, 40 สำหรับ SHA-1, 64 สำหรับ SHA-256) ย้อนกลับไม่ได้ ตัวระบุจะแจ้งไว้เพื่อให้คุณไม่เสียเวลาพยายาม “ถอดรหัส”
- ไบนารี: ชุด 0 และ 1 ยาวๆ มักจัดกลุ่มละ 8 ตัว
ข้อจำกัดของการระบุรหัสอัตโนมัติ
- อินพุตสั้น (<10 อักขระ): ความเชื่อมั่นต่ำในทุกตัวเลือก อาจเป็นอะไรก็ได้
- XOR แบบกำหนดเองกับ one-time pad: แยกไม่ออกจากข้อมูลสุ่มหากไม่มีคีย์ ตัวระบุจะไม่คืนผลลัพธ์ที่ตรงกัน
- การเข้ารหัสหลายชั้น: กลเม็ด CTF ที่พบบ่อยคือ Base64 → กลับลำดับ → ซีซาร์ → hex ให้แกะออกทีละชั้น
- ภาษาต้นฉบับที่ไม่ใช่ภาษาอังกฤษ: การตรวจอักษรละตินยังคงใช้ได้ แต่ “ข้อความธรรมดา” เป็นเพียงการเดา ตัวระบุไม่ตรวจจับภาษา
การให้คะแนนความเชื่อมั่น
ตัวเลือกแต่ละรายการมีความเชื่อมั่นคงที่ตามความเฉพาะเจาะจงของลายเซ็น มากกว่า 80%: น่าจะใช่ 50-80%: มีความเป็นไปได้ ต่ำกว่า 50%: โอกาสน้อย ผลลัพธ์ตรงหลายรายการมักหมายถึงอินพุตสั้นเกินไปหรือเป็นรหัสแบบผสม
คำถามที่พบบ่อย
เทคนิคการระบุรหัสทุกวิธีอาศัยความสม่ำเสมอทางสถิติ และสถิติจำเป็นต้องมีข้อมูลเพียงพอจึงจะเชื่อถือได้ ต่ำกว่า 20 อักขระ รหัสหลายแบบดูแทบไม่ต่างกัน ส่วน 50 อักขระขึ้นไปจะให้สัญญาณที่ชัดเจน
โดยจะแนะนำเพียงรูปแบบที่เป็นไปได้มากที่สุด การถอดรหัสเกิดขึ้นในเครื่องมือถอดรหัสเฉพาะ และการถอดรหัสบางอย่างจำเป็นต้องมีคีย์ที่คุณต้องระบุ
ตรวจสอบชุดอักขระก่อน (มีตัวอักษร/สัญลักษณ์ใดปรากฏ) จากนั้นดูความยาวและโครงสร้าง หากยังไม่ชัดเจน ให้ลองตัวถอดรหัสที่เป็นผู้ต้องสงสัยประจำ (Base64, hex, Caesar) ทีละตัว ในการแข่ง CTF การวิเคราะห์ความถี่บวกการเดามักถอดได้ภายในไม่กี่ครั้ง
อาจไม่จับคู่เป็นชื่อรหัสที่รู้จัก โดยจะไม่คืนตัวเลือกใดๆ หรือคืนการเดาที่มีความเชื่อมั่นต่ำ เปรียบเทียบตัวอักษรและโครงสร้างของข้อความไซเฟอร์กับตารางฮิวริสติกด้านบนเพื่อย้อนวิศวกรรมรหัสทำเองแบบง่ายๆ
เครื่องมือที่เกี่ยวข้อง
เครื่องมือเข้ารหัสซีซาร์
เข้ารหัสและถอดรหัสข้อความด้วยรหัสซีซาร์ เลื่อนได้ตั้งแต่ 1-25 รองรับ ROT13 เป็นกรณีพิเศษ และคงเครื่องหมายวรรคตอนกับตัวพิมพ์ใหญ่-เล็กไว้เหมือนเดิม
ตัวเข้ารหัสและถอดรหัส Base85
เข้ารหัสและถอดรหัส Base85 ในรูปแบบ Adobe Ascii85 ซึ่งใช้ในไฟล์ PostScript และ PDF กะทัดรัดกว่า Base64 สำหรับข้อมูลไบนารี
ตัวสร้าง bcrypt
สร้าง bcrypt hash จากรหัสผ่าน plaintext ปรับ cost factor ได้ตั้งแต่ 4 ถึง 13 ใช้ร่วมกับ Laravel, Django, Node และ PHP ได้
ตัวเข้ารหัสและถอดรหัส Base58
เข้ารหัสข้อความ UTF-8 หรือไบต์เลขฐานสิบหก และถอดรหัส Base58 อย่างปลอดภัยด้วยชุดอักขระ Bitcoin, Ripple หรือ Flickr
ตัวสร้าง bcrypt Hash
สร้าง bcrypt hash หรือตรวจสอบรหัสผ่าน plaintext กับ bcrypt hash ที่มีอยู่ โหมด generate และ verify อยู่ข้างกันในเครื่องมือเดียว
ตัวเข้ารหัสและถอดรหัส Base32
เข้ารหัสและถอดรหัสสตริง Base32 ด้วยตารางอักขระ RFC 4648 เหมาะสำหรับซีเคร็ต TOTP, โทเค็นที่ไม่แยกตัวพิมพ์ใหญ่เล็ก และตัวระบุที่มนุษย์ต้องพิมพ์