Views
No views yet
| Metric | Test Set | 5-Fold CV (mean ± std) |
|---|---|---|
| Accuracy | 95.74% | 94.05% ± 3.52% |
| F1 Score | 93.33% | 90.71% ± 5.23% |
| ROC AUC | 95.83% | 98.17% ± 1.50% |
| MCC | 90.21% | 87.05% ± 7.19% |
| Rank | Feature | What it Captures |
|---|---|---|
| 1 | crypto_string_ratio | Ratio of crypto-related strings (aes, sha, encrypt, etc.) |
| 2 | sec_entropy_max | Maximum section entropy — crypto code has distinctive high-entropy sections |
| 3 | crypto_constant_hits | YARA-like scan for AES S-box, SHA init vectors, DES tables |
| 4 | text_rotate_density | ROL/ROR instruction density — crypto uses heavy bitwise rotation |
| 5 | sec_rodata_entropy | .rodata section entropy — lookup tables (S-boxes) are high entropy |
| 6 | sec_text_entropy | .text section entropy — crypto round functions are near-uniform |
| 7 | text_xor_density | XOR instruction density — core crypto operation |
| 8 | sec_entropy_std | Entropy variation across sections — crypto binaries show wider range |
| 9 | n_crypto_strings | Count of crypto-related strings in binary |
| 10 | avg_string_len | Average string length — structural indicator |
1import xgboost as xgb
2import json
3
4# Load model
5model = xgb.XGBClassifier()
6model.load_model("crypto_detector_xgboost.json")
7
8# Load feature list
9with open("top10_features.json") as f:
10 features = json.load(f)["features"]
11
12# Extract features from a binary (see scripts/feature_extraction.py)
13# features_dict = extract_features("/path/to/binary")
14# X = [features_dict[f] for f in features]
15# prediction = model.predict([X])crypto_detector_xgboost.json — Trained XGBoost modeltop10_features.json — Feature names and ranking detailsresults_summary.json — Full evaluation metricsfigures/ — Visualizations (SHAP, ROC, learning curves, etc.)scripts/ — Full pipeline: dataset creation, feature extraction, training