
git-dumper v1.0.9
Ein Tool zum Dumpen eines Git-Repositorys von einer Website
git-dumper
Ein Tool, um ein Git-Repository von einer Website zu dumpen.
Install
Dies kann einfach mit pip installiert werden:
pip install git-dumper
Usage
usage: git-dumper [options] URL DIR
Dump a git repository from a website.
positional arguments:
URL url
DIR output directory
optional arguments:
-h, --help show this help message and exit
--proxy PROXY use the specified proxy
-j JOBS, --jobs JOBS number of simultaneous requests
-r RETRY, --retry RETRY
number of request attempts before giving up
-t TIMEOUT, --timeout TIMEOUT
maximum time in seconds before giving up
-u USER_AGENT, --user-agent USER_AGENT
user-agent to use for requests
-H HEADER, --header HEADER
additional http headers, e.g `NAME=VALUE`
--client-cert-p12 CLIENT_CERT_P12
client certificate in PKCS#12 format
--client-cert-p12-password CLIENT_CERT_P12_PASSWORD
password for the client certificate
-b BRANCH, --branch BRANCH
additional branch name to check for (repeatable)
Example
git-dumper http://website.com/.git ~/website
Disclaimer
Verwenden Sie diese Software auf eigene Gefahr!
Sie sollten wissen, dass, wenn das Repository, das Sie herunterladen, von einem Angreifer kontrolliert wird, dies zu einer Remote-Codeausführung auf Ihrem Rechner führen kann.
Build from source
Installieren Sie einfach die Abhängigkeiten mit pip:
pip install -r requirements.txt
Dann verwenden Sie einfach:
./git_dumper.py http://website.com/.git ~/website
How does it work?
Das Tool überprüft zunächst, ob das Directory-Listing verfügbar ist. Wenn dies der Fall ist, lädt es rekursiv das .git-Verzeichnis herunter (was Sie mit wget tun würden).
Wenn das Directory-Listing nicht verfügbar ist, werden mehrere Methoden verwendet, um so viele Dateien wie möglich zu finden. Schritt für Schritt wird git-dumper:
- Alle gängigen Dateien abrufen (
.gitignore,.git/HEAD,.git/index, etc.); - So viele Referenzen wie möglich finden (z. B.
refs/heads/master,refs/remotes/origin/HEAD, etc.) durch Analyse von.git/HEAD,.git/logs/HEAD,.git/config,.git/packed-refsusw.; - So viele Objekte (SHA1) wie möglich finden durch Analyse von
.git/packed-refs,.git/index,.git/refs/*und.git/logs/*; - Alle Objekte rekursiv abrufen, analysieren jedes Commits, um deren Eltern zu finden;
- Führen Sie
git checkout .aus, um den aktuellen Arbeitsbaum wiederherzustellen