在滲透測試或安全審計過程中,字典文件的品質直接影響爆破效率。原始字典往往包含空行、重複條目、格式不統一(如有無前導斜槓)等問題。本文介紹一款 PHP 字典優化腳本,能自動完成去空行、去重、統一添加前導斜槓等預處理工作,輸出乾淨可用的字典文件。
腳本通過 file() 將字典逐行讀入陣列,隨後使用正則 preg_replace('/($\s*$)|(^\s*^)/m', '', $file) 移除所有空白行,確保後續處理只針對有效數據。
遍歷陣列時,對每行執行 trim("/$r"):先補上前導斜槓,再去除首尾空白字符。接著以 preg_replace('#^([/]*)#', '/', $array) 將多重斜槓折疊為單一斜槓,確保路徑格式一致。
利用 array_unique() 剔除重複行,array_values() 重建索引,最後以 join("\r\n", $new_array1) 寫入 new_file.txt。腳本會在當前目錄生成結果文件,並回顯完整路徑供直接使用。
<?php
error_reporting(0);
echo "\n請輸入要整理的字典路徑:\n";
$dic = trim(fgets(STDIN));
$file = file($dic);
$array = preg_replace('/($\s*$)|(^\s*^)/m', '', $file); // 消除空行
foreach ($array as $key => $r) {
$array[$key] = trim("/$r"); // 添加斜槓並去除空白
}
$new_array = preg_replace('#^([/]*)#', '/', $array); // 多斜槓折疊為單斜槓
$new_array1 = array_values(array_unique($new_array)); // 去重並重建索引
if (file_put_contents('new_file.txt', join("\r\n", $new_array1))) {
echo "------------------------------------------\r\n";
echo "\n整理完畢!\r\n";
echo "生成的字典文件為:\r\n";
echo dirname(__FILE__) . DIRECTORY_SEPARATOR . "new_file.txt\r\n";
echo "------------------------------------------\r\n";
} else {
echo "------------------------------------------\r\n";
echo "錯誤!\r\n";
echo "找不到文件!請檢查是否存在該字典!\r\n";
echo "------------------------------------------\r\n";
}
?>
php -v 驗證)。new_file.txt 可直接餵給 DirBuster、Dirsearch、ffuf 等目錄掃描工具。這支不足 50 行的腳本解決了字典預處理中最常見的三大痛點:空行干擾、格式不統一、重複條目膨脹字典體積。將其納入滲透測試前置流程,能顯著提升目錄爆破的速度與準確度。