
البحث عن بيانات الاعتماد المسربة والتحقق منها وتحليلها
ابحث عن بيانات الاعتماد المسربة.
هل أنت مهتم بمراقبة مستمرة لـ Git, Jira, Slack, Confluence, Microsoft Teams, Sharepoint (وغيرها) بحثًا عن بيانات الاعتماد؟ لدينا منتج للمؤسسات يمكن أن يساعد! تعرف على المزيد في https://trufflesecurity.com/trufflehog-enterprise.
نحن نستخدم الإيرادات من منتج المؤسسات لتمويل المزيد من المشاريع مفتوحة المصدر الرائعة التي يمكن للمجتمع بأكمله الاستفادة منها.
TruffleHog هي أقوى أداة لاكتشاف وتصنيف والتحقق من صحة وتحليل الأسرار. في هذا السياق، يشير السر إلى بيانات الاعتماد التي تستخدمها آلة لمصادقة نفسها أمام آلة أخرى. يشمل ذلك مفاتيح API وكلمات مرور قواعد البيانات ومفاتيح التشفير الخاصة والمزيد.
يمكن لـ TruffleHog البحث عن الأسرار في العديد من الأماكن بما في ذلك Git والمحادثات والويكي والسجلات ومنصات اختبار API ومخازن الكائنات وأنظمة الملفات والمزيد.
يقوم TruffleHog بتصنيف أكثر من 800 نوع من الأسرار، وربطها بالهوية المحددة التي تنتمي إليها. هل هو سر AWS؟ سر Stripe؟ سر Cloudflare؟ كلمة مرور Postgres؟ مفتاح SSL خاص؟ أحيانًا يكون من الصعب التمييز بمجرد النظر إليه، لذا يقوم TruffleHog بتصنيف كل ما يجده.
لكل سر يمكن لـ TruffleHog تصنيفه، يمكنه أيضًا تسجيل الدخول لتأكيد ما إذا كان ذلك السر نشطًا أم لا. هذه الخطوة حاسمة لمعرفة ما إذا كان هناك خطر نشط حالي أم لا.
بالنسبة لحوالي 20 نوعًا من أنواع بيانات الاعتماد الأكثر تسربًا، بدلاً من إرسال طلب واحد للتحقق مما إذا كان السر يمكنه تسجيل الدخول، يمكن لـ TruffleHog إرسال العديد من الطلبات لمعرفة كل شيء عن السر. من الذي أنشأه؟ ما الموارد التي يمكنه الوصول إليها؟ ما الأذونات التي يمتلكها على تلك الموارد؟
هل لديك أسئلة؟ ملاحظات؟ انضم إلى Slack أو Discord وتحدث معنا.
انضم إلى مجتمع Slack
انضم إلى Discord لمسح الأسرار
```bash
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --org=trufflesecurity
# :floppy_disk: التثبيت
عدة خيارات متاحة لك:
### مستخدمو MacOS```bash
brew install trufflehog
تأكد من تشغيل محرك Docker قبل تنفيذ الأوامر التالية:
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
#### موجه أوامر ويندوز```bash
docker run --rm -it -v "%cd:/=\%:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
docker run --rm -it -v "${PWD}:/pwd" trufflesecurity/trufflehog github --repo https://github.com/trufflesecurity/test_keys
#### M1 and M2 Mac```bash
docker run --platform linux/arm64 --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
Download and unpack from https://github.com/trufflesecurity/trufflehog/releases
### تجميع من المصدر```bash
git clone https://github.com/trufflesecurity/trufflehog.git
cd trufflehog; go install
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
### استخدام نص التثبيت، التحقق من توقيع المجموع الاختباري (يتطلب تثبيت cosign)```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -v -b /usr/local/bin
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
# :closed_lock_with_key: التحقق من القطع الأثرية
يتم تطبيق المجاميع الاختبارية (checksums) على جميع القطع الأثرية، ويتم توقيع ملف المجموع الاختباري الناتج باستخدام cosign.
تحتاج إلى الأداة التالية للتحقق من التوقيع:
- [Cosign](https://docs.sigstore.dev/cosign/system_config/installation/)
خطوات التحقق هي كما يلي:
1. قم بتنزيل ملفات القطع الأثرية التي تريدها، والملفات التالية من صفحة [الإصدارات](https://github.com/trufflesecurity/trufflehog/releases).
- trufflehog\_{version}\_checksums.txt
- trufflehog\_{version}\_checksums.txt.pem
- trufflehog\_{version}\_checksums.txt.sig
2. تحقق من التوقيع: ```shell
cosign verify-blob <path to trufflehog_{version}_checksums.txt> \
--certificate <path to trufflehog_{version}_checksums.txt.pem> \
--signature <path to trufflehog_{version}_checksums.txt.sig> \
--certificate-identity-regexp 'https://github\.com/trufflesecurity/trufflehog/\.github/workflows/.+' \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
استبدل {version} بإصدار الملفات التي تم تنزيلها
بدلاً من ذلك، إذا كنت تستخدم برنامج التثبيت، فمرر الخيار -v للتحقق من التوقيع.
يتطلب ذلك تثبيت ثنائي Cosign قبل تشغيل برنامج التثبيت.
الأمر:```bash trufflehog git https://github.com/trufflesecurity/test_keys --results=verified
المخرجات المتوقعة:```
🐷🔑🐷 TruffleHog. Unearth your secrets. 🐷🔑🐷
Found verified result 🐷🔑
Detector Type: AWS
Decoder Type: PLAIN
Raw result: AKIAYVP4CIPPERUVIFXG
Line: 4
Commit: fbc14303ffbf8fb1c2c1914e8dda7d0121633aca
File: keys
Email: counter <[email protected]>
Repository: https://github.com/trufflesecurity/test_keys
Timestamp: 2022-06-16 10:17:40 -0700 PDT
...
trufflehog github --org=trufflesecurity --results=verified
## 3: مسح منظمة GitHub باستثناء المستودعات المؤرشفة```bash
trufflehog github --org=trufflesecurity --exclude-archived
الأمر:```bash trufflehog git https://github.com/trufflesecurity/test_keys --results=verified --json
المخرجات المتوقعة:```
{"SourceMetadata":{"Data":{"Git":{"commit":"fbc14303ffbf8fb1c2c1914e8dda7d0121633aca","file":"keys","email":"counter \[email protected]\u003e","repository":"https://github.com/trufflesecurity/test_keys","timestamp":"2022-06-16 10:17:40 -0700 PDT","line":4}}},"SourceID":0,"SourceType":16,"SourceName":"trufflehog - git","DetectorType":2,"DetectorName":"AWS","DecoderName":"PLAIN","Verified":true,"Raw":"AKIAYVP4CIPPERUVIFXG","Redacted":"AKIAYVP4CIPPERUVIFXG","ExtraData":{"account":"595918472158","arn":"arn:aws:iam::595918472158:user/canarytokens.com@@mirux23ppyky6hx3l6vclmhnj","user_id":"AIDAYVP4CIPPJ5M54LRCY"},"StructuredData":null}
...
trufflehog github --repo=https://github.com/trufflesecurity/test_keys --issue-comments --pr-comments
## 6: مسح S3 bucket للحصول على نتائج عالية الثقة (verified + unknown)```bash
trufflehog s3 --bucket=<bucket name> --results=verified,unknown
trufflehog s3 --role-arn=
## 8: فحص مستودع Github باستخدام مصادقة SSH في Docker```bash
docker run --rm -v "$HOME/.ssh:/root/.ssh:ro" trufflesecurity/trufflehog:latest git ssh://github.com/trufflesecurity/test_keys
trufflehog filesystem path/to/file1.txt path/to/file2.txt path/to/dir
## 10: مسح مستودع git محلي
استنساخ مستودع git. على سبيل المثال مستودع [مفاتيح الاختبار](https://github.com/trufflesecurity/trufflehog/blob/HEAD/[email protected]:trufflesecurity/test_keys.git).```bash
git clone [email protected]:trufflesecurity/test_keys.git
قم بتشغيل trufflehog من الدليل الأصلي (خارج مستودع git).```bash trufflehog git file://test_keys --results=verified,unknown
للحماية من إعدادات git الخبيثة في الفحص المحلي (انظر CVE-2025-41390)، يقوم TruffleHog باستنساخ مستودعات git المحلية إلى دليل مؤقت قبل الفحص. يتبع هذا [أفضل ممارسات الأمان في Git](https://git-scm.com/docs/git#_security). إذا كنت ترغب في تحديد مسار مخصص لاستنساخ المستودع إليه (بدلاً من tmp)، يمكنك استخدام العلامة `--clone-path`. إذا كنت تفضل تخطي عملية الاستنساخ المحلية وفحص المستودع مباشرةً (افعل هذا فقط للمستودعات الموثوقة)، يمكنك استخدام العلامة `--trust-local-git-config`.
## 11: امسح دلاء GCS للحصول على الأسرار المُتحقق منها فقط```bash
trufflehog gcs --project-id=<project-ID> --cloud-environment --results=verified
استخدم علامة --image عدة مرات لمسح عدة صور.```bash
trufflehog docker --image trufflesecurity/secrets --results=verified
trufflehog docker --image docker://new_image:tag --results=verified
trufflehog docker --image file://path_to_image.tar --results=verified
## 13: المسح في CI
قم بتعيين العلامة `--since-commit` إلى الفرع الافتراضي الذي يدمج فيه المستخدمون (مثل: "main"). قم بتعيين العلامة `--branch` إلى اسم فرع طلب السحب الخاص بك (مثل: "feature-1"). اعتمادًا على منصة CI/CD التي تستخدمها، يمكن جلب هذه القيمة ديناميكيًا (مثل: [CIRCLE_BRANCH في Circle CI](https://circleci.com/docs/variables/) و [TRAVIS_PULL_REQUEST_BRANCH في Travis CI](https://docs.travis-ci.com/user/environment-variables/)). إذا تم استنساخ المستودع وتم سحب الفرع المستهدف بالفعل أثناء سير عمل CI/CD، فإن `--branch HEAD` يجب أن يكون كافيًا. ستُرجع العلامة `--fail` رمز خطأ 183 إذا تم العثور على بيانات اعتماد صالحة.```bash
trufflehog git file://. --since-commit main --branch feature-1 --results=verified,unknown --fail
استخدم العلامات --workspace-id, --collection-id, --environment عدة مرات لمسح أهداف متعددة.```bash
trufflehog postman --token= --workspace-id=
## 15: مسح خادم Jenkins```bash
trufflehog jenkins --url https://jenkins.example.com --username admin --password admin
هناك طريقتان للمصادقة على مجموعة محلية باستخدام TruffleHog: (1) اسم المستخدم وكلمة المرور، (2) رمز الخدمة.
trufflehog elasticsearch --nodes 192.168.14.3 192.168.14.4 --username truffle --password hog
#### الاتصال بمجموعة محلية باستخدام رمز خدمة```bash
trufflehog elasticsearch --nodes 192.168.14.3 192.168.14.4 --service-token ‘AAEWVaWM...Rva2VuaSDZ’
لمسح مجموعة على Elastic Cloud، ستحتاج إلى Cloud ID و API key.```bash
trufflehog elasticsearch
--cloud-id 'search-prod:dXMtY2Vx...YjM1ODNlOWFiZGRlNjI0NA=='
--api-key 'MlVtVjBZ...ZSYlduYnF1djh3NG5FQQ=='
## 17. امسح مستودع GitHub بحثًا عن Cross Fork Object References والالتزامات المحذوفة
سيعمل الأمر التالي على تعداد الالتزامات المحذوفة والمخفية في مستودع GitHub ثم يقوم بمسحها بحثًا عن الأسرار. هذه ميزة في إصدار ألفا.```bash
trufflehog github-experimental --repo https://github.com/<USER>/<REPO>.git --object-discovery
بالإضافة إلى إخراج TruffleHog العادي، يقوم العلم --object-discovery بإنشاء ملفين في دليل جديد $HOME/.trufflehog: valid_hidden.txt وinvalid.txt. تُستخدم هذه لتتبع الحالة أثناء تعداد الالتزامات، وكذلك لتزويد المستخدمين بقائمة كاملة بجميع الالتزامات المخفية والمحذوفة (valid_hidden.txt). إذا كنت ترغب في إزالة هذه الملفات تلقائيًا بعد الفحص، فيرجى إضافة العلم --delete-cached-data.
ملاحظة: يستغرق تعداد جميع الالتزامات الصالحة في مستودع باستخدام هذه الطريقة ما بين 20 دقيقة وعدة ساعات، اعتمادًا على حجم مستودعك. أضفنا شريط تقدم لإطلاعك على المدة التي سيستغرقها التعداد. عملية فحص الأسرار الفعلية سريعة جدًا.
لمزيد من المعلومات حول مراجع الكائنات عبر التشعبات، يرجى قراءة مقالنا على المدونة.
trufflehog huggingface
--model <model_id>
--dataset <dataset_id>
--space <space_id>
--bucket <bucket_id>
### امسح جميع Models و Datasets و Spaces و Buckets التابعة لمنظمة أو مستخدم Hugging Face```bash
trufflehog huggingface --org <orgname> --user <username>
(اختياريًا) عند مسح مؤسسة أو مستخدم، يمكنك تخطي فئة كاملة من الموارد باستخدام --skip-all-models, --skip-all-datasets, --skip-all-spaces, --skip-all-buckets أو مورد معين باستخدام --ignore-models <model_id>, --ignore-datasets <dataset_id>, --ignore-spaces <space_id>, --ignore-buckets <bucket_id>.
trufflehog huggingface --model <model_id> --include-discussions --include-prs
## 19. مسح إدخال stdin```bash
aws s3 cp s3://example/gzipped/data.gz - | gunzip -c | trufflehog stdin
🐷🔑🐷 TruffleHog. Unearth your secrets. 🐷🔑🐷 ويخرج البرنامج، ما الأمر؟
--token مع رمز وصول شخصيtrufflehog:ignore على السطر الذي يحتوي على السر لتجاهل هذا السر.TruffleHog v3 هي إعادة كتابة كاملة بلغة Go مع العديد من الميزات الجديدة والقوية.
لكل بيانات اعتماد محتملة يتم اكتشافها، قمنا بتنفيذ التحقق البرمجي بعناية ضد واجهة برمجة التطبيقات التي نعتقد أنها تنتمي إليها. التحقق يزيل النتائج الإيجابية الكاذبة ويوفر ثلاث حالات للنتيجة:
على سبيل المثال، يقوم كاشف بيانات اعتماد AWS بإجراء استدعاء لواجهة برمجة التطبيقات GetCallerIdentity ضد واجهة برمجة تطبيقات AWS للتحقق مما إذا كانت بيانات اعتماد AWS نشطة.
لدى TruffleHog أمر فرعي لكل مصدر بيانات قد ترغب في مسحه:
يمكن أن يحتوي كل أمر فرعي على خيارات يمكنك رؤيتها باستخدام العلم --help المقدم للأمر الفرعي:```
$ trufflehog git --help
usage: TruffleHog [] [ ...]
TruffleHog is a tool for finding credentials.
Flags: -h, --[no-]help Show context-sensitive help (also try --help-long and --help-man). --log-level=0 Logging verbosity on a scale of 0 (info) to 5 (trace). Can be disabled with "-1". --[no-]profile Enables profiling and sets a pprof and fgprof server on :18066. -j, --[no-]json Output in JSON format. --[no-]json-legacy Use the pre-v3.0 JSON format. Only works with git, gitlab, and github sources. --[no-]github-actions Output in GitHub Actions format. --concurrency=12 Number of concurrent workers. --[no-]no-verification Don't verify the results. --results=RESULTS Specifies which type(s) of results to output: verified (confirmed valid by API), unknown (verification failed due to error), unverified (detected but not verified), filtered_unverified (unverified but would have been filtered out). Defaults to verified,unverified,unknown. --[no-]no-color Disable colorized output --[no-]allow-verification-overlap Allow verification of similar credentials across detectors --[no-]filter-unverified Only output first unverified result per chunk per detector if there are more than one results. --filter-entropy=FILTER-ENTROPY Filter unverified results with Shannon entropy. Start with 3.0. --config=CONFIG Path to configuration file. --[no-]print-avg-detector-time Print the average time spent on each detector. --[no-]no-update Don't check for updates. --[no-]fail Exit with code 183 if results are found. --[no-]fail-on-scan-errors Exit with non-zero error code if an error occurs during the scan. --verifier=VERIFIER ... Set custom verification endpoints. --[no-]custom-verifiers-only Only use custom verification endpoints. --detector-timeout=DETECTOR-TIMEOUT Maximum time to spend scanning chunks per detector (e.g., 30s). --archive-max-size=ARCHIVE-MAX-SIZE Maximum size of archive to scan. (Byte units eg. 512B, 2KB, 4MB) --archive-max-depth=ARCHIVE-MAX-DEPTH Maximum depth of archive to scan. --archive-timeout=ARCHIVE-TIMEOUT Maximum time to spend extracting an archive. --include-detectors="all" Comma separated list of detector types to include. Protobuf name or IDs may be used, as well as ranges. --exclude-detectors=EXCLUDE-DETECTORS Comma separated list of detector types to exclude. Protobuf name or IDs may be used, as well as ranges. IDs defined here take precedence over the include list. --[no-]no-verification-cache Disable verification caching --[no-]force-skip-binaries Force skipping binaries. --[no-]force-skip-archives Force skipping archives. --[no-]skip-additional-refs Skip additional references. --user-agent-suffix=USER-AGENT-SUFFIX Suffix to add to User-Agent. --[no-]version Show application version.
Commands: help [...] Show help.
git []
Find credentials in git repositories.
github [] Find credentials in GitHub repositories.
github-experimental --repo=REPO [] Run an experimental GitHub scan. Must specify at least one experimental sub-module to run: object-discovery.
gitlab --token=TOKEN [] Find credentials in GitLab repositories.
filesystem [] [...] Find credentials in a filesystem.
s3 [] Find credentials in S3 buckets.
gcs [] Find credentials in GCS buckets.
syslog --format=FORMAT [] Scan syslog
circleci --token=TOKEN Scan CircleCI
docker [] Scan Docker Image
travisci --token=TOKEN Scan TravisCI
postman [] Scan Postman
elasticsearch [] Scan Elasticsearch
jenkins --url=URL [] Scan Jenkins
huggingface [] Find credentials in HuggingFace datasets, models and spaces.
stdin Find credentials from stdin.
multi-scan Find credentials in multiple sources defined in configuration.
json-enumerator [...] Find credentials from a JSON enumerator input.
analyze Analyze API keys for fine-grained permissions information.
على سبيل المثال، لمسح مستودع `git`، ابدأ بـ```
trufflehog git https://github.com/trufflesecurity/trufflehog.git
يدعم TruffleHog تعريف كاشفات regex مخصصة ومصادر متعددة في ملف إعدادات يتم توفيره عبر العلم --config. يمكن استخدام كاشفات regex مع أي أمر فرعي، بينما المصادر المعرفة في الإعدادات مخصصة فقط للأمر الفرعي multi-scan.
يمكن العثور على تنسيق الإعدادات للمصادر في صفحة وثائق تكوين المصادر الخاصة بـ Truffle Security.
مثال على تكوين مصدر GitHub و مرجع الخيارات:```yaml sources:
يمكنك تعريف عدة اتصالات تحت مفتاح `sources` (انظر أعلاه)، وسيقوم TruffleHog بمسح جميع المصادر بالتزامن.
## S3
يدعم مصدر S3 افتراض أدوار IAM للمسح بالإضافة إلى مستخدمي IAM. وهذا يسهل على المستخدمين مسح حسابات AWS متعددة دون الحاجة إلى الاعتماد على بيانات اعتماد مشفرة ثابتة لكل حساب.
الهوية IAM التي يستخدمها TruffleHog في البداية ستحتاج إلى صلاحيات `AssumeRole` كمدير أساسي في [سياسة الثقة](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/) لكل دور IAM يتم افتراضه.
لمسح حاوية محددة باستخدام بيانات اعتماد محلية أو بيانات تعريف المثيل إذا كنت على مثيل EC2:```bash
trufflehog s3 --bucket=<bucket-name>
لمسح دلو معين باستخدام دور مفترض:```bash trufflehog s3 --bucket= --role-arn=
يمكن تمرير أدوار متعددة كوسائط منفصلة. سيحاول الأمر التالي مسح كل bucket يمتلك كل دور أذونات لسرده في S3 API:```bash
trufflehog s3 --role-arn=<iam-role-arn-1> --role-arn=<iam-role-arn-2>
رموز الخروج:
--fail.on: push: branches: - main pull_request:
jobs: test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Secret Scanning uses: trufflesecurity/trufflehog@main with: extra_args: --results=verified,unknown
في مثال التكوين أعلاه، نقوم بمسح الأسرار الحية في جميع طلبات السحب (PRs) والدفعات (Pushes) إلى `main`. يتم مسح تغييرات الكود فقط في المراجع المذكورة. إذا كنت ترغب في مسح فرع كامل، يُرجى الاطلاع على قسم "الاستخدام المتقدم" أدناه.
### الاستنساخ الضحل
إذا كنت تقوم بدمج TruffleHog في سير عمل مستقل ولا تقوم بتشغيل أي أدوات CI/CD أخرى إلى جانب TruffleHog، فإننا نوصي باستخدام [الاستنساخ الضحل](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthltdepthgt) لتسريع سير العمل. إليك مثال على كيفية القيام بذلك:```
...
- shell: bash
run: |
if [ "${{ github.event_name }}" == "push" ]; then
echo "depth=$(($(jq length <<< '${{ toJson(github.event.commits) }}') + 2))" >> $GITHUB_ENV
echo "branch=${{ github.ref_name }}" >> $GITHUB_ENV
fi
if [ "${{ github.event_name }}" == "pull_request" ]; then
echo "depth=$((${{ github.event.pull_request.commits }}+2))" >> $GITHUB_ENV
echo "branch=${{ github.event.pull_request.head.ref }}" >> $GITHUB_ENV
fi
- uses: actions/checkout@v3
with:
ref: ${{env.branch}}
fetch-depth: ${{env.depth}}
- uses: trufflesecurity/trufflehog@main
with:
extra_args: --results=verified,unknown
...
اعتمادًا على نوع الحدث (push أو PR)، نقوم بحساب عدد الالتزامات الموجودة. ثم نضيف 2، لنتمكن من الرجوع إلى التزام أساسي قبل تغييرات الكود الخاصة بنا. نمرر هذه القيمة الصحيحة إلى علامة fetch-depth في إجراء checkout بالإضافة إلى الفرع ذي الصلة. الآن يجب أن تكون عملية checkout أقصر بكثير.
يكتشف TruffleHog بشكل ثابت https://canarytokens.org/.

إذا كنت ترغب في تحديد مراجع `base` و `head` محددة، يمكنك استخدام الوسيط `base` (علامة `--since-commit` في سطر أوامر TruffleHog) والوسيط `head` (علامة `--branch` في سطر أوامر TruffleHog). نوصي فقط باستخدام هذه الوسائط لحالات استخدام محددة جدًا، حيث لا يعمل السلوك الافتراضي.
#### الاستخدام المتقدم: مسح الفرع بالكامل```
- name: scan-push
uses: trufflesecurity/trufflehog@main
with:
base: ""
head: ${{ github.ref_name }}
extra_args: --results=verified,unknown
stages:
security-secrets: stage: security allow_failure: false image: alpine:latest variables: SCAN_PATH: "." # Set the relative path in the repo to scan before_script: - apk add --no-cache git curl jq - curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin script: - trufflehog filesystem "$SCAN_PATH" --results=verified,unknown --fail --json | jq rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
في مثال المسار أعلاه، نقوم بفحص الأسرار الحية في جميع أدلة وملفات المستودع. هذه المهمة تعمل فقط عندما يكون مصدر المسار حدث طلب دمج، مما يعني أنه يتم تشغيلها عند إنشاء طلب دمج جديد.
## Pre-commit Hook
يمكن استخدام TruffleHog في خطاف ما قبل الالتزام لمنع تسرب بيانات الاعتماد قبل أن تغادر جهازك على الإطلاق.
راجع [وثائق خطاف ما قبل الالتزام](https://github.com/trufflesecurity/trufflehog/blob/HEAD/PreCommit.md) لمزيد من المعلومات.
## كاشف التعبير العادي المخصص (alpha)
يدعم TruffleHog كشف والتحقق من التعبيرات العادية المخصصة. للكشف، يلزم وجود **تعبير عادي** واحد على الأقل و**كلمة مفتاحية**. **الكلمة المفتاحية** هي معرف سلسلة نصية ثابتة يظهر في التعبير العادي أو حوله ليتم كشفه. للسماح بأقصى قدر من المرونة للتحقق، يتم استخدام webhook يحتوي على نتائج التطابق للتعبير العادي.
سيرسل TruffleHog طلب POST بصيغة JSON يحتوي على نتائج التطابق للتعبير العادي إلى نقطة نهاية webhook مهيأة. إذا استجابت نقطة النهاية برمز حالة استجابة `200 OK`، فإن السر يعتبر موثوقًا. إذا فشل التحقق بسبب أخطاء الشبكة/API، يتم وضع علامة على النتيجة بأنها غير معروفة.
تدعم الكاشفات المخصصة عددًا من آليات التصفية المختلفة: الإنتروبيا، التعبير العادي المستهدف للمطابقة بأكملها، التعبير العادي المستهدف للسر الملتقط، وقوائم الكلمات المستبعدة التي يتم التحقق منها مقابل السر (المجموعة الملتقطة إن وجدت، المطابقة بأكملها إذا لم تكن مجموعة الالتقاط موجودة). لاحظ أنه إذا كان الكاشف المخصص الخاص بك يحتوي على عدة `regex` (في هذا المثال `hogID` و `hogToken`)، فسيتم تطبيق المرشحات على كل تعبير عادي. [هنا](https://github.com/trufflesecurity/trufflehog/blob/HEAD/examples/generic_with_filters.yml) مثال على كاشف مخصص يستخدم هذه المرشحات.
**ملاحظة:** هذه الميزة في مرحلة ألفا وقابلة للتغيير.
### مثال على كاشف التعبير العادي
[هنا](https://github.com/trufflesecurity/trufflehog/blob/HEAD/pkg/custom_detectors/CUSTOM_DETECTORS.md) كيفية إعداد كاشف تعبير عادي مخصص مع خادم تحقق.
## كشف JWT العام
يدعم TruffleHog كشف والتحقق من مجموعة فرعية من JWTs العامة التي يجدها. على وجه التحديد، إذا كان JWT يستخدم تشفير المفتاح العام بدلاً من HMAC ويمكن الحصول على المفتاح العام، فيمكن لـ TruffleHog تحديد ما إذا كان JWT حيًا أم لا.
## :mag: تحليل
يدعم TruffleHog تشغيل تحليل أعمق لبيانات الاعتماد لعرض صلاحياتها والموارد التي يمكنها الوصول إليها.```bash
trufflehog analyze
هذا المشروع موجود بفضل جميع الأشخاص الذين يساهمون. [ساهم].
المساهمات مرحب بها جداً! يرجى الاطلاع على إرشادات المساهمة أولاً.
لم نعد نقبل المساهمات في TruffleHog v2، لكن هذا الكود متاح في فرع v2.
لقد نشرنا بعض الوثائق والأدوات للبدء في إضافة كاشفات أسرار جديدة. دعنا نحسن الكشف معاً!
حالياً، trufflehog في مرحلة تطوير مكثف ولا يمكن تقديم أي ضمانات بشأن استقرار واجهات برمجة التطبيقات العامة في هذا الوقت.
منذ v3.0، تم إصدار TruffleHog بموجب ترخيص AGPL 3، المضمن في LICENSE. لا يستخدم TruffleHog v3.0 أيًا من قاعدة الكود السابقة، ولكن تم أخذ الحرص للحفاظ على التوافق العكسي في واجهة سطر الأوامر. العمل السابق لهذا الإصدار لا يزال متاحًا بموجب ترخيص GPL 2.0 في تاريخ هذا المستودع والإصدارات والعلامات السابقة للحزمة. مطلوب اتفاقية ترخيص مساهم (CLA) مكتملة لقبول المساهمات مستقبلاً.