
إزالة التكرارات من قائمة كلمات ضخمة، دون فرزها (لاختراق كلمات المرور القائم على القاموس)
في الوقت الحاضر، عادةً ما يتضمن إنشاء قوائم كلمات المرور دمج مصادر بيانات متعددة.
من الناحية المثالية، يجب أن تكون كلمات المرور الأكثر احتمالاً في بداية قائمة الكلمات، بحيث يتم اختراق كلمات المرور الأكثر شيوعاً على الفور.
باستخدام أدوات إزالة التكرار الموجودة، أنت مجبر على الاختيار إذا كنت تفضل الحفاظ على الترتيب أو التعامل مع قوائم الكلمات الضخمة.
لسوء الحظ، يتطلب إنشاء قائمة الكلمات كليهما
لذا كتبت Duplicut بلغة C عالية التحسين لمعالجة هذه الحاجة المحددة للغاية 🤓 💻
git clone https://github.com/nil0x42/duplicut # download ...
cd duplicut/ && make # compile ...
./duplicut wordlist.txt -o clean-wordlist.txt # dedupe !!!
-o, --outfile <FILE> Write result to <FILE>
-t, --threads <NUM> Max threads to use (default max)
-m, --memlimit <VALUE> Limit max used memory (default max)
-l, --line-max-size <NUM> Max line size (default 1024, max 4095)
-p, --printable Filter ascii printable lines
-c, --lowercase Convert wordlist to lowercase
-C, --uppercase Convert wordlist to uppercase
-D, --dupfile <FILE> Write dupes to <FILE> (slows down duplicut)
-h, --help Display this help and exit
-v, --version Output version information and exit
الميزات:
--line-max-size)--printable)--dupfile)--lowercase أو --uppercaseالتنفيذ:
القيود:
--line-max-size 4095يكفي uint64 لفهرسة الخطوط في خريطة التجزئة، عن طريق حزم معلومات الحجم داخل البتات الإضافية للمؤشر:

إذا لم يمكن احتواء الملف بأكمله في الذاكرة، يتم تقسيمه إلى جزء افتراضي، بحيث يستخدم كل جزء أكبر قدر ممكن من ذاكرة الوصول العشوائي.
ثم يتم تحميل كل جزء في خريطة التجزئة، وإزالة التكرارات منه، واختباره مقابل الأجزاء اللاحقة.
بهذه الطريقة، ينخفض وقت التنفيذ إلى على الأكثر العدد المثلثي:

إذا وجدت خطأ، أو إذا كان هناك شيء لا يعمل كما هو متوقع، يرجى تجميع Duplicut في وضع التصحيح ونشر [مشكلة] مع الإخراج المرفق:
# debug level can be from 1 to 4
make debug level=1
./duplicut [OPTIONS] 2>&1 | tee /tmp/duplicut-debug.log