Foxmail 本地邮箱密码破解思路方法分享

article/2025/11/6 10:44:53

本文主要以POP3为例讲解, 其他邮件协议可以参考思路, 自行尝试解决。

最近发生了一件比较尴尬的事, 公司邮箱密码忘记了, 又不想麻烦IT部门更改, 就想尝试下自己破解下本地的密码。 (反正密码已经以加密形式保存在本地电脑上了)

看到网上分享的一些办法, 大体有俩种:

一、破解本地密码文件。(密文通过秘钥(不通版本秘钥有差别), 异或运算计算出的密文密码, 解密就是按照加密规则逆运算回去)

二、 去掉SSL访问, 用抓包工具(wireshark等)抓取明文数据。

第一种耗时耗力, 版本差异引起方法不通, 还需要破壳工具啥的自己去实际抓抓。

第二种不能用, 公司邮箱服务不允许明文连接, 加密数据不好破解。

所以我用了另一种方式, 下面直接分享步骤和代码, 后面再分享思路

1. 更改hosts文件, 添加如下内容:

127.0.0.1 <pop3邮件服务地址>

2. 更改foxmail邮箱服务配置, 去掉SSL

20210819104046880.png

3. 启动python写的服务程序, 代码如下:

import socket
if __name__ == "__main__":s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(("127.0.0.1", 110))s.listen(1)print("ready")while 1:conn, addr = s.accept()print("connected by "+str(addr))conn.send("+OK, POP3 server is ready.\r\n".encode("UTF-8"))while 1:data=conn.recv(1024).decode("UTF-8")if(data.find("QUIT") == 0):conn.close()breakelse:if(data.find("USER") == 0 ordata.find("PASS") == 0):print(data.strip())conn.send("+OK\r\n".encode("UTF-8"))

 4. foxmail中点击“收件”, Python服务打印用户名密码:

20210819104709323.png

本地的加密用户名就获取到了。

 下面说下思路。其实思路也很简单, 就是模拟POP3协议, 写个假的POP3服务, 然后让foxmail连接这个POP3服务, 并把用户名和密码发送给我们的POP3服务。也是参考抓包提取密码的方法。只是没见过其他人分享过, 自己就分享了下, 其他邮件协议也可以参考下, 不需要把邮件协议完全模拟出来, 只要能够骗过FOXMAIL把用户名密码传过来认证就可以了。

下面大体说下POP3协议:

1. TCP三次握手, 连接到POP3服务

2. 服务端发送  “+OK...”信息, 表示服务已经准备好, 等待客户端发送认证信息。(POP3消息边界符也是 CRLF, 别忘记在消息后面添加)

3. 客户端 发送 USER <邮箱名>  到 POP3服务

4. POP3 返回“+OK”消息, 等待客户端发送密码认证

5. 客户端发送  PASS <邮箱密码> 到POP3服务

6. POP3返回  “+OK”消息, 表示认证成功, 就可以等待客户端接下来的操作了

7. 客户端发送 QUIT 表示断开连接。

基于这个步骤, 我们就可以写个模拟POP3协议的服务, “骗取”foxmail的本地密码。当然这种只适合用户忘记本地密码。(密码已经存储在本地了, 只是忘记了, 所以不算做坏事。)


http://chatgpt.dhexx.cn/article/gi13as28.shtml

相关文章

Java中IO流基本介绍(5)——InputStreamReader和OutputStreamWriter

1 基本概括 2 主要介绍 2.1 InputStreamReader/OutputStreamWriter 相比FileReader和FileWriter的优势 前者可以指定读取和写出的编码&#xff0c;不容易出现乱码。 2.2 转换流的作用 1. 如果目前所 获取到的是一个字节流需要转换字符流使用&#xff0c;这时候就可以使用转换…

IO流——InputStreamReader 和 OutputStreamWriter

本次博客来学习IO流中的转换流——InputStreamReader 和 OutputStreamWriter。 InputStreamReader 和 OutputStreamWriter InputStreamReader&#xff1a;Reader的子类&#xff0c;可以将InputStream(字节流)包装成Reader(字符流)。 OutputStreamWriter&#xff1a;Writer的子…

OutputStreamWriter类

1、概述 转换流 java.io.OutputStreamWriter&#xff0c;是Writer的子类&#xff0c;是从字符流到字节流的桥梁。 它使用指定的字符集将字符编码为字节。它的字符集可以由名称指定&#xff0c;也可以接受平台的默认字符集。 2、继承父类的共性成员方法 该类继承 Writer 类&…

转换流OutputStreamWriter

1、转换流–OutputStreamWriter简介 : OutputStreamWriter extends Writer, 转换流也是继承自超类Writer&#xff0c;因此可以使用Writer中的共性方法&#xff1a;write(int c),write(char[] ch),…,flash(),close(),… OutputStreamWriter常用的构造方法&#xff1a; 1&…

详解OutputStreamWriter与InputStreamReader

1.转换流原理 2. OutputStreamWriter java.io.OutputStreamWriter extends Writer OutputStreamWriter:是字符流通向字节流的桥梁&#xff1b;可使用指定的charset将要写入流中的字符编码成字节。&#xff08;编码&#xff1a;把能看懂的变成看不懂&#xff09; 2.1 继承自父…

Java IO体系之OutputStreamWriter

介绍 字符输出流Writer 的实现类 继承关系图 样例 public static void main(String[] args) throws IOException{//创建字节输出流&#xff0c;绑定数据文件&#xff08;没有则创建&#xff09;FileOutputStream fosnew FileOutputStream("D:\\HELLO.txt");// 创建…

streamwriter java_Java OutputStreamWriter 类

Java OutputStreamWriter 类 在本教程中&#xff0c;我们将借助示例学习Java OutputStreamWriter及其方法。 java.io包的OutputStreamWriter类可用于将字符形式的数据转换为字节形式的数据。 它继承了抽象类Writer。 OutputStreamWriter类可与其他输出流一起使用。 它也被称为字…

40OutputStreamWriter

写的转换流&#xff0c;写我们相要写的编码文件 java.io.OutputStreamWriter etends Writer InputStreamReader是字节流通向字符流的桥梁&#xff0c;它使用指定的Charset 将要写入流中的字符编码成字节。&#xff08;编码&#xff1a;把能看懂的变成看不懂的&#xff09; 继承…

Java IO 学习总结(五)OutputStreamWriter

Java IO 学习总结&#xff08;一&#xff09;输入流/输出流 Java IO 学习总结&#xff08;二&#xff09;File 类 Java IO 学习总结&#xff08;三&#xff09;BufferedInputStream Java IO 学习总结&#xff08;四&#xff09;BufferedReader 缓冲字符流 Java IO 学习总结&…

IO流(学习Java第24天)(转换流OutputStreamWriter、转换流InputStreamReader、字符流便捷类)

目录 一、转换流OutputStreamWriter 二.转换流InputStreamReader 三.字符流便捷类 一、转换流OutputStreamWriter java.io.OutputStreamwriter类&#xff0c;继承Writer类&#xff0c;他是字符输出流&#xff0c;只能操作文本文件&#xff0c;不能操作其他类型文件。Output…

Java IO流学习总结五:转换流-InputStreamReader、OutputStreamWriter

类的继承关系 Reader |__ BufferedReader、StringReader、InputStreamReader|__ FileReaderWriter |__ BufferedWriter、StringWriter、OutputStreamWriter|__ FileWriter InputStreamReader 简介 InputStreamReader 是字符流 Reader 的子类,是字节流通向字符流的桥梁。你…

mysql判断是否存在索引并删除_mysql判断索引存在时删除索引的方法_MySQL

bitsCN.com mysql判断索引存在时删除索引的方法 mysql的drop index语句不支持if exists条件&#xff0c;在sql中先删除索引&#xff0c; 再创建索引&#xff0c;如果对于新建的数据库&#xff0c;库中没有该索引&#xff0c;就会报错&#xff0c; 导致后面的sql不再执行。 因此…

Oracle索引详解(索引的原理,创建索引,删除索引,修改索引等)

Oracle索引详解 一.索引概述 Oracle作为关系型数据库&#xff0c;用户查找数据与行的物理位置无关&#xff0c;表中的每一行均用一个ROWID来标识&#xff0c;当Oracle数据库中存储海量的记录时&#xff0c;就意味着有大量的ROWID标识&#xff0c;那么Oracle如何能快速找到指定…

es批量删除索引

es批量删除索引 ES/DSL语句删除索引中的文档,以时间为过滤条件 执行时如图所示: 请求:sgl_zc_termina_exhaust_20200924/_delete_by_query post DSL风格的语句: { “query”: { “bool”: { “must”: [{ “range”: { “collectTime”: { “gt”: “1616342400000”, “lt”…

Phoenix删除索引

直接在DBeaver的工具中使用Phonix连接hbase,创建索引后&#xff0c;直接右键删除索引&#xff0c;会报错无法删除。 以下提示删除索引的操作&#xff1a; select * from SYSTEM."CATALOG" where TABLE_NAMET5_3D71E0783EE811E9B1C10050569D5D3A AND TABLE_SCHEM MP…

mysql删除索引_SQL基础12:Mysql删除索引

图片发自简书App 学习此文之前&#xff0c;一起先来回顾下Mysql创建索引 简介&#xff1a;在本篇教程中&#xff0c;你将学习如何使用MYSQL DROP INDEX语法删除表中已经存在的索引。 一、MYSQL删除索引的语法 要从表中删除现有索引&#xff0c;可使用DROP INDEX*语句&#xff0…

MySql 删除索引

#删除索引 -- (1)使用alter table 删除 -- 语法:alter table 表名 drop index|key 索引名 -- 列如&#xff1a;删除表book11中的索引 alter table book11 drop index sno -- (2)使用 drop index 删除 -- 语法:drop index 索引名称 on 表名 -- 列如&#xff1a;删除表book…

MySQL——索引的创建与删除

文章目录 MySQL——索引的创建与删除1、创建索引的三种方式1.1、建表时创建索引1.2、修改表时创建索引1.3、使用 CREATE INDEX 语句创建索引 2、删除索引 MySQL——索引的创建与删除 1、创建索引的三种方式 1.1、建表时创建索引 使用CREATE TABLE创建表时&#xff0c;除了可…

c++ 实现meanshift

自己手动实现了meanshift&#xff0c;算是把之前还有些模糊的地方给搞清楚了&#xff0c;本来应该半天就可以的&#xff0c;结果高斯核函数计算权重那里弄错了&#xff0c;多花了好一阵子功夫才搞定。 原理 对于所有样本点中的一个点x&#xff0c;计算它的shift vector&#…

Meanshift均值漂移聚类算法

一、meanshift 均值漂移就是把指定的样本点沿着密度上升的方向移向高密度区域。这里可以用矢量加法的几何意义来理解。参考博文Mean Shift 聚类算法 meanshift为 M r ( x ) 1 k ∑ x i ∈ S r ( x ) ( x i − x ) M_r(x)\frac{1}{k}\sum\limits_{x_i\in S_r(x)}(x_i-x) Mr​…