| layout | title |
|---|---|
default |
API Reference |
Complete documentation for the Device Fingerprinting Library API.
- Core Classes
- Fingerprint Generation
- Cryptography
- Secure Storage
- Anomaly Detection
- TPM Integration
- Utility Functions
- Data Types
- Exceptions
Basic device fingerprint generator for simple use cases.
Usage:
from device_fingerprinting import DeviceFingerprintGenerator
generator = DeviceFingerprintGenerator()
fingerprint = generator.generate_device_fingerprint()Methods:
Generate a stable device fingerprint.
Returns: Unique device identifier string
Example:
fp = generator.generate_device_fingerprint()
print(f"Fingerprint: {fp}")
# Output: device_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6Verify that a fingerprint is still valid for this device.
Parameters:
fingerprint: Previously generated fingerprint to verify
Returns: Tuple of (is_valid, confidence_score)
Example:
is_valid, confidence = generator.verify_fingerprint_stability(stored_fp)
if is_valid:
print(f"Fingerprint valid with {confidence:.2%} confidence")Get detailed system information used in fingerprinting.
Returns: Dictionary with hardware and system details
Example:
info = generator.get_system_info()
print(f"CPU: {info.get('cpu')}")
print(f"Motherboard: {info.get('motherboard')}")
print(f"Disk serial: {info.get('disk_serial')}")Advanced generator with encryption, storage, and anomaly detection.
Usage:
from device_fingerprinting import ProductionFingerprintGenerator
generator = ProductionFingerprintGenerator()
fingerprint = generator.generate_fingerprint()Methods:
Generate fingerprint with optional method selection.
Parameters:
method: "stable" (default), "fast", or "comprehensive"
Returns: FingerprintResult object
Example:
result = generator.generate_fingerprint(method="stable")
print(f"Fingerprint: {result.fingerprint}")
print(f"Confidence: {result.confidence:.2%}")
print(f"Components: {len(result.components)}")Securely store a fingerprint or data.
Parameters:
key: Storage key identifiervalue: Data to store (automatically encrypted)
Raises: StorageError if storage fails
Example:
generator.store_fingerprint("user_device", fingerprint)Retrieve previously stored fingerprint.
Parameters:
key: Storage key identifier
Returns: Decrypted fingerprint value
Raises:
KeyErrorif key not foundStorageErrorif decryption fails
Example:
retrieved = generator.retrieve_fingerprint("user_device")Detect anomalous system behavior.
Parameters:
metrics: Current system metrics (auto-collected if None)baseline: Baseline metrics for comparison (optional)
Returns: Tuple of (is_anomalous, confidence_score)
Example:
is_anomalous, confidence = generator.detect_anomaly()
if is_anomalous:
print(f"Anomaly detected: {confidence:.2%}")Get current system performance metrics.
Returns: Dictionary with CPU, memory, disk metrics
Example:
metrics = generator.get_system_metrics()
print(f"CPU usage: {metrics['cpu_percent']}%")
print(f"Memory: {metrics['memory_percent']}%")Create a device-bound secret.
Parameters:
data: Dictionary to bind to device
Returns: Device-bound token
Example:
token = generator.create_device_binding({
"api_key": "secret",
"user_id": "user123"
})Verify a device-bound token.
Parameters:
token: Device-bound token to verify
Returns: True if valid on this device
Example:
is_valid = generator.verify_device_binding(token)Configure anomaly detection sensitivity.
Parameters:
threshold: 0.0-1.0 (higher = less sensitive)
Example:
generator.set_anomaly_threshold(0.7) # Less sensitiveEnable or disable TPM features.
Parameters:
enabled: True to enable TPM
Returns: True if TPM is available and enabled
Example:
if generator.use_tpm(True):
print("TPM enabled")
else:
print("TPM not available, using software fallback")Professional-grade fingerprinter with multiple methods.
Usage:
from device_fingerprinting import AdvancedDeviceFingerprinter
from device_fingerprinting import FingerprintMethod
fingerprinter = AdvancedDeviceFingerprinter()
result = fingerprinter.generate_fingerprint(FingerprintMethod.QUANTUM_RESISTANT)Methods:
generate_fingerprint(method: FingerprintMethod, include_debug_info: bool = False) -> AdvancedFingerprintResult
Generate fingerprint with specific method.
Parameters:
method:FingerprintMethod.BASIC,.ADVANCED, or.QUANTUM_RESISTANTinclude_debug_info: Include component details in result
Returns: AdvancedFingerprintResult object
Example:
result = fingerprinter.generate_fingerprint(
FingerprintMethod.QUANTUM_RESISTANT,
include_debug_info=True
)
print(f"Components: {result.components}")Verify fingerprint with specific method.
Parameters:
fingerprint: Fingerprint to verifymethod: Method used to generate
Returns: Tuple of (is_stable, confidence)
Example:
is_stable, confidence = fingerprinter.verify_fingerprint_stability(
fingerprint,
FingerprintMethod.ADVANCED
)Compare all fingerprint methods.
Returns: Dictionary with results for all methods
Example:
comparison = fingerprinter.compare_methods()
for method, result in comparison.items():
print(f"{method}: confidence={result.confidence:.2%}")Enumeration of fingerprinting methods.
from device_fingerprinting import FingerprintMethod
# Available methods
FingerprintMethod.BASIC # Fast, ~50ms
FingerprintMethod.ADVANCED # Balanced, ~150ms
FingerprintMethod.QUANTUM_RESISTANT # Secure, ~300msResult object from fingerprint generation.
Attributes:
result.fingerprint: str # The generated fingerprint
result.confidence: float # Confidence score 0.0-1.0
result.method: str # Method used
result.timestamp: datetime # Generation time
result.components: list[str] # Hardware components used (if debug enabled)
result.warnings: list[str] # Any warnings during generationExample:
result = generator.generate_fingerprint()
print(f"Fingerprint: {result.fingerprint}")
print(f"Confidence: {result.confidence:.2%}")
print(f"Method: {result.method}")
print(f"Generated: {result.timestamp}")Extended result object with more details.
Attributes:
result.fingerprint: str # The generated fingerprint
result.confidence: float # Confidence score
result.method: FingerprintMethod # Enumerated method
result.timestamp: datetime # Generation time
result.components: list[str] # All components collected
result.component_hashes: dict # Hash of each component
result.warnings: list[str] # Warnings
result.performance_metrics: dict # Generation performance
result.platform_info: dict # Detailed platform infoCryptographic operations.
Usage:
from device_fingerprinting.crypto import CryptoEngine
engine = CryptoEngine()
encrypted = engine.encrypt(plaintext, key)
decrypted = engine.decrypt(encrypted, key)Methods:
Encrypt data using AES-256-GCM.
Parameters:
plaintext: Data to encryptkey: 32-byte encryption keynonce: 12-byte nonce (generated if None)
Returns: Encrypted ciphertext with nonce and auth tag
Example:
import os
key = os.urandom(32) # 32 bytes for AES-256
encrypted = engine.encrypt(b"secret data", key)Decrypt AES-256-GCM encrypted data.
Parameters:
ciphertext: Encrypted data from encrypt()key: Same key used for encryption
Returns: Decrypted plaintext
Raises: ValueError if authentication fails (tampering detected)
Example:
try:
plaintext = engine.decrypt(encrypted, key)
except ValueError:
print("Decryption failed - data may be corrupted or tampered")Generate SHA-3-256 hash of data.
Parameters:
data: Data to hash
Returns: Hexadecimal hash string
Example:
fingerprint = engine.hash_data(hardware_data)Derive cryptographic key from password using Scrypt.
Parameters:
password: Password bytessalt: 32-byte salt (generated if None)
Returns: Tuple of (key, salt)
Example:
key, salt = engine.derive_key(b"user_password")
# Save salt with encrypted dataEncrypted data storage backend.
Usage:
from device_fingerprinting.secure_storage import SecureStorage
storage = SecureStorage()
storage.set("user_id", "user123", "value")
value = storage.get("user_id", "user123")Methods:
Store encrypted value.
Parameters:
category: Storage category (user_id, app_id)key: Key identifiervalue: Value to store
Example:
storage.set("user_123", "api_key", "sk_secret_key")Retrieve encrypted value.
Parameters:
category: Storage categorykey: Key identifier
Returns: Decrypted value
Raises: KeyError if key not found
Example:
api_key = storage.get("user_123", "api_key")Delete stored value.
Parameters:
category: Storage categorykey: Key identifier
Returns: True if deleted, False if not found
Example:
if storage.delete("user_123", "api_key"):
print("Deleted")Check if key exists in storage.
Parameters:
category: Storage categorykey: Key identifier
Returns: True if exists
Example:
if storage.exists("user_123", "api_key"):
value = storage.get("user_123", "api_key")List all keys in a category.
Parameters:
category: Storage category
Returns: List of key names
Example:
keys = storage.list_keys("user_123")
for key in keys:
print(key)Machine learning-based anomaly detection.
Usage:
from device_fingerprinting.ml_features import MLAnomalyDetector
detector = MLAnomalyDetector()
is_anomalous, score = detector.detect(metrics)Methods:
Detect anomalies in system metrics.
Parameters:
metrics: Current system metrics dictionarybaseline: Baseline metrics for comparison
Returns: Tuple of (is_anomalous, anomaly_score)
Example:
metrics = {
"cpu_percent": 45.2,
"memory_percent": 62.1,
"disk_percent": 78.3,
"network_io": {"bytes_sent": 1024000, "bytes_recv": 2048000}
}
is_anomalous, score = detector.detect(metrics)Set anomaly detection threshold.
Parameters:
threshold: 0.0-1.0 (higher = less sensitive)
Example:
detector.set_threshold(0.75) # Less sensitiveGet which features contributed to anomaly score.
Parameters:
metrics: System metrics
Returns: Dictionary with feature contributions
Example:
contributions = detector.get_contributing_features(metrics)
for feature, score in contributions.items():
print(f"{feature}: {score:.2%}")TPM-based fingerprinting.
Usage:
from device_fingerprinting.tpm_hardware import get_tpm_status, enable_tpm_fingerprinting
# Check TPM availability
status = get_tpm_status()
# Enable TPM features
success = enable_tpm_fingerprinting(True)Functions:
Get TPM availability and details.
Returns: Dictionary with TPM status
Example:
status = get_tpm_status()
print(f"Platform: {status['platform']}")
print(f"TPM available: {status['tpm_hardware_available']}")
print(f"TPM version: {status.get('tpm_version', 'Unknown')}")
print(f"Manufacturer: {status.get('tpm_manufacturer', 'Unknown')}")Enable or disable TPM fingerprinting.
Parameters:
enabled: True to enable TPM
Returns: True if TPM is available and enabled
Example:
if enable_tpm_fingerprinting(True):
print("TPM enabled for fingerprinting")
else:
print("TPM not available - using software mode")Quick standalone fingerprint generation.
Parameters:
method: "stable" (default), "fast", or "comprehensive"
Returns: Device fingerprint string
Example:
from device_fingerprinting import generate_fingerprint
fp = generate_fingerprint()Get system and hardware information.
Returns: Dictionary with hardware details
Example:
from device_fingerprinting import get_system_info
info = get_system_info()Dictionary with system metrics keys:
{
"cpu_percent": float, # CPU usage 0-100
"cpu_count": int, # Number of CPUs
"memory_percent": float, # Memory usage 0-100
"memory_available": int, # Available memory bytes
"disk_percent": float, # Disk usage 0-100
"disk_free": int, # Free disk bytes
"process_count": int, # Number of processes
"boot_time": float, # System boot timestamp
"uptime": float, # Seconds since boot
"network_io": {
"bytes_sent": int,
"bytes_recv": int,
"packets_sent": int,
"packets_recv": int
}
}Base exception for fingerprinting errors.
from device_fingerprinting.exceptions import FingerprintError
try:
fingerprint = generator.generate_device_fingerprint()
except FingerprintError as e:
print(f"Fingerprinting failed: {e}")Storage operation error.
from device_fingerprinting.exceptions import StorageError
try:
generator.store_fingerprint("key", value)
except StorageError as e:
print(f"Storage failed: {e}")Cryptographic operation error.
from device_fingerprinting.exceptions import CryptoError
try:
decrypted = engine.decrypt(ciphertext, key)
except CryptoError as e:
print(f"Crypto operation failed: {e}")Anomaly detection error.
from device_fingerprinting.exceptions import AnomalyDetectionError
try:
is_anomalous, score = detector.detect(metrics)
except AnomalyDetectionError as e:
print(f"Anomaly detection failed: {e}")TPM-related error.
from device_fingerprinting.exceptions import TPMError
try:
enable_tpm_fingerprinting(True)
except TPMError as e:
print(f"TPM operation failed: {e}")from device_fingerprinting import __version__
print(f"Library version: {__version__}")
# Output: 2.2.3import device_fingerprinting
import sys
print(f"Python: {sys.version}")
print(f"Library: {device_fingerprinting.__version__}")
# Ensure compatibility
assert sys.version_info >= (3, 9), "Python 3.9+ required"from device_fingerprinting import ProductionFingerprintGenerator
from device_fingerprinting import get_tpm_status
import json
# Initialize generator
generator = ProductionFingerprintGenerator()
# Check TPM
tpm_status = get_tpm_status()
print(f"TPM Available: {tpm_status['tpm_hardware_available']}")
# Enable TPM if available
generator.use_tpm(True)
# Generate fingerprint
fingerprint = generator.generate_fingerprint()
print(f"Fingerprint: {fingerprint}")
print(f"Confidence: {fingerprint.confidence:.2%}")
# Store securely
generator.store_fingerprint("device_id", fingerprint.fingerprint)
# Monitor for anomalies
metrics = generator.get_system_metrics()
is_anomalous, confidence = generator.detect_anomaly(metrics)
print(f"System normal: {not is_anomalous}")
# Create device binding
token = generator.create_device_binding({"user_id": "user123"})
is_valid = generator.verify_device_binding(token)
print(f"Token valid: {is_valid}")For more examples, see the Usage Examples guide.