每天提交一次,可以使错误远离! 但是我们每天要做100次提交。
GitHub的贡献表不是很安全已经不是什么秘密了。 实际上,通过推送具有预先配置的提交历史记录的存储库 ,您可以将这些提交作为贡献获得。
我喜欢编码。 我真的是 我真的很喜欢开源。 当我刚开始的时候,开源是我最喜欢做的事情:构建软件,为所有人发布,并为他人的项目做贡献。
这是我仍然喜欢做的事情,但这是我被迫牺牲的事情。 最近,我开始全职从事Aiko AI的研究,这是一家旨在通过将AI的先进技术集成到日常产品中来将其带来的好处带给普通大众的创业公司。 我们落后于Aiko Meet和Aiko Mail等热门产品,而我们最近的成功意味着我从事开源工作的时间越来越少。
Aiko AI-AI研究与解决方案 通过整合人工智能,爱子正在挑战传统技术。 我们致力于数字化…… helloaiko.com
不幸的是,这意味着我必须在对Aiko的热情与对开源的热爱之间进行选择。 我不时地继续从事开源项目的工作,但是Aiko一直处于优先地位,这意味着我无法按照以前的频率投入。
这意味着我的贡献图表将枯竭—除非我们用提交将其填满😉
在2个月内偷看我的贡献图 对于那些不经常使用GitHub的人,贡献图每天跟踪您的提交,以查看您对开源的编码活动/共同贡献。 同时,它是所有功能中最怪异的东西, 并且是展示您的开源努力的好奖杯。
如此之多,以至于甚至有些雇主也会查看您的GitHub贡献表,以了解您实际上有多少狂热的编码员。 当然,这并不是您的编码能力的真正体现。 您可能不经常使用GitHub,或者您可能正在开发大多数封闭源代码。 也许您所处的角色不经常提交,但功能/负载很大。 或者,您可能会看这张图并感觉到不安全感, 我所有的朋友都有更多的GitHub提交!
无论是必要性,好奇心还是冒名顶替综合症激发了您,对此都有一个简单的解决方法-只需获取大量开源提交即可!
当然,这将花费一些时间,您无法返回并编辑历史记录-还是可以? 我将向您展示如何破解GitHub的贡献表,并获得您渴望得到的绿色牧场。
图为:被称为_____的黑客 在开始之前,我将向您介绍Gitfiti ,这是另一个基于同一系统的项目,可让您在GitHub贡献上画图。
我们将关注提交历史 而不是艺术,以获取欺诈性提交! 我将尽力说明我可以使用bash的方法,但这是假定您对Terminal和git
有所了解的-如果您不熟悉CLI,建议您在深入了解Bash学院之前,先来学习一下。
只想要脚本? 这里是。
不想编码? 访问Github Gardener,这是一个免费的网站,可为您提供帮助!
怎么运行的 利用提交历史, 我们可以使用git
的提交时间戳“提交”提交。
首先,在我们选择的日期编写一次提交。 为此,我们需要更改git用于设置提交时间戳的两个环境变量GIT_COMMITTER_DATE
和GIT_AUTHOR_DATE
。 这两个变量保存标准的YY-MM-DD HH:MM:SS
ISO格式时间戳。 我们还将在该时间戳记上进行承诺以覆盖所有基础-这样我们可以完全确定,没有办法在那个时间点上将我们的虚假提交与实际提交区分开。
export Y = 2000 export M = 12 export D = 20 export GIT_COMMITTER_DATE="$Y-$M-$D 12:00:00" export GIT_AUTHOR_DATE="$Y-$M-$D 12:00:00" git commit --date="$Y-$M-$D 12:00:00" -m "Committed on $M $D $Y"
上面的摘要将“作者” 2000年12月20日的提交。 这也可以扩展为“作者” 1970年1月1日以后的提交; 在您可能对此进行编码之前! 因此,您的“ git”历史记录很容易受到攻击(实际上,不是“ history”,而是更多的预先编写的结构的集合)。
写下您自己的历史! 不过对丘吉尔来说并没有那么出色…… 然后,我们可以将其扩展为每天从指定日期开始编写提交历史记录。 这是使用bash for loop轻松实现的,其结构如下:
for VAR_NAME in {start..end}
紧随其后的缩进块将能够在执行中使用$VAR_NAME
作为变量。 结果,bash for loops成为我们的理想选择,因为我们可以迭代数年,数月甚至数天来编写伪造的提交历史记录。
让我们编写脚本 此脚本的最终版本可 在此处 作为要点提供 。
我们可以通过按 年,月和日的顺序循环来 实现这种“利用”:
for Y in {1999..2018} for M in {01..12} for D in {01..28}
从1999年到2018年,我们每年循环浏览(我选择1999年为2000年之前的猜测)。 然后,我们遍历每个月,最后遍历每一天。 请注意,我们只能从1到28循环播放,因为2月可能是28天的月份! 如果愿意,我们可以每天循环浏览,但是2月将无效。 在这种情况下,您可以使用条件选择日期。 我考虑的另一种方法是使用Python设置年,月和日至工作日,以便仅选择工作日-任您选择,取决于您! 我会坚持使用1–28,因为从速度角度来看,这是最好的方法(编写这么多提交可能要花一些时间)。
我们还需要每次创建一个新文件:
echo "Committed on $M/$D/$Y" > commit.md
这是一个完整的脚本,仅用于创建文件并批量提交:
for Y in {1999..2018} do mkdir $Y for M in {01..12} do cd $Y mkdir $M cd ../ for D in {01..28} do cd $Y/$M mkdir $D cd $D echo "Committed on $M/$D/$Y" > commit.md cd ../../../ export GIT_COMMITTER_DATE="$Y-$M-$D 12:00:00" export GIT_AUTHOR_DATE="$Y-$M-$D 12:00:00" git add $Y/$M/$D/commit.md -f git commit --date="$Y-$M-$D 12:00:00" -m "$M $D $Y" git push origin master done done done
然后作者的提交时间为1999年至2018年。您可以在任何bash提示符下执行此操作-我建议将其放在可执行的bash文件中并运行。
但这显然非常慢! 我们怎样才能使它更快?
首先,除非您嵌套了git repos,否则每次提交时都不需要遍历备份 目录树。 事实证明,“推送”到GitHub并没有考虑当前的时间戳(因此,您可以将旧的本地git存储库推送到GitHub),因此我们只需在 脚本末尾推送 即可。 最后,虽然并没有真正提高速度,但通过上述改进,添加对第29天到第31天的支持并不会真正影响我们的性能,并且GitHub将自动清除多余的日子。 这将速度提高了十倍,我们可以通过推动末端达到更高的高度。
for Y in {1999..2018} do mkdir $Y cd $Y ... git add commit.md -f git commit --date="$Y-$M-$D 12:$i:00" -m "$i on $M $D $Y" done cd ../ done cd ../ done cd ../ done git push origin master
实施这些更改,并在最后删除文件夹 进行清理,我们附带了最后一个脚本:
您会注意到,我引入了另一个带有变量i
bash循环-该循环控制每天执行多少次提交 ,并且可以与更快得多的脚本一起使用。 如果收到“无效”日期格式错误,请检查计算机使用的日期是否存在(最早的日期可以是1970年1月1日),并且您的bash版本足够新以支持前导零。在for循环中。
关于这一点的最干净的部分是它在FUTURE中 提交。 这意味着将来您将每天都有承诺!
我把完整的脚本放在这里 。 (短链接: git.io/vxnon )
示例运行:
priansh@laptop:~$ cd ~/Documents/github priansh@laptop:~$ mkdir gitsploit # make the repo folder anywhere priansh@laptop:~$ cd gitsploit && git init priansh@laptop:~$ # Next we'll set up tracking a GitHub repo priansh@laptop:~$ git remote add origin priansh@laptop:~$ echo "Hello World" > README.md && git add --all priansh@laptop:~$ git commit -m "init" && git push -u origin master priansh@laptop:~$ wget https://git.io/vxnon -O a_million_commits.sh priansh@laptop:~$ chmod a+x a_million_commits.sh # make executable priansh@laptop:~$ ./a_million_commits.sh
事后 我会提到,还可以使用bot(因为它们没有验证码!)进一步利用GitHub并将其用于星标,关注等,尽管我不会在本快速文章中介绍(也不鼓励这样做)恶意边界)。
只是一个简短的图片来证明这是可行的:
2万次提交! 您可以删除要提交的存储库以删除伪造的历史记录,也可以将其设为私有并将贡献设置设为仅公开,以实现与从图表中删除伪造物相同的效果。 (您也可以完全覆盖分支/提交历史记录。)
尽管我们没有以恶意方式利用GitHub,但这仍然有些重要,因为一些公司在招聘过程中检查了您的供款计数-意味着这可能(潜在地)影响您找到工作的机会。 这也 将让你在休息最酷的孩子。 快乐的“骇客!”
pshah123(Priansh Shah) pshah123有80个可用的存储库。 在GitHub上遵循他们的代码。 github.com
这样,还有更多? 在Aiko AI上 ,我们喜欢开源项目以及探索和可视化数据!
From: https://hackernoon.com/how-to-hack-github-kind-of-12b08a46d02e