기록용으로 남깁니다.
Google chrome 브라우저에서 플러그인 업데이트가 떠 있길래 실행했는데 onetab 이 업그레이드 된 후 기존 내용이 다 날라가고 안보입니다..
이래저래 복구할 수 있는 방법 없을까 찾아봤는데 잘 안되었습니다..
어찌어찌 검색으로 찾다보니 C:\Users\my_loginid\Chrome\User Data\Default\Local Extension Settings\chphlpgkkbolifaimnlloiipkdnihall 라는 폴더를 알게 되었습니다.
그 안에 2MB 짜리 ldb 가 여러개 있더라구요. 열어봤더니 url 일부가 있었습니다!!
하나님께 감사드리며 이제 이 파일을 복구해보려고 시도를 했는데 안됩니다..
그래 목록이라도 추출해보자 했는데 안됩니다..
찾아보니 Google 에서 만든 leveldb 라는 파일이고 약간의 압축도 되는 것으로 보입니다..
c#, python 등 여러 버전으로 된 소스로 ldb 파일을 열어보려고 했는데 파일을 읽지 못하거나 실행이 안되거나 의존하는 google 라이브러리가 설치가 안됩니다..
google 라이브러리를 사용하지 않는 버전을 찾아보다가 오아시스를 한 개 발견했습니다 >,.<
다만, 잘 실행이 안되서 WSL을 사용해서 윈도우 환경이 아닌 리눅스 환경에서 접근했습니다. 필요 패키지 등 문제 없이 설치됩니다.
그리고 이 파일로 실행하면 제가 원하는 내용(사이트 제목과 url)만 나오는게 아니라 leveldb 전체 내용이 복잡한(리스트와 딕셔너리 조합체..) 형태로 나옵니다. 이를 제가 원하는 형태만 나오도록 수정한 버전입니다.
https://gist.github.com/simryang/4b6fdb45ea86f1913c2e027d511d75cd
#!/usr/bin/env python | |
# linux environment is recommended. not tested on other environment. tested on Ubuntu 20.04 | |
# python3 leveldb_dump_joseph.py '/mnt/d/Users/USERID/Chrome/User Data/Default/Local Extension Settings/chphlpgkkbolifaimnlloiipkdnihall' > result.csv | |
# result is tab seperated values(TSV). save result to *.csv and import on new excel documents with 'tab' seperator | |
# original code from https://gist.github.com/dexX7/cbd16b05f1f3870b7afc | |
# I made this code from original for recovering OneTab bookmarks | |
import binascii | |
import sys | |
import json | |
import yaml | |
import pprint | |
# pip3 install leveldb | |
import leveldb | |
def b2x(b): | |
"""Convert bytes to a hex string""" | |
if sys.version > '3': | |
return binascii.hexlify(b).decode('utf8') | |
else: | |
return binascii.hexlify(b) | |
def db_count(filepath): | |
"""Prints number of records in LevelDB database""" | |
db = leveldb.LevelDB(filepath) | |
count = 1 | |
for k in db.RangeIter(None, None, False): | |
count += 1 | |
print(count) | |
def db_dump(filepath, to_hex=0): | |
"""Prints records of LevelDB database""" | |
db = leveldb.LevelDB(filepath) | |
for k, v in db.RangeIter(None, None): | |
if to_hex: | |
k = b2x(k) | |
v = b2x(v) | |
if k.decode() != 'state': | |
continue | |
# print("key=", k.decode()) | |
# print("value=", json.loads(v.decode())) | |
# print(v.decode()) | |
decoded = v.decode() | |
tmp = json.loads(decoded) | |
tmp3 = json.loads(tmp) | |
return tmp3 | |
# print(yaml.dump(temp, default_flow_style=False)) | |
# print(json.loads(v.decode())) | |
# return json.loads(v.decode()) | |
# print('%s %s\n' % (k, v,)) | |
if __name__ == '__main__': | |
if len(sys.argv) == 1: | |
print('Dumps or counts content of one or more LevelDB databases.') | |
print('Binary entries can be converted to hex.\n') | |
print('Usage:') | |
print(' python %s [--count] [--binary] path1 [path2, path3, ...]\n' % (sys.argv[0],)) | |
print('Examples:') | |
print(' python %s ~/.bitcoin/testnet3/MP_spinfo/' % (sys.argv[0],)) | |
print(' python %s --count ~/.bitcoin/testnet3/MP_txlist/' % (sys.argv[0],)) | |
print(' python %s --binary ~/.bitcoin/testnet3/chainstate/' % (sys.argv[0],)) | |
count = 0 | |
to_hex = 0 | |
for arg in sys.argv[1:]: | |
if '--count' in arg: | |
count = 1 | |
continue | |
if '--binary' in arg: | |
to_hex = 1 | |
continue | |
if count: | |
db_count(arg) | |
else: | |
# db_dump(arg, to_hex) | |
ret = db_dump(arg, to_hex) | |
tablist = ret["tabGroups"] | |
csv_list = [] | |
for tabnode in tablist: | |
inner = tabnode['tabsMeta'] | |
for node in inner: | |
csv_list.append(f"{node['title']}\t{node['url']}") | |
csv_list.sort() | |
for line in csv_list: | |
print(line) |
# leveldb 설치
pip3 install leveldb
# ldb 파일이 위치한 경로가 너무 길기 때문에 링크로 축약하기
ln -s '/mnt/d/Users/USERID/Chrome/User Data/Default/Local Extension Settings/chphlpgkkbolifaimnlloiipkdnihall' onetab
# 실행
python3 leveldb_dump_joseph.py onetab > result.csv
# 결과 확인
excel 에서 새 문서를 만든 뒤 데이터>>외부 데이터 가져오기>>텍스트 에서 생성한 csv 를 선택하고 구분자를 탭(tab)으로 지정해주면 잘 열립니다.
텍스트 파일이기 때문에 텍스트 편집기로 확인하셔도 됩니다.
# 결론
onetab 저장 목록 복원 실패
onetab 의 ldb 파일에서 웹페이지 title과 url 추출은 성공
'IT > web' 카테고리의 다른 글
[baidunetdisk] 사진 자동 백업 기능 끄기 (0) | 2019.12.29 |
---|---|
[네이버 카페] 키워드 알림 끄기 (4) | 2019.07.16 |
[web][chrome] 웹페이지 로딩이 느려지고 spedcheck.space 접속이 시도될 때 (0) | 2018.03.20 |
[github] jekyll - disqus 사용하기 (0) | 2016.02.18 |
[Linux Mint 17] 구글 크롬 브라우저에서 플래시 플레이어 사용하기 (0) | 2015.01.13 |