伪造git提交记录生成点阵字符

作为版本管理工具中的扛把子,由 linux 之父亲自操刀编写的 git 就不需要过多介绍了,想必已经是无人不知了

但有些人可能不知道的是,git 提交的记录其实是可以伪造的,核心的操作就在于提供了一些 override 的参数,这里用到的就是 --date 这个参数

基于这个 override 的处理,再结合点阵字体的字符数组,就可以玩出花来,比如下面伪造 github 的 contributions 提交点,来进行一些特别的显示

这个提交日期还可以一直前置,直到 1970-01-01,那么你的 github 主页就会显示一个如下的长长列表

这个玩意除了好玩之外,还有什么作用呢?来一个全部填充,假装把自己变成一个很努力的人,惊呆所有人,嘎嘎(如果面试可能还会有一点额外加分)

核心的代码就是以下这段,get_github_day 根据点阵字体获取对应的日期列表,dict 是一个由 0、1 组成的点阵字体二维数组

python 复制代码
def week_begin_day(day):
    weakday = time.strptime(day,'%Y-%m-%d')
    index = 0
    if (weakday[6]!=6):
        index = 6 - weakday[6] 
    y,m,d = weakday[0:3]
    begin_day = datetime.datetime(y,m,d)
    return begin_day + datetime.timedelta(index)

def get_draw_day(day, c):
    days = []
    letter = dict[c]
    for i in range(0,42):
        if (letter[i]==1):
            drawday = day + datetime.timedelta(i)
            days.append(drawday)
    return days

def get_day_by_word(word, day):
    days = []
    begin_day = week_begin_day(day) 
    index = 0
    n = len(word)
    while True:
        if (index >= n):
            break
        if word[index] != ' ':
            one_days = get_draw_day(begin_day, word[index])
            days.extend(one_days)
        index = index + 1
        begin_day = begin_day + datetime.timedelta(42)
    return days

def get_github_day():
    dates = []
    date_23 = get_day_by_word("FXXK GFW", "2023-01-07")
    dates.extend(date_23)
    return dates

def fake_commit(current_date, times):
    for t in times:
        commit_date = current_date.strftime("%Y-%m-%d") + " " + t.strftime("%H:%M:%S")
        with open('foo.txt', 'w', encoding='utf-8') as f:
            f.write(commit_date)
        os.system(f"git add foo.txt")
        os.system(f"git commit --quiet --date \"${commit_date}\" -m \"fake commit\"")

dates = get_github_day()
for d in dates:
    times = [random_time() for _ in range(random.randint(2, 5))]
    times.sort()
    fake_commit(d, times)

创建一个新仓库,然后在该仓库上进行 commit,为了让这些提交显示在 github 的 contributions 上,还需要配置本地 user.email 使用已经验证过的邮箱

如果不希望别人看到该仓库的提交明细,也可以新建为 private 仓库,然后在主页的 Contribution Settings 下拉列表中勾选 Private contributions

相关推荐
badhope3 小时前
Mobile-Skills:移动端技能可视化的创新实践
开发语言·人工智能·git·智能手机·github
zhangfeng11335 小时前
Windows 的 Git Bash 中使用 md5sum 命令非常简单 md5做文件完整性检测 WinRAR 可以计算文件的 MD5 值
人工智能·windows·git·bash
TonyLee0176 小时前
Github使用记录
github
放下华子我只抽RuiKe510 小时前
从零构建高精度 AI Agent Skill:Tech Blog Generator 实战指南
人工智能·prompt·github·ai agent·skills·openclaw·development
2401_8846621010 小时前
GitHub镜像站搭建全攻略大纲
github
散峰而望11 小时前
【基础算法】从入门到实战:递归型枚举与回溯剪枝,暴力搜索的初级优化指南
数据结构·c++·后端·算法·机器学习·github·剪枝
Refly13 小时前
【微信接入 OpenClaw 龙虾🦞】10分钟手把手教程完成接入,Claude 模型无限使用
前端·微信·github
csdn_aspnet13 小时前
Git灾难级误操作抢救手册:从reset到reflog的终极救援
git·恢复·误删
老星*14 小时前
Lucide Icons:开源、轻量、设计师友好的现代图标库
ui·开源·github
星霜笔记15 小时前
GitMob — 手机端 GitHub 管理工具
android·kotlin·github·android jetpack