Python 批量生成手机通讯录.vcf文件

随机生成虚假通讯录文件
专治各种非法获取用户通讯录信息的骗子
找不用的手机 多生成几个文件导入进去,混淆骗子服务器数据

支持两种生成模式:
0:人名
在这里插入图片描述
1:亲戚关系(内置384种常用称呼)
在这里插入图片描述

文件支持直接导入手机转成通讯录信息

# !/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: JHC000abc@gmail.com
@file: demo.py
@time: 2024/11/26 10:46
@desc:

"""
import uuid
import quopri
from faker import Faker


class GenContacts(object):
    """
    随机生成虚假通讯录文件
        专治骗子
    """

    def __init__(self):
        self.fake = Faker('zh_CN')
        self.self_relations = self.makeSelfRelation()

    def formatPhone(self, phone):
        """

        :param phone:
        :return:
        """
        return f"{phone[:3]} {phone[3:7]} {phone[7:]}"

    def secretName(self, name):
        """

        :param name:
        :return:
        """
        utf8_name = name.encode('utf-8')
        return quopri.encodestring(utf8_name).decode('ascii')

    def getRandomUserInfo(self):
        """

        :return:
        """
        if self.mode == "0":
            name = self.fake.name()
        else:
            name = self.fake.random_sample(self.self_relations, 1)[0]
        phone = self.formatPhone(self.fake.phone_number())
        print(name, phone)
        return self.secretName(name), phone

    def createVCF(self, name, phone):
        """

        :param name:
        :param phone:
        :return:
        """
        return f"""BEGIN:VCARD\nVERSION:2.1\nN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;{name};;;\nFN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:{name}\nTEL;CELL:{phone}\nEND:VCARD\n"""

    def check_mode(self, mode):
        """

        :param mode:
        :return:
        """
        if mode == "0":
            self.mode = "0"
        elif mode == "1":
            self.mode = "1"
        else:
            self.mode = "0"

    def genVCFFiles(self, gen_nums):
        """

        :param gen_nums:
        :return:
        """
        save_file = f"random_{uuid.uuid4()}.vcf"
        with open(save_file, "w", encoding="utf-8") as fp:
            for _ in range(int(gen_nums) + 1):
                name, phone = self.getRandomUserInfo()
                write_info = self.createVCF(name, phone)
                fp.write(write_info)
        return save_file

    def makeSelfRelation(self):
        """

        :return:
        """
        head = ["大", "二", "三", "四", "五", "六", "七", "八", "九", "老", "小"]
        head_relation = ["媳妇", "老婆", "老公", "小三", "二奶", "情人", "哥", "姐", "弟", "妹", "爷", "伯",
                         "奶", "外公", "外婆", "叔", "阿姨", "舅舅", "舅妈", "姑姑", "姑父", "姨妈", "姨父", "表哥",
                         "表姐", "表弟", "表妹", "堂哥", "堂姐", "堂弟", "堂妹", "舅", "姑", "姨"]
        extend_relation = ["妻", "小妾", "亲家公", "亲家母"]
        lis = []
        for i in head:
            for j in head_relation:
                lis.append(f"{i}{j}")
        lis.extend(extend_relation)
        return lis

    def process(self):
        """

        :return:
        """
        gen_nums = input("输入生成通讯录条数:")
        mode = input("输入模式【0:人名 1:关系】默认0:")
        self.check_mode(mode)
        try:
            gen_nums = int(gen_nums)
        except:
            gen_nums = 0
        if gen_nums > 0 and gen_nums <= 99999:
            save_file = self.genVCFFiles(gen_nums)
            print(f"通讯录 {gen_nums} 条 生成完成:{save_file}\n回车退出")
        else:
            input("输入必须为 1-9999 之间纯数字\n回车退出")


if __name__ == '__main__':
    gc = GenContacts()
    gc.process()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值