Mozilla Firefox 독점 .jsonlz4 형식을 디코딩 / 암호화하는 방법은 무엇입니까? (sessionstore-backups / recovery.jsonlz4)


19

.jsonlz4예를 들어 for와 같은 Mozilla Firefox의 독점 파일 형식을 처리하려고 sessionstore-backups/recovery.jsonlz4하지만 아무 소용이 없습니다.

충돌 세션의 일부 텍스트 영역에 입력 한 긴 텍스트, 특히 데이터를 다시 가져 오려면 어떻게해야합니까? 내 데이터 야!


10
독점 형식이라고 부르지 않습니다 . 물론 모질라 프로젝트 이외의 곳에서는 사용하지 않는 것이 관례이지만, 관련 (압축 해제) 압축 코드를 포함한 Firefox 전체가 무료이며 오픈 소스이므로이 형식을 독점적이라고해서는 안됩니다. (PS 저는 다르게 라이센스가 부여 된 브랜딩에 대해 이야기하고 있지 않습니다.)
— Ruslan

2
@Ruslan이지만 실제로는 독점적입니다. OSS는 이러한 파일의 내용을 조사 할 표준 도구가 없기 때문에 OSS가 독점적이지 않기 때문에 Java의 JAR 형식을 포함한 다른 모든 파일도 쉽게 할 수 있습니다. 모든 괜찮은 UNIX 시스템의 포트 / 패키지에서 사용할 수있는 100 % 표준 비 독점 도구로 관리합니다. OTOH, 실제로 이러한 .jsonlz4파일 에서 자신의 데이터를 다시 얻는 것은 쉽지 않습니다 .
— cnst

2
JsonLZ4는 나쁜 생각이었습니다.
— neverMind9

답변:


19

실제로 가능한 솔루션을 제공하는 Google 결과는 거의 없지만 https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/ 에 따르면 다음이 가장 안정적으로 작동하는 것으로 보입니다.

  • 에서 about:config, 토글 devtools.chrome.enabled기본에서 설정 false의 값true

  • Firefox 내에서 Scratchpad 를 엽니 다 .

    • 하나와 fn+ Shift+ F4맥북에,
    • 또는 Shift+ F4,
    • 또는 도구 → 웹 개발자 → 스크래치 패드를 통해 메뉴 표시 줄을 통해
  • Firefox의 Scratchpad 내의 메뉴 표시 줄에서 환경 을 컨텐츠 에서 브라우저로 변경하십시오 (이 단계를 생략 Exception: ReferenceError: OS is not defined하면 다음 단계 와 같은 오류가 발생 함 )

  • Firefox 의 Scratchpad 에서 다음과 같은 코드를 사용하십시오 .

    var file = "/Users/…/sessionstore-backups/recovery.baklz4";
    //OS.File.read(file, { compression: "lz4" }).then(bytes => 
    //  OS.File.writeAtomic(file + ".uncompressed", bytes));
    
    OS.File.read(file, { compression: "lz4" }).then(bytes => {
      OS.File.writeAtomic(file + ".uncompressed.stringify",
        JSON.stringify(JSON.parse(new TextDecoder().decode(bytes)),null,1))
    });
    

    JSON.stringify각 행에서 사용되는 공간 수 를 처리하는 마지막 매개 변수입니다 . 0을 넣으면 전체가 한 줄로 인쇄되고, 1을 넣으면 줄이 제대로 나뉩니다 (2를 넣으면 쓸모없는 공백이 너무 커지고 파일 크기가 커져서 거의 이점이 없습니다)

  • 클릭 Run버튼을

  • 터미널 앱 fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify내에서 실행


이것은 Linux의 FF 72에서 작동하지 않는 것 같습니다. 스크래치 패드가 제거되었지만 이제 콘솔은 다중 회선 모드를 지원합니다. 그러나이 OS.File.read(...줄은 "ReferenceError : OS is not defined"를 제공합니다.
— mivk

@mivk는 위에서 언급 한 오류입니다. 잘못된 환경으로 인해 발생합니다. 환경을 우회 할 방법이 없습니까?
— cnst

이 "환경"설정 또는 FF 72.0.1에서 비슷한 것을 찾지 못했습니다.
— mivk

12

불행히도 비표준 헤더로 인해 표준 도구가 작동하지 않습니다. 거기에 오픈 제안 있음을 변경할 수는. 분명히 표준 lz4 프레임 형식이 존재하기 전에 Mozilla 헤더가 고안되었습니다. 표준 lz4 블록을 감 쌉니다.

그러나 동일한 버그 보고서 에는 몇 가지 대체 방법이 포함되어 있습니다. 간단히 나열하겠습니다.

  • Windows 용 바이너리 빌드 를 포함 하고 * nix에서 쉽게 빌드 할 수 있는 dejsonlz4 도구를 사용하십시오.
    • lz4json 은 유사한 도구이지만 외부 liblz4에 의존하며 * nix에서 빌드하기가 다소 쉽지만 Windows에서는 더 어렵습니다 (WSL 외부).
  • 이 매우 간단한 Python 스크립트를 사용하십시오 : https://gist.github.com/Tblue/62ff47bef7f894e92ed5 (pip 또는 패키지 관리자를 통한 lz4 패키지 필요)-스크립트는 python3 인 것처럼 보이지만 python2에 쉽게 적용 할 수 있습니다
  • 있습니다 webextension 다음을 열 수 있어야 가능합니다. NB : 소스 를 사용할 수 있지만 소스를 확인하지 않았으며 요청한 권한이 약간 관련되어 있습니다 ( 특히 우려에 대한 응답 ).
  • 이론적으로 처음 8 바이트를 제거 할 수 있어야합니다 (예 :로 dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1). 유효한 lz4 블록을 남겨 두어야합니다. 이것은 lz4 프레임과 는 다릅니다 . 대부분의 프로그래밍 언어에는 블록을 쉽게 해독 할 수있는 라이브러리가 있지만 사전 빌드 된 도구를 찾는 것이 더 어렵습니다. 예를 들어 liblz4-tool패키지는 프레임 형식 만 허용합니다.

1
LZ4가 왜 처음에 필요한가? LZ4는 절대적인 아이디어입니다.
— neverMind9

BTW는 UNIX®, Mac OS X, MacOS, FreeBSD, OpenBSD 및 NetBSD ( github.com/cnst/lz4json)에서 깔끔하게 컴파일되는 lz4json입니다 .
— cnst December

5

이를 위해 명시 적으로 설계된 다음 무료 온라인 도구를 사용하여 {profile-dir} /sessionstore-backups/recovery.jsonlz4 파일 에서 URL을 추출 할 수있었습니다 .

https://www.jeffersonscher.com/ffu/scrounger.html

동일한 사이트는 {profile-dir} / bookmarkbackups 디렉토리 에서 jsonlz4 파일 을 해독하기위한 유사한 도구를 제공합니다 .


2
또한 이것을 발견하고 완벽하게 작동합니다.
— lowtechsun

1

에 UNIX® 및 UNIX는 같은 시스템 의 pkgsrc, 다음과 맥 OS MacPorts를 가진 X, FreeBSD의, 오픈 BSD 나 NetBSD에 같은 https://github.com/cnst/lz4json 포크 lz4json의도 깨끗하게 밖으로의 컴파일하는 데 사용할 수 있습니다 예 : MacPort가있는 Mac OS X의 경우 :

sudo port install lz4
git clone https://github.com/cnst/lz4json.git
cd lz4json
make
./lz4jsoncat ~/Library/Application\ Support/Firefox/Profiles/CHANGE\
THIS.default/sessionstore-backups/recovery.jsonlz4 \
| python -m json.tool | fgrep :textarea | more
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.