Czyściciel MessagePack
Czyści zabałaganione ciągi hex lub base64 MessagePack. Usuwa prefiksy 0x, rozwija escape'y \xNN, rozpakowuje literały b'...' Pythona i ucina śmieci po kopiowaniu.
Co tak naprawdę robi Czyściciel MessagePack
Bądź ze sobą szczery przez sekundę: MessagePack to format binarny. Jeśli kilka bajtów zostało obciętych przy kopiowaniu z loga Cloudflare Worker, żadne narzędzie nie przywróci ich magicznie — te bajty znikły, a specyfikacja na github.com/msgpack/msgpack jest na tyle oparta na prefiksach długości, że brakujący ogon zawiedzie dekodowanie cokolwiek byś zrobił. Więc ta strona NIE udaje, że naprawia uszkodzone dane binarne.
To, co ROBI, to coś nudniejszego, ale przydatnego: usuwa szum formatowania, który dumpy hex i base64 (RFC 4648) zbierają po drodze przez twój terminal, debugger, konsolę iOS i schowek. Konkretnie: ucina otaczające białe znaki, zdziera otaczające cudzysłowy, rozpakowuje literały bajtów b'...' Pythona, rozwija sekwencje escape \xNN w surowe cyfry hex, usuwa prefiksy 0x i wyrzuca przecinki oraz białe znaki ze środka payloadu. Czysty wynik to to, co prawdziwy dekoder msgpack — jak oficjalna biblioteka @msgpack/msgpack czy każda zgodna implementacja — przyjmie bez narzekania.
Konkretny przykład: wklej b'\x83\xa7orderId\xa8ORD-7421...' po lewej, kliknij Wyczyść, dostaniesz po prawej surowy ciąg hex, który możesz wrzucić wprost do naszej Przeglądarki MessagePack lub pchnąć do Uint8Array w szybkim REPL-u Node. Nic wymyślnego. Po prostu usunięcie szumu.
Jak wyczyścić wklejony ciąg MessagePack
Trzy kroki. Zrobione na ten moment, kiedy właśnie skopiowałeś coś z linii loga i chcesz, żeby było to hex, który można podać dekoderowi.
Wklej zabałaganiony ciąg do lewego panelu
Wrzuć cokolwiek masz do lewego edytora — pythonowe repr(), linię z konsoli urządzenia iOS, wyjście curl --data-binary @file | xxd, wpis loga Cloudflare Worker, cokolwiek. Czyściciel nie potrzebuje, żeby wchodziło ładnie. Naciśnij Przykład zabałaganionego hex, żeby zobaczyć celowo brzydki przykład z mieszanką prefiksów i escape'ów. Przykład tego, co możesz wkleić:
b'\x83\xa7orderId\xa8ORD-7421\xa5items\x92\x82\xa3sku\xa7SKU-101\xa3qty\x02\x82\xa3sku\xa7SKU-244\xa3qty\x01\xa8customer\xa8Ava Chen'To jest prawdziwy literał bajtów Pythona wydrukowany przez msgpack-python. Czyściciel rozpoznaje opakowanie b'...', zdziera je i zamienia każdy \xNN w surowy hex.
Kliknij Wyczyść
Naciśnij zielony przycisk Wyczyść!!. To, że czyszczenie odpala się na klik, jest celowe — powinieneś zobaczyć, co wchodzi, zanim zaakceptujesz to, co wychodzi. Prawy panel pokazuje czysty hex (lub base64, autowykryte), a panel notatek pod edytorami listuje każdą zastosowaną transformację, żeby nic nie działo się po cichu.
Podaj wynik prawdziwemu dekoderowi
Weź czysty ciąg z prawego panelu i wrzuć go do naszej Przeglądarki MessagePack albo do narzędzia MessagePack na JSON. Jeśli bajty były naprawdę nienaruszone i tylko formatowanie było problemem, zobaczysz zdekodowany JSON — pozycje SKU-101, klienta Ava Chen, wszystko. Jeśli dekoder nadal narzeka, problem to prawdziwe uszkodzenie albo obcięcie, a jedyny sposób to złapać bajty jeszcze raz ze źródła.
Kiedy naprawdę z tego skorzystasz
Wyciągnąć bajty z loga Cloudflare Worker
Workery uwielbiają logować payloady binarne jako 0x83 0xa7 6f 72 64 65 72... ze spacjami między bajtami i 0x przy każdym. Skopiuj linię, wklej tutaj, a czyściciel jednym kliknięciem usunie prefiksy i spacje — zostawiając ci 83a76f7264657249..., które prawdziwy dekoder zje.
Rozpakować pythonowy repr z debuggera
Trafiłeś w breakpoint w pdb, uruchomiłeś p msgpack.packb(order) i dostałeś z powrotem b'\x83\xa7orderId\xa8ORD-7421'. To literał bajtów Pythona — prefiks b i cudzysłowy nie są częścią danych. Czyściciel je zdziera i rozwija każdy \xNN w prawdziwą parę hex, więc możesz wkleić wynik do przeglądarki bez przepisywania ręcznie.
Posprzątać dump curl --data-binary | xxd
Uruchomiłeś curl --data-binary @msg.bin https://api.example.com | xxd, żeby sprawdzić, co dostał serwer. Wyjście xxd ma numery linii po lewej, ASCII po prawej i bajty hex w środku ze spacjami. Sam ucinij kolumnę adresów i kolumnę ASCII, wklej środek do czyściciela, a on usunie spacje między bajtami, żeby hex znów był jednym solidnym ciągiem.
Wkleić z konsoli urządzenia iOS
Wyjście konsoli iOS czasem owija payload binarny w pojedyncze cudzysłowy i wstawia miękkie łamania linii. Czyściciel obsługuje otaczające cudzysłowy i białe znaki w jednym przejściu, co oszczędza ci zabawy w znajdź-i-zamień w edytorze tekstu, zanim cokolwiek zdekodujesz.
Częste pytania
Czy to narzędzie potrafi naprawić uszkodzone dane binarne MessagePack?
Nie, i powinieneś podejrzliwie patrzeć na każde narzędzie, które twierdzi, że potrafi. MessagePack to format binarny z prefiksami długości — jeśli bajt brakuje albo jest zły w środku pola długości, dekoder nie może zgadnąć, co tam miało być. Ta strona naprawia tylko śmieci po wklejeniu i szum formatowania. Jeśli twoje bajty są naprawdę uszkodzone, naprawą jest złapanie ich ponownie ze źródła: ponowić żądanie, odczytać ponownie z magazynu retencji logów, ponownie wyeksportować z bazy danych. Nie ma programowego zamiennika dla brakujących bajtów.
Co dokładnie znaczy „wyczyść" tutaj?
Sześć konkretnych normalizacji: ucina otaczające białe znaki; zdziera otaczające pojedyncze lub podwójne cudzysłowy; rozpakowuje literały bajtów b'...' / b"..." Pythona; rozwija sekwencje escape \xNN w surowe cyfry hex; usuwa prefiksy 0x z każdego bajtu; usuwa białe znaki i przecinki między bajtami. Po tym wszystkim wynik jest raz parsowany jako hex lub base64, żeby potwierdzić, że jest strukturalnie zdrowy. Panel notatek pod edytorami listuje każdą transformację, która faktycznie się odpaliła na twoim wejściu.
Dlaczego jest przycisk Wyczyść zamiast auto-czyszczenia podczas pisania?
Celowo. Większość naszych innych narzędzi auto-aktualizuje się przy zmianie wejścia, bo wejście jest czytelne dla człowieka i chcesz natychmiastowego feedbacku. To jest przeciwieństwo — wejście to stos sekwencji escape, a twoim celem jest zweryfikować, co zostało przekształcone, zanim zaufasz wyjściu. Klik-driven oznacza, że możesz wkleić, popatrzeć na wejście, kliknąć i potem przeczytać panel notatek, żeby potwierdzić, że zrobiliśmy to, czego oczekiwałeś.
Czy moje dane opuszczają przeglądarkę?
Nie. Całe czyszczenie biegnie lokalnie w tej karcie. Brak fetchowania, brak uploadu, brak telemetrii o wejściu. Zamknij kartę i dane znikają. Mimo to traktuj pasek URL jak przestrzeń publiczną — nie wklejaj payloadów z sekretami w query string i wyczyść schowek, jeśli niósł coś wrażliwego po skończeniu.
A jeśli moje wejście to base64 zamiast hex?
Jest auto-wykrywane. Jeśli wejście to wszystko znaki hex (po tym, jak usuniemy białe znaki, przecinki, 0x i escape'y \xNN) i ma parzystą długość, traktujemy je jako hex. Inaczej próbujemy standardowego base64. Tak czy inaczej, czyste wyjście zachowuje wykryty format — czysty hex zostaje hex, czysty base64 zostaje base64. Wrzuć wynik dalej do Przeglądarki MessagePack, która auto-wykrywa w ten sam sposób.
Dlaczego wyjście czasem wygląda identycznie jak wejście?
Bo twoje wejście było już czyste — nie ma nic do zrobienia. W takim wypadku panel notatek pokazuje „Wejście było już czyste." To normalne i dobre. Czyściciel nie wymyśla transformacji tylko po to, żeby wyglądać na zajętego.
Inne narzędzia MessagePack
Wyczyszczenie formatowania to pierwszy krok. Gdy ciąg jest czysty, te dekodują i robią pełną podróż w obie strony bajtów: