關于Gitmails

Gitmails是一款能夠在Git版本控制主機服務中收集Git提交電子郵件的信息收集工具,該工具可以幫助廣大研究人員掃描和識別Git提交中包含的作者名稱、電子郵件配置和版本控制主機服務是否存儲了多個項目。

工具功能

當前版本的Gitmails功能如下:

1、向版本控制主機服務查詢有關組織、團隊、組、用戶或單個存儲庫的信息;
2、如果不是在單一存儲庫模式下,則列出所有存儲庫(受身份驗證限制);
3、克隆存儲庫或查詢版本控制主機服務以獲取提交歷史記錄;
4、分析提交歷史以確定唯一的作者,其中作者是由姓名和電子郵件來定義的;

通過上述操作,Gitmails可以收集特定目標提交歷史記錄中的所有電子郵件信息;

工具安裝

源碼獲取

由于該工具基于Python 3開發,因此我們首先需要在本地設備上安裝并配置好Python 3環境。接下來,廣大研究人員可以使用下列命令直接將該項目源碼克隆至本地:

git clone https://github.com/giovanifss/Gitmails.git

然后切換到項目目錄中,使用pip3命令和requirements.txt文件安裝該工具所需的依賴組件:

cd Gitmails/

pip3 install -r requirements.txt

其中的pygit2工具(其中一個依賴組件)則需要通過操作系統的包管理器進行手動安裝。

Docker使用

我們還可以使用該工具的Docker版本,操作命令如下:

docker run -it giovanifss/gitmails --help

需要注意的是,如果你想要將結果寫入到文件中,你還需要加載一個Docker卷宗:

docker run -v /tmp/output:/opt -it giovanifss/gitmails -f /opt/result.txt

工具使用

首先,你必須選擇一個操作方法:即收集組織電子郵件(-organization)、用戶(-u或--username)或單個代碼庫(-r或--repository)。

接下來就需要設置目標了,你需要在執行下列代碼后將目標以參數的形式傳遞給Gitmails:

python3 gitmails.py -u some_username,

python3 gitmails.py -o some_org

python3 gitmails.py -r some_repo_url

注意,Gitlab用戶名是大小寫敏感的,請記住這一點。

有了這個基本配置,Gitmails將克隆指定目標的所有存儲庫(或克隆url中的存儲庫),并分析其提交歷史。然后,它將打印用戶或組織的高級信息,并最終在“fancy_grid”表中打印分析過程中發現的所有名稱電子郵件部分。

工具參數選項

--raw:以純文本形式輸出結果,以逗號分隔值;

-f | --file:將結果存儲到指定文件中,格式為CSV且無Header;

--include-repositories:讓Gitmails打印結果,其中包含電子郵件對應的代碼庫信息;

-p | --path:指定克隆代碼庫的臨時路徑;

-e | --exclude:忽略指定的代碼庫;

--no-cleanup:不刪除已克隆的代碼庫;

--include-forks:在分析中引入Fork的代碼庫(僅適用于GitHub);

--include-users:收集目標組織中的公開成員信息(僅適用于GitHub);

--no-[gitlab|github|bitbucket]:不收集指定主機服務的相關信息;

--run-plugins:在收集結果中執行插件分析;

--api:嘗試僅通過API收集信息,并且不克隆目標代碼庫;

許可證協議

本項目的開發與發布遵循MIT開源許可證協議。