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.