由火车票引发的对社工和隐私安全的思考

火车票脱敏身份证信息还原

  • 经常在朋友圈看到好友晒旅行的火车票. 火车票有我们的姓名及经过脱敏处理的身份证信息, 但仅仅屏蔽了出生的月份日期,通过校验位暴力遍历便可筛选可能的30余组号码.即猜中的概率为3%.如果再通过其它渠道获得如星座等信息.就可将猜中的概率提高10倍,即有三分之一的可能性被猜中.

  • 验证Demo:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    import re
    import calendar

    IDCARD_REGEX = '[1-9][0-9]{14}([0-9]{2}[0-9X])?'

    def is_valid_idcard(idcard):
    """Validate id card is valid."""
    if isinstance(idcard, int):
    idcard = str(idcard)

    if not re.match(IDCARD_REGEX, idcard):
    return False
    # 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:
    factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]

    items = [int(item) for item in idcard[:-1]]
    # 将这17位数字和系数相乘的结果相加
    copulas = sum([a * b for a, b in zip(factors, items)])
    # 用加出来和除以11,看余数是多少? 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。 其分别对应的最后一位身份证的号码为:
    ckcodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']

    return ckcodes[copulas % 11].upper() == idcard[-1].upper()

    def show_possibility_month_day(year):
    for month in range(1, 13):
    m = '0' + str(month) if len(str(month)) < 2 else str(month)

    for day in range(calendar.monthrange(year, month)[1] + 1)[1:]:
    d = '0' + str(day) if len(str(day)) < 2 else str(day)

    r = '110101'+str(year)+m+d+'0539'

    if is_valid_idcard(r):
    print(r)

    if __name__ == '__main__':
    show_possibility_month_day(1999)

    # 符合条件的可能
    '''
    110101199901010539
    110101199901280539
    110101199902080539
    110101199902160539
    110101199902240539
    110101199903040539
    110101199903120539
    110101199903200539
    110101199904190539
    110101199904270539
    110101199905070539
    110101199905150539
    110101199905230539
    110101199905310539
    110101199906030539
    110101199906110539
    110101199907180539
    110101199907260539
    110101199908060539
    110101199908140539
    110101199908220539
    110101199908300539
    110101199909020539
    110101199909100539
    110101199909290539
    110101199910080539
    110101199910160539
    110101199910240539
    110101199911040539
    110101199911120539
    110101199911200539
    110101199912190539
    110101199912270539
    '''

    隐私泄露的危害:

  • 首先信息泄露会推动诈骗行为,即使自己有防范意识也难免会殃及身边的亲朋好友.泄露的信息越多,诈骗者的套路手段越高明.

  • 所以为了自己爱的人和爱自己的人应尽量避免泄露重要的身份信息,即使要晒图也要打好码啊!(尤其身份证后四位)[手动捂脸]

如何检测信息是否泄露及应对措施:

  • 社工自己:即利用多个搜索引擎搜索自己可能泄露出的信息(如姓名, 身份证号, 手机号等).即使没有查到也不表明隐私信息是安全的, 可能仍在地下市场流动或在某个社工库中伺机爆发.

  • 若发现搜索引擎有相关隐私记录需第一时间联系相关搜索网站,避免扩大影响.如百度搜索投诉服务中心

  • 侵犯隐私权的行为的主要表现形式:

    根据国情和社情,下列行为可归入侵犯隐私权范畴:
    1、未经公民许可,公开其姓名、肖像、住址和电话号码。
    2、非法侵入、搜查他人住宅,或以其他方式破坏他人居住安宁。
    3、非法跟踪他人,监视他人住所,安装窃听设备,私拍他人私生活镜头,窥探他人室内情况。
    4、非法刺探他人财产状况或未经本人允许公布其财产状况。
    5、私拆他人信件,偷看他人日记,刺探他人私人文件内容,以及将他们公开。
    6、调查、刺探他人社会关系并非法公诸于众。
    7、干扰他人夫妻性生活或对其进行调查、公布。
    8、将他人婚外性生活向社会公布。
    9、泄露公民的个人材料或公诸于众或扩大公开范围。
    10、收集公民不愿向社会公开的纯属个人隐私的情况。


文章作者: Spaceack
文章链接: http://spaceack.com/2017/08/01/2017-08-02-idcard-train-tickets/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 丸子家的小云吞