Hari ini saya terkejut melihat bahwa seorang pria telah meretas batas 140 karakter Twitter. Pesan terdiri dari 930 karakter. Bagaimana mungkin ini bisa terjadi?
Tautan langsung ke tweet ini ada di sini . Untuk kenyamanan, saya menyalin tangkapan layar tweet lengkap di bawah ini:
Jawaban:
Pesan tersebut berisi poin-poin kode pengganti Unicode yang disandikan dengan tidak benar sebagai UTF-8. Pengkodean yang tidak tepat semacam ini juga disebut CESU-8 . Tampaknya beberapa antarmuka Twitter akan menerima kode pengganti CESU-8 yang dikodekan sebagai karakter (untuk tujuan batas 140 karakter), tetapi untuk tujuan tampilan, ia mengharapkan UTF-8 yang valid dan ini bukan urutan UTF-8 yang valid. Jadi alih-alih menampilkan 3 byte dari masing-masing sekuens ini sebagai 3 sekuens ok-gaya melarikan diri masing-masing 4 karakter, dan masing-masing titik kode pengganti akhirnya ditampilkan menggunakan 12 karakter.
Sebagai contoh \ 355 \ 240 \ 265 \ 355 \ 263 \ 220 ketika diterjemahkan sebagai C-lolos UTF-8, tanpa menolak pengganti seperti yang biasanya dilakukan ketika decoding UTF-8, menerjemahkan ke pasangan pengganti U + D835 U + DCD0. Memperlakukan pasangan pengganti ini sebagai UTF-16, seperti yang akan dilakukan ketika decoding CESU-8, menghasilkan karakter Unicode U + 1D4D0 MATHEMATICAL BOLD SCRIPT BOLD MODAL A (𝓐).
Jika pelepasan oktal gaya-C diterjemahkan dan kemudian hasilnya ditafsirkan sebagai CESU-8, hasilnya adalah:
Ini sebagai gambar, untuk mereka yang tidak memiliki set lengkap font Unicode diinstal:
sumber
Setiap kelompok karakter yang dimulai dengan garis miring terbalik dan diikuti oleh tiga angka adalah " Escape Sequence ". Masing-masing mewakili satu karakter. Ini biasanya digunakan untuk karakter yang tidak ada di keyboard Anda seperti karakter dan simbol non-Bahasa Inggris.
Dugaan saya adalah bahwa ketika menghitung karakter, Twitter menghitung masing-masing grup ini sebagai karakter tunggal tetapi ketika menampilkannya ke browser, ia mencetaknya sebagai empat.
Memperbarui:
Beberapa urutan pelarian yang tersedia adalah "karakter kontrol". Ini memberitahu komputer untuk melakukan sesuatu seperti memainkan suara peringatan atau menggerakkan kursor ke kiri atau ke kanan atau ke atas atau ke bawah atau menghapus karakter ke kiri kursor. Meskipun tidak satupun dari mereka adalah yang terakhir yang saya sebutkan (menghapus karakter sebelumnya), dia mungkin menggunakan karakter itu untuk membingungkan Twitter juga.
Menariknya, ketika kembali ke karakter normal, itu cukup berulang dan terlihat seperti ini:
Pembaruan 2:
Penjelasan yang dia berikan adalah "Пишите в DM, всегда на связи)" yang Google Terjemahan katakan kepada saya adalah "Menulis ke DM, selalu terhubung)". Saya tidak yakin apa artinya atau bagaimana itu membantu.
sumber