แปลง Base64 เป็น JSON: วิธีถอดรหัสข้อมูลคุกกี้และเซสชันอย่างปลอดภัย

Digital Account Market

· อัปเดตล่าสุด:

คุณมีสตริงยาว ๆ ที่เป็นตัวอักษรและตัวเลขอ่านไม่ออก ซึ่งควรจะเก็บข้อมูลคุกกี้หรือเซสชันไว้ และต้องแปลง base64 เป็น json เพื่อให้อ่านเนื้อหาได้จริง บางทีผู้ขาย ส่วนขยายของเบราว์เซอร์ หรือแผงนำเข้าข้อมูลอาจเป็นคนส่งสตริงนี้มาให้ และคุณอยากเห็นฟิลด์ต่าง ๆ ก่อนนำไปใส่ในเครื่องมืออื่น

คู่มือนี้จะแสดงวิธีสังเกตว่าสตริงเป็น Base64 ถอดรหัสให้เป็น JSON ที่จัดรูปแบบอ่านง่ายด้วยเครื่องมือฟรี แก้ข้อผิดพลาดที่พบบ่อย และเข้ารหัส JSON กลับเป็น Base64 เมื่อแผงควบคุมต้องการรูปแบบนั้น พร้อมทั้งบอกวิธีเก็บข้อมูลที่ถอดรหัสแล้วให้เป็นส่วนตัว เพราะค่าของคุกกี้และโทเค็นเป็นข้อมูลที่ละเอียดอ่อน

Base64 คืออะไร และทำไมคุกกี้กับโทเค็นจึงถูกห่อด้วย Base64

Base64 เขียนข้อมูลได้ทุกชนิด รวมถึงข้อความที่มีเครื่องหมายอัญประกาศ วงเล็บปีกกา และตัวอักษรภาษาไทย โดยใช้อักขระที่ปลอดภัยเพียง 64 ตัว ได้แก่ A ถึง Z, a ถึง z, 0 ถึง 9 และสัญลักษณ์ + กับ / ระบบที่รับเครื่องหมายวรรคตอนดิบหรือการขึ้นบรรทัดใหม่ไม่ได้ก็ยังส่งต่อข้อมูลได้ เพราะ Base64 เปลี่ยนทุกอย่างให้เป็นข้อความธรรมดาที่คัดลอกง่าย

นี่คือเหตุผลที่คุณจะเจอสตริงคุกกี้แบบ Base64 ในทางปฏิบัติ เครื่องมือที่ส่งออกข้อมูลเซสชันเป็น JSON อาจห่อข้อมูลด้วย Base64 เพื่อให้ผ่านช่องข้อความ พารามิเตอร์ใน URL หรือข้อความแชตได้โดยไม่เสียหาย และแผงนำเข้าข้อมูลก็อาจคาดหวังรูปแบบเดียวกันตอนนำเข้า

ที่สำคัญคือ Base64 เป็นการเข้ารหัสอักขระ (encoding) ไม่ใช่การเข้ารหัสลับ (encryption) ไม่มีรหัสผ่านและไม่มีกุญแจ ใครมีสตริงนี้ก็แปลงกลับเป็นข้อความต้นฉบับได้ ดังนั้นให้ปฏิบัติต่อสตริงนี้เหมือนเป็นตัวข้อมูลเอง

วิธีสังเกตว่าสตริงเป็น Base64

ก่อนถอดรหัสอะไรก็ตาม ให้ตรวจว่าเป็น Base64 จริงหรือไม่ การตรวจสั้น ๆ สามข้อมักตัดสินได้

ชุดอักขระ

สตริง Base64 มาตรฐานมีเพียงตัวอักษร ตัวเลข + และ / เท่านั้น ถ้าเห็นเครื่องหมายทวิภาค ช่องว่างระหว่างคำ หรือเครื่องหมาย @ ก็มีแนวโน้มว่าเป็นอย่างอื่น บรรทัดข้อมูลส่งมอบอย่าง username:password:email:email_password:auth_token เป็นข้อความที่คั่นด้วยเครื่องหมายทวิภาค ไม่ใช่ Base64 และตัวถอดรหัสไหนก็ไม่ได้ความหมายอะไรจากมัน

Padding

Base64 ทำงานเป็นกลุ่มละสี่อักขระ เมื่อข้อมูลเติมกลุ่มสุดท้ายไม่เต็ม จะมีเครื่องหมายเท่ากับหนึ่งหรือสองตัวต่อท้ายเป็น padding สตริงที่ลงท้ายด้วย = หรือ == เป็นเบาะแสที่ชัดเจน แต่สตริงที่ไม่มีเครื่องหมายเท่ากับก็ถูกต้องได้ถ้าความยาวพอดี และบางเครื่องมือก็ตัด padding ออกโดยตั้งใจ

ส่วนต้นที่บอกได้ทันที

ออบเจ็กต์ JSON ขึ้นต้นด้วยวงเล็บปีกกาและอัญประกาศ และคู่อักขระนี้เข้ารหัสออกมาเหมือนเดิมเสมอ สตริงที่ขึ้นต้นด้วย eyJ เกือบทุกครั้งคือออบเจ็กต์ JSON ส่วน W3si มักหมายถึงรายการของออบเจ็กต์ และ WyJ คือรายการของค่าข้อความ ถ้าสตริงของคุณขึ้นต้นแบบนี้ เมื่อถอดรหัสควรได้ JSON

ไม่แน่ใจใช่ไหม ลองวางตัวอย่างลงในเครื่องมือระบุรูปแบบ เครื่องมือจะตรวจชุดอักขระ padding และความยาว แล้วบอกว่าข้อความนี้ดูเหมือน Base64, JSON หรืออย่างอื่น

แปลง Base64 เป็น JSON: ถอดรหัสด้วยเครื่องมือฟรี

เครื่องมือแปลง Base64 เป็น JSON ทำงานทั้งหมดในเบราว์เซอร์ของคุณ ไม่มีการอัปโหลดใด ๆ สตริงจึงอยู่บนอุปกรณ์ของคุณตลอด

  • วางสตริง Base64 ลงในช่องป้อนข้อมูล หากอยากเห็นหน้าตาของผลลัพธ์ที่ถูกต้องก่อน ให้กดปุ่มตัวอย่าง
  • ผลลัพธ์แสดงทันที ถ้าข้อความที่ถอดรหัสแล้วเป็น JSON ที่ถูกต้อง เครื่องมือจะจัดรูปแบบด้วยการย่อหน้าสองช่องว่าง ทำให้ฟิลด์ที่ซ้อนกันอ่านง่าย
  • อ่านโครงสร้างให้เข้าใจ แล้วใช้ปุ่มคัดลอกเพื่อนำ JSON ไปใช้

เครื่องมือจะตัดช่องว่างและการขึ้นบรรทัดใหม่ออกก่อนถอดรหัส และอ่านไบต์เป็น UTF-8 ตัวอักษรภาษาไทยและตัวอักษรที่มีเครื่องหมายกำกับจึงแสดงผลถูกต้อง ไม่กลายเป็นสัญลักษณ์เพี้ยน ลองทดสอบโดยวาง eyJ1c2VyIjoiaGVzYXAxIiwidG9rZW4iOiJhYmMxMjMifQ== แล้วคุณจะได้ออบเจ็กต์ที่มีฟิลด์ user และฟิลด์ token

หากข้อความที่ถอดรหัสแล้วอ่านออกแต่ไม่ใช่ JSON เครื่องมือจะแสดงเป็นข้อความธรรมดาแทนที่จะทิ้งผลลัพธ์ กรณีนี้พบบ่อยกับโทเค็นเดี่ยว ๆ และถือว่าถอดรหัสสำเร็จแล้วเช่นกัน

แก้ข้อผิดพลาดในการถอดรหัส: padding การขึ้นบรรทัดใหม่ และแบบ URL-safe

เมื่อถอดรหัสไม่สำเร็จ สาเหตุเกือบทุกครั้งคือข้อใดข้อหนึ่งต่อไปนี้

Padding ขาดหาย

สตริงถูกตัดทอนหรือเครื่องหมายเท่ากับถูกลบ ลองเปรียบเทียบ eyJpZCI6MX0= กับ eyJpZCI6MTIzfQ== ตัวแรกต้องมีเครื่องหมายเท่ากับหนึ่งตัว ตัวที่สองต้องมีสองตัว ให้เติม = จนความยาวหารด้วยสี่ลงตัว ข้อยกเว้นคือสตริงที่ความยาวหารด้วยสี่แล้วเหลือเศษหนึ่ง กรณีนี้ padding แก้ไม่ได้ เพราะอักขระหายไปตอนคัดลอก ต้องคัดลอกต้นฉบับมาใหม่

การขึ้นบรรทัดใหม่และช่องว่างส่วนเกิน

โปรแกรมอีเมล แอปแชต และไฟล์ข้อความมักตัดสตริงยาว ๆ ให้ขึ้นหลายบรรทัด การตัดบรรทัดเหล่านี้ไม่ใช่ส่วนหนึ่งของข้อมูล เครื่องมือของเราลบให้อัตโนมัติ แต่ตัวถอดรหัสอื่นอาจไม่ทำ

แบบ URL-safe

สตริงที่สร้างมาสำหรับที่อยู่เว็บจะสลับ + เป็น - และ / เป็น _ เพื่อให้อยู่ในลิงก์ได้ ตัวถอดรหัสมาตรฐานจะปฏิเสธอักขระสองตัวนี้ ให้แทนที่ - ทุกตัวด้วย + และ _ ทุกตัวด้วย / คืน padding แล้วถอดรหัสอีกครั้ง

วางบรรทัดข้อมูลบัญชีผิดที่

หากคุณวางข้อมูลส่งมอบหลายบรรทัดที่คั่นด้วยเครื่องหมายทวิภาค เครื่องมือจะแจ้งว่าดูเหมือนรายการบัญชี ข้อความแบบนี้ต้องใช้ตัวแยกคอลัมน์ ไม่ใช่ตัวถอดรหัส ใช้เครื่องมือแยกตามตัวคั่นเพื่อดึงฟิลด์ที่ต้องการออกมา

เข้ารหัส JSON เป็น Base64: แปลงกลับสำหรับเครื่องมือที่ต้องการ

แผงควบคุมและเครื่องมือนำเข้าบางตัวต้องการข้อมูลเซสชันเป็น Base64 แทน JSON ดิบ เครื่องมือแปลง JSON เป็น Base64 รองรับทิศทางนี้ วาง JSON ของคุณ เลือกผลลัพธ์แบบกะทัดรัดบรรทัดเดียวหรือแบบย่อหน้าที่อ่านง่าย แล้วคัดลอกผลลัพธ์ โหมดกะทัดรัดเหมาะเป็นค่าเริ่มต้นสำหรับการนำเข้าส่วนใหญ่ เพราะได้สตริงที่สั้นที่สุด

เครื่องมือจะตรวจสอบ JSON ของคุณก่อน หากลืมเครื่องหมายจุลภาคหรือปิดวงเล็บปีกกาไม่ครบ ก็จะตรวจพบก่อนที่คุณจะเข้ารหัสข้อมูลที่เสียหาย การเข้ารหัสใช้ UTF-8 จึงทำให้แปลงไปกลับได้อย่างเชื่อถือได้ ถอดรหัสสตริง แก้ไขหนึ่งฟิลด์ แล้วเข้ารหัสอีกครั้ง ฟิลด์อื่นทั้งหมดจะกลับมาเหมือนเดิมทุกประการ

หากคุกกี้ของคุณอยู่ในไฟล์ข้อความรูปแบบ Netscape ให้แปลงด้วยเครื่องมือคุกกี้ Netscape และอ่านคู่มือเรื่องการแปลงคุกกี้ Netscape เป็น JSON หากคุณใช้ auth_token ให้ดูวิธีเข้าสู่ระบบ Twitter ด้วย auth_token

จัดการข้อมูลที่ถอดรหัสแล้วให้เป็นส่วนตัว

ข้อมูลคุกกี้และเซสชันที่ถอดรหัสแล้วอาจมีโทเค็นที่ทำหน้าที่เหมือนกุญแจเข้าบัญชี จึงควรมีนิสัยดังนี้

  • ทำงานในเครื่อง เครื่องมือบนเบราว์เซอร์ที่ไม่อัปโหลดข้อมูลของคุณเหมาะกว่าเว็บไซต์สุ่มที่ส่งข้อความไปยังเซิร์ฟเวอร์ที่คุณตรวจสอบไม่ได้
  • อย่าวางค่าที่ถอดรหัสแล้วลงในแชตสาธารณะ ตั๋วซัพพอร์ต หรือภาพหน้าจอ เมื่อขอความช่วยเหลือ ให้แชร์เฉพาะชื่อฟิลด์
  • เก็บสตริงต้นฉบับไว้โดยไม่แก้ไข ถอดรหัสจากสำเนา และลบไฟล์ที่ใช้ทำงานเมื่อเสร็จ

สำหรับการแปลงง่าย ๆ ที่ทำซ้ำได้อย่างนี้ ตัวแปลงในเครื่องมักเพียงพอแล้ว บทความของเราเรื่องเมื่อไหร่ตัวแปลงรูปแบบในเครื่องก็เพียงพอ อธิบายวิธีตัดสินใจ เมื่อพร้อมเลือกบัญชี ลองดูหมวดบัญชีอายุเก่า และใช้หน้าเครื่องมือฟรีสำหรับทุกขั้นตอนตั้งแต่รับมอบจนถึงเข้าสู่ระบบ

คำถามที่พบบ่อย

รู้ได้อย่างไรว่าสตริงเป็น Base64?

ตรวจสามอย่าง คือใช้เพียงตัวอักษร ตัวเลข + และ / ความยาวลงตัวกับกลุ่มละสี่อักขระโดยอาจมี padding แบบ = และมักขึ้นต้นด้วย eyJ เมื่อเป็นออบเจ็กต์ JSON เครื่องมือระบุรูปแบบตรวจสามข้อนี้ให้อัตโนมัติ

ทำไม Base64 ของฉันถอดรหัสแล้วเป็นอักขระที่อ่านไม่ออก?

อาจเป็นเพราะข้อมูลนั้นไม่ใช่ข้อความมาตั้งแต่ต้น เช่น รูปภาพหรือเนื้อหาที่บีบอัด หรือใช้ชุดอักขระอื่น และจะเพี้ยนเช่นกันหากสตริงเป็นแบบ URL-safe แล้วไม่ได้แปลงก่อน

เครื่องหมายเท่ากับท้ายสตริงหมายถึงอะไร?

คือ padding Base64 เข้ารหัสทีละบล็อกสี่อักขระ และเครื่องหมายเท่ากับหนึ่งหรือสองตัวช่วยเติมบล็อกสุดท้ายเมื่อข้อมูลไม่พอ ตัวมันเองไม่มีข้อมูลอะไร

Base64 เป็นการเข้ารหัสลับหรือไม่?

ไม่ใช่ Base64 เปลี่ยนแค่วิธีเขียนข้อมูล และใครก็ย้อนกลับได้โดยไม่ต้องใช้กุญแจ ให้ปกป้องสตริง Base64 เหมือนที่คุณปกป้องข้อมูลที่อ่านออก

แปลง JSON กลับเป็น Base64 ได้อย่างไร?

วาง JSON ลงในเครื่องมือแปลง JSON เป็น Base64 เลือกผลลัพธ์แบบกะทัดรัดหรือแบบย่อหน้า แล้วคัดลอกผลลัพธ์ เครื่องมือจะแจ้งหาก JSON ไม่ถูกต้องก่อนเข้ารหัส

เครื่องมือ

หมวดหมู่ยอดนิยม

ฝ่ายสนับสนุนช่อง