当前位置:宁波企业邮 » 企业目录 » 烟台 » 文章详细

python程序下载腾讯企业邮箱附件_获取腾讯企业邮箱通讯录python脚本(带登录功能)...
<>

之前的

帖子

加入了 @

sdc1992 提供的登录部分

根据邮箱和密码,获取企业通讯录

运行后会生成两个文件

一个只包含邮箱,可以用于后续爆破

一个为部门名称 和 部门下的员工邮箱的树形结构,可以方便找到特定部门的邮箱,比如开发和运维

类似这样:

----人事部----

张三  zhangsan@domain.com

----技术部----

李四  lisi@domain.com

王五  wangwu@domain.com

requirements.txt

requests>=2.9.1

rsa

argparse

pyopenssl

ndg-httpsclient

pyasn1

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Author: blinking.yan

# @Date: 2016-03-03 21:56:26

# @Last Modified by: blinking.yan

# @Last Modified time: 2016-03-03 22:45:18

# @Description: 获取腾讯企业邮箱通讯录

import requests

import re

import rsa

import sys

import base64

import time

import argparse

reload(sys)

sys.setdefaultencoding('utf8')

# 打印部门人员信息

def print_tree(id, department_infos, level, staff_infors, f):

prefix = '----' * level

text = prefix + department_infos[id]['name'] + prefix

print text

f.write(text + ' ')

for key, value in department_infos.items():

if value['pid'] == id:

print_tree(

value['id'], department_infos, level + 1, staff_infors, f)

prefix = ' ' * level

for staff in staff_infors:

if staff['pid'] == id:

text = prefix + staff['name'] + ' ' + staff['alias']

print text

f.write(text + ' ')

# 提取RSA算法的公钥

def get_public_key(content):

regexp = r'vars*PublicKeys*=s*"(w+?)";'

results = re.findall(regexp, content)

if results:

return results[0]

# 获取ts参数

def get_ts(content):

regexp = r'PublicTss*=s*"([0-9]+)"'

results = re.findall(regexp, content)

if results:

return results[0]

# 计算p参数

def get_p(public_key, password, ts):

public_key = rsa.PublicKey(int(public_key, 16), 65537)

res_tmp = rsa.encrypt(

'{password} {ts} '.format(password=password, ts=ts), public_key)

return base64.b64encode(res_tmp)

def msg():

return 'python get_tencent_exmail_contacts.py -u name@domain.com -p passw0rd'

if __name__ == "__main__":

description = "获取腾讯企业邮箱通讯录"

parser = argparse.ArgumentParser(description=description, usage=msg())

parser.add_argument(

"-u", "--email", required=True, dest="email", help="邮箱名")

parser.add_argument(

"-p", "--password", required=True, dest="password", help="邮箱密码")

parser.add_argument(

"-l", "--limit", required=False, dest="limit", default=10000, help="通讯录条数")

parser.add_argument(

"-e", "--efile", required=False, dest="emailfile", default="emails.txt", help="邮箱保存文件")

parser.add_argument(

"-d", "--dfile", required=False, dest="departfile", default="departments.txt", help="部门信息保存文件")

args = parser.parse_args()

email = args.email

password = args.password

limit = args.limit

emailfile = args.emailfile

departfile = args.departfile

session = requests.Session()

headers = {'Connection': 'keep-alive',

'Cache-Control': 'max-age=0',

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'Upgrade-Insecure-Requests': 1,

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36',

'DNT': 1,

'Accept-Encoding': 'gzip, deflate, sdch',

'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4',

}

resp = session.get('http://exmail.qq.com/login', headers=headers)

content = resp.content

public_key = get_public_key(content)

ts = get_ts(content)

p = get_p(public_key, password, ts)

# print ts

# print public_key

# print p

uin = email.split('@')[0]

domain = email.split('@')[1]

# print uin

# print domain

post_data = {}

post_data['sid'] = ''

post_data['firstlogin'] = False

post_data['domain'] = domain

post_data['aliastype'] = 'other'

post_data['errtemplate'] = 'dm_loginpage'

post_data['first_step'] = ''

post_data['buy_amount'] = ''

post_data['year'] = ''

post_data['company_name'] = ''

post_data['is_get_dp_coupon'] = ''

post_data['starttime'] = int(time.time() * 1000)

post_data['redirecturl'] = ''

post_data['f'] = 'biz'

post_data['uin'] = uin

post_data['p'] = p

post_data['delegate_url'] = ''

post_data['ts'] = ts

post_data['from'] = ''

post_data['ppp'] = ''

post_data['chg'] = 0

post_data['loginentry'] = 3

post_data['s'] = ''

post_data['dmtype'] = 'bizmail'

post_data['fun'] = ''

post_data['inputuin'] = email

post_data['verifycode'] = ''

headers = {'Content-Type': 'application/x-www-form-urlencoded'}

url = 'https://exmail.qq.com/cgi-bin/login'

resp = session.post(url, headers=headers, data=post_data)

regexp = r'sid=(.*?)"'

sid = re.findall(regexp, resp.content)[0]

url = 'http://exmail.qq.com/cgi-bin/laddr_biz?action=show_party_list&sid={sid}&t=contact&view=biz'

resp = session.get(url.format(sid=sid))

text = resp.text

regexp = r'{id:"(S*?)", pid:"(S*?)", name:"(S*?)", order:"(S*?)"}'

results = re.findall(regexp, text)

department_ids = []

department_infor = dict()

root_department = None

for item in results:

department_ids.append(item[0])

department = dict(id=item[0], pid=item[1], name=item[2], order=item[3])

department_infor[item[0]] = department

if item[1] == 0 or item[1] == '0':

root_department = department

regexp = r'{uin:"(S*?)",pid:"(S*?)",name:"(S*?)",alias:"(S*?)",sex:"(S*?)",pos:"(S*?)",tel:"(S*?)",birth:"(S*?)",slave_alias:"(S*?)",department:"(S*?)",mobile:"(S*?)"}'

all_emails = []

staff_infors = []

for department_id in department_ids:

url = 'http://exmail.qq.com/cgi-bin/laddr_biz?t=memtree&limit={limit}&partyid={partyid}&action=show_party&sid={sid}'

resp = session.get(

url.format(limit=limit, sid=sid, partyid=department_id))

text = resp.text

results = re.findall(regexp, text)

for item in results:

all_emails.append(item[3])

print item[3]

staff = dict(uin=item[0], pid=item[1], name=item[2], alias=item[3], sex=item[4], pos=item[

5], tel=item[6], birth=item[7], slave_alias=item[8], department=item[9], mobile=item[10])

staff_infors.append(staff)

with open(emailfile, 'w') as f:

for item in all_emails:

f.write(item + ' ')

with open(departfile, 'w') as f:

print_tree(root_department['id'], department_infor, 0, staff_infors, f)

print("total email count: %i" % len(all_emails))

print("total department count: %i" % len(department_ids))



阅读:289
日期:2021-01-26

打印 】 【 关闭 】  【 字体: 】 
上一篇: python程序下载腾讯企业邮箱附件_python收取邮件(腾讯企业邮箱)
下一篇: 企业邮箱如何绑定微信?微信怎么添加邮箱?
  >> 相关文章
 

服务热线

0574-55011290

微信二维码