import requests
import json
import random
import re
import time
from datetime import datetime
from tqdm import tqdm
from colorama import Fore, Back, Style, init
# 初始化颜色库
init(autoreset=True)
# ==================== 全局配置 ====================
API_TOKEN = ‘g09Z8azEGy0dxXPob8wYERPC65zEIIwHdsuWd/F5cyYBlRX/wn6DB7CqPP0RbMeRnNvR5Q5C4++Mi3NyJtZpaysJ9ZSAuy+w/kEquDji9G6gR4knC+EOM37XXQyN76fX1+TCH82a5TOWUE/ZfH+RKmzOcyHWNIZB+lVjA2Bw8E/yB7zqXgDkBU6TKFXHZ3XP6R6fT9CCzfOZQ50qeV4XQCM5Tl0w+ehsVuvoxBeZvJbWZzuajzdiwIr708nKqh8ZEwSX8Qlq4ZUFbYDr1H8myHZ8MHAIbABcsAju2Zg+5cAaXyEu+RAdeM2m1bopkU7MML8J3iou13+aj1R0aRoIjg==’
# ==================== 工具函数 ====================
def print_banner():
“””ASCII艺术字欢迎界面”””
print(Fore.CYAN + r”””WWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXXXKKK
WWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXXXXKKK
WWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXXKK
WWWWWWWWWWWWWWWNWWWNNNNNNNNXK00KXXNNXXXXXXXXXXXXXXXXXXXXXXXK
WWWWWWWWWWWWWWWNWNNNNNNXOo:,””,:oOXXXXXXXXXXXXXXXXXXXXXXXX
WWWWWWWWWWWWWWWNWNNNNN0o;;;;;;;;;’.’o0XXXXXXXXXXXXXXXXXXXXXK
WWWWWWWWWWWWWWWWNNWNN0c:oxdddollcc:,.c0XXXXXXXXXXXXXXXXXXXKK
WWWWWWWWWWWWWWWWWNNNXxloodddddol:;;;”xKKKKXXXXXXXXXXXXXXKKK
WWWWWWWWWWWWWWNK0KNNXxlllc;:lc;,,”’,,oK0kk0XXKXKXXXXXKKKKKK
WWWWWWWWWWWNNNNOodk00xlllc;:lc::;;;;;,:dxxOKKKKKKXXXKKKKKKKK
WWWWWWWWNWWNKkxdok0kxxxddolll:,;ccc;;,,codxkO0KKKKKKKKKKKKKK
WWWWWWWWNWNNKkdoox00kxddollc:;,,;c:,,,;cllllodxO0KKKKKKKKKKK
WWWWWWWWNWWXOdkxdOKOoodollclc:;,,;;”,:llc:cllodkO0KKKKKKKKK
WWWWWWNWWNNNKKXkdkkodOkoclooocc:;,”’;clccclcccldxO00KKKKKKK
WWWWNNNNNNNNNNN0xkkO0XXOlc:;;,”…’,’,:;:llc:ccldxk00KKKKKK
WWWNNNNNNNNNNNNNX0kox0OOxl;,,”””cc. …,::::ccldxOO0KKKKK
WWNNNNNNNNNKOxoc;’..,’.’oxl::;;;::;,.. ..’,::codkO00KKKK
NNNNNNNNNNk,…………l0Okdolllc,. …,coxkOO0KKK
NNNNNNNNNk,………….;ONXkoodkd,. ‘ldxkO000K
NNNNNNNNKc……………xNKOO0K0o. .:odxkO000
NNNNNNNNk’…. ………lKKKXXXk’ ,loxxkO00
NNNNNNNXo….. .. …..:0KKXX0:. ‘cldxkOO0
NNNNNNN0;….. .. .dKKKKo. . .:cloxkOO
NNNNXNNx…… .c0Xkc’ .;::cldxk
NNNNXNXl….. ;O0:. .;;;:ccld
NNNNXNK:…. ‘kd. .,;;;::cl
NXNNXNO,.. .l’ .,;;;:::c
XXXXXNk’ .. .. .””.. .,;;;::::
XNNXXNk’ …. .;lcc:;. .,;;;;:::
XXNNXN0; ………. .,:;,’.. .,;;;;:::
“””)
# ==================== 辅助函数 ====================
def get_zodiac(year):
“””生肖计算”””
zodiacs = [‘鼠’,’牛’,’虎’,’兔’,’龙’,’蛇’,’马’,’羊’,’猴’,’鸡’,’狗’,’猪’]
return zodiacs[(year – 1900) % 12]
def get_constellation(month, day):
“””星座计算”””
constellations = [(1,20,’摩羯座’), (2,19,’水瓶座’), (3,21,’双鱼座’),
(4,20,’白羊座’), (5,21,’金牛座’), (6,22,’双子座’),
(7,23,’巨蟹座’), (8,23,’狮子座’), (9,23,’处女座’),
(10,24,’天秤座’), (11,22,’天蝎座’), (12,22,’射手座’)]
return next((c[2] for c in constellations if (month,day) <= (c[0],c[1])), ‘摩羯座’)
def show_loading():
“””加载动画”””
for _ in range(3):
print(Fore.YELLOW + ‘处理中…’, end=’\r’)
time.sleep(0.3)
print(‘ ‘ * 15, end=’\r’)
time.sleep(0.2)
# ==================== 身份证核心功能 ====================
def validate_id_structure(id_number):
“””身份证结构验证”””
area_codes = [’11’,’12’,’13’,’14’,’15’,’21’,’22’,’23’,’31’,’32’,’33’,
’34’,’35’,’36’,’37’,’41’,’42’,’43’,’44’,’45’,’46’,’50’,
’51’,’52’,’53’,’54’,’61’,’62’,’63’,’64’,’65’]
if not id_number.isdigit() or len(id_number) != 17:
return False, “格式错误”
if id_number[0:2] not in area_codes:
return False, “地区代码无效”
try:
birth_date = datetime.strptime(id_number[6:14], “%Y%m%d”)
if birth_date.year < 1900 or birth_date.year > datetime.now().year:
return False, “出生年份无效”
except ValueError:
return False, “出生日期无效”
return True, “验证通过”
def parse_id_info(id_number):
“””身份证信息解析”””
area_map = {
’11’:’北京市’, ’12’:’天津市’, ’13’:’河北省’, ’14’:’山西省’,
’15’:’内蒙古’, ’31’:’上海市’, ’32’:’江苏省’, ’33’:’浙江省’,
’34’:’安徽省’, ’35’:’福建省’, ’36’:’江西省’, ’37’:’山东省’,
’41’:’河南省’, ’42’:’湖北省’, ’43’:’湖南省’, ’44’:’广东省’,
’45’:’广西’, ’46’:’海南省’, ’50’:’重庆市’, ’51’:’四川省’,
’52’:’贵州省’, ’53’:’云南省’, ’54’:’西藏’, ’61’:’陕西省’,
’62’:’甘肃省’, ’63’:’青海省’, ’64’:’宁夏’, ’65’:’新疆’
}
birth_date = datetime.strptime(id_number[6:14], “%Y%m%d”)
return {
‘地区’: area_map.get(id_number[0:2], ‘未知地区’),
‘出生日期’: birth_date.strftime(“%Y年%m月%d日”),
‘性别’: “男” if int(id_number[16]) % 2 else “女”,
‘生肖’: get_zodiac(birth_date.year),
‘星座’: get_constellation(birth_date.month, birth_date.day),
‘年龄’: datetime.now().year – birth_date.year
}
def calculate_id_last_digit(id_number):
“””计算校验码”””
if len(id_number) != 17:
return Fore.RED + “❌ 需要17位号码”
is_valid, msg = validate_id_structure(id_number)
if not is_valid:
return Fore.RED + f”❌ 验证失败:{msg}”
weight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
check_code = [‘1′,’0′,’X’,’9′,’8′,’7′,’6′,’5′,’4′,’3′,’2′]
total = sum(int(n)*w for n,w in zip(id_number, weight))
full_id = id_number + check_code[total % 11]
info = parse_id_info(full_id)
info_str = ‘\n’.join([f”{k}: {v}” for k, v in info.items()])
return Fore.GREEN + f”✅ 完整号码:{full_id}\n” + Fore.CYAN + “📝 解析信息:\n” + info_str
# ==================== 验证功能 ====================
def verify_two_factors(name, id_number):
“””二要素核验”””
if len(id_number) == 17:
result = calculate_id_last_digit(id_number)
if “❌” in result: return result
id_number = result.split(“:”)[1][:18]
elif len(id_number) != 18:
return Fore.RED + “❌ 身份证长度错误”
show_loading()
headers = {
‘Host’: ‘wsbz.43id.cn’,
‘User-Agent’: ‘Mozilla/5.0 (iPhone; CPU iPhone OS 16_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.49(0x18003137) NetType/4G Language/zh_CN’,
‘token’: API_TOKEN
}
try:
response = requests.post(
‘https://wsbz.43id.cn/sfzsl/api/sfz/queryHandleDetial’,
headers=headers,
json={
“sqrsfhm”: id_number,
“sqrxm”: name,
“sqrhh”: “0000”,
“sqrdlpz”: “wxb49f8441aa6ef3c0”
},
timeout=10
)
status_map = {
“30”: (Fore.GREEN, “✅ 验证成功”, “🎉 验证通过”),
“20”: (Fore.RED, “❌ 验证失败”, “⚠️ 信息不匹配”),
“40”: (Fore.YELLOW, “⚠️ 请求过频”, “请稍后重试”),
“50”: (Fore.RED, “⛔ 服务错误”, “请联系管理员”)
}
status = response.json().get(‘statusCode’, ‘unknown’)
color, title, tip = status_map.get(status, (Fore.YELLOW, “⚠️ 未知错误”, “建议重试”))
return f”{color}{title}\n姓名:{name}\n身份证:{id_number}\n{tip}”
except Exception as e:
return Fore.RED + f”⛔ 网络错误:{str(e)}”
# ==================== 深度趣味功能 ====================
def get_historical_events(month, day):
“””历史上的今天”””
events = {
‘0101’: [(’45 BC’, ‘儒略历开始使用’), (‘1863’, ‘林肯签署《解放宣言》’)],
‘0214’: [(‘270’, ‘圣瓦伦丁殉道’), (‘1929’, ‘情人节大屠杀’)],
‘0704’: [(‘1776’, ‘美国独立宣言签署’)],
‘1024’: [(‘1945’, ‘联合国成立’)],
‘1225’: [(‘800’, ‘查理曼加冕’), (‘1642′,’牛顿诞生’)]
}
key = f”{month:02d}{day:02d}”
return events.get(key, [(‘1994′,’中国接入国际互联网’)]) # 默认事件
def generate_lucky_numbers(age):
“””生成幸运数字”””
base = age % 10 + 1
return sorted(random.sample(range(base, base+30), 5))
def get_age_facts(age):
“””年龄冷知识”””
facts = [
f”您的人生进度条:{age}/100″,
f”您已经历{age*365}个日出日落”,
f”您的心脏大约跳动过{age*35000000:,}次”,
f”您相当于{age*7}狗年或{age//9}猫年”
]
return random.sample(facts, 2)
def fortune_telling():
“””综合运势分析”””
try:
birth = input(“请输入生日(MMDD格式,如0228): “).strip()
if len(birth) != 4 or not birth.isdigit():
raise ValueError
month, day = int(birth[:2]), int(birth[2:])
if month <1 or month>12 or day<1 or day>31:
raise ValueError
zodiac = get_zodiac(datetime.now().year)
constellation = get_constellation(month, day)
age = datetime.now().year – (2000 + int(birth[:2]) if int(birth[:2]) < 50 else 1900 + int(birth[:2]))
# 构建结果
result = [
Fore.CYAN + “✨ 综合运势分析 ✨”,
f”📅 生日:{month}月{day}日”,
f”🐉 生肖:{zodiac}”,
f”🌌 星座:{constellation}”,
“”,
Fore.YELLOW + “📜 历史上的今天:”
]
# 添加历史事件
for year, event in get_historical_events(month, day):
result.append(f”• {year}年:{event}”)
# 添加年龄信息
result.extend([
“”,
Fore.MAGENTA + “🔢 数字命理:”,
f”幸运数字:{‘, ‘.join(map(str, generate_lucky_numbers(age)))}”
])
# 添加冷知识
result.extend([
“”,
Fore.GREEN + “🧠 冷知识:”
] + get_age_facts(age))
# 添加建议
result.extend([
“”,
Fore.BLUE + “💡 今日建议:”,
random.choice([
“适合开展新项目,但需注意细节”,
“与家人沟通会有意外收获”,
“财务方面请三思而后行”,
“尝试学习新技能会有惊喜”,
“给久未联系的朋友发个消息吧”
])
])
return ‘\n’.join(result)
except:
return Fore.RED + “⚠️ 请输入正确的生日格式(如:0228)”
# ==================== 菜单系统 ====================
def handle_id_tool():
“””身份证工具”””
while True:
print(“\n” + Fore.BLUE + “-“*30)
print(Fore.YELLOW + “1. 计算校验码\n2. 解析信息\n3. 返回”)
choice = input(Fore.GREEN + “请选择: “).strip()
if choice == ‘1’:
id_input = input(“请输入17位身份证号码: “).strip()
print(calculate_id_last_digit(id_input))
elif choice == ‘2’:
id_input = input(“请输入18位身份证号码: “).strip()
if len(id_input) != 18:
print(Fore.RED + “❌ 需要完整身份证号码”)
continue
info = parse_id_info(id_input)
print(Fore.CYAN + “📝 解析信息:\n” + ‘\n’.join([f”{k}: {v}” for k, v in info.items()]))
elif choice == ‘3’:
break
def main():
print_banner()
print(Fore.MAGENTA + “🌟 欢迎使用【孙笑川】身份系统 🌟”)
while True:
print(“\n” + Fore.BLUE + “=”*40)
print(Fore.YELLOW + “主菜单:\n1. 身份证工具\n2. 实名验证\n3. 运势分析\n4. 退出”)
choice = input(Fore.GREEN + “请输入选项: “).strip()
if choice == ‘1’:
handle_id_tool()
elif choice == ‘2’:
name = input(“姓名: “).strip()
id_num = input(“身份证号: “).strip()
print(verify_two_factors(name, id_num))
elif choice == ‘3’:
print(fortune_telling())
elif choice == ‘4’:
print(Fore.YELLOW + “✨ 感谢使用,祝您心想事成!”)
break
if __name__ == “__main__”:
main()
import pyzipper
zd = open(‘/storage/emulated/0/我的文件夹/m.txt’)
fp = pyzipper.AESZipFile(‘/storage/emulated/0/我的文件夹/文本编辑器代码编辑_2.0.0.zip’)
for pwd in zd:
pwd = pwd.rstrip()
try:
fp.extract(pwd=pwd.encode(‘utf-8’))
fp.close()
print(‘密码破解成功:’+pwd)
except:
print(‘密码错误’)
源码皆为开源
暂无评论内容