FlowPrint¶
The FlowPrint object that is used to generate Fingerprint’s. Note that this is mainly a wrapper method, the actual Fingerprint generation is done in the FingerprintGenerator.
-
class
flowprint.FlowPrint(batch=300, window=30, correlation=0.1, similarity=0.9, threshold=0.1)¶ FlowPrint object for creating fingerprints from mobile network traffic
-
batch¶ Threshold for the batch size in seconds
Type: float
-
window¶ Threshold for the window size in seconds
Type: float
-
correlation¶ Threshold for the minimum required correlation
Type: float
-
similarity¶ Threshold for the minimum required similarity
Type: float
-
threshold¶ Threshold for anomaly detection
Type: float
-
fingerprinter¶ FingerprintGenerator used for generating fingerprints
Type: fingerprints.FingerprintGenerator
-
fingerprints¶ Dictionary of Fingerprint -> label, containing all fingerprints generated by FlowPrint
Type: dict
-
-
FlowPrint.__init__(batch=300, window=30, correlation=0.1, similarity=0.9, threshold=0.1)¶ FlowPrint object for creating fingerprints from mobile network traffic
Parameters: - batch (float, default=300) – Threshold for the batch size in seconds
- window (float, default=30) – Threshold for the window size in seconds
- correlation (float, default=0.1) – Threshold for the minimum required correlation
- similarity (float, default=0.9) – Threshold for the minimum required similarity
- threshold (float, default=0.1) – Threshold for anomaly detection
Generating fingerprints¶
-
FlowPrint.fit(X, y=None)¶ Fit FlowPrint object with fingerprints from given flows.
Parameters: - X (np.array of shape=(n_samples,)) – Flows for fitting FlowPrint.
- y (np.array of shape=(n_samples,), optional) – If given, attach labels to fingerprints from X.
Returns: self – Returns FlowPrint object
Return type: self
-
FlowPrint.predict(X, y=None, default='common')¶ Find closest fingerprint to trained fingerprints
Parameters: - X (Array-like of Fingerprint of shape=(n_fingerprints,)) – Fingerprints to compare against training set.
- y (ignored) –
- default (‘common’|’largest’|other, default=’common’) –
- Default to this strategy if no match is found
- ’common’ : return the fingerprint with most flows
- ’largest’: return the largest fingerprint
- other: return <other> as match, e.g. Fingerprint()/None
Returns: result – Closest matching fingerprints to original. If no match is found, fall back on default
Return type: np.array of shape=(n_fingerprints,)
-
FlowPrint.fit_predict(X, y=None, default='common')¶ Fit FlowPrint with samples and labels and return the predictions of the same samples after running them through FlowPrint.
Parameters: - X (np.array of shape=(n_samples,)) – Flows for fitting FlowPrint.
- y (np.array of shape=(n_samples,), optional) – If given, attach labels to fingerprints from X.
- default (‘common’|’largest’|other, default=’common’) –
- Default to this strategy if no match is found
- ’common’ : return the fingerprint with most flows
- ’largest’: return the largest fingerprint
- other: return <other> as match, e.g. Fingerprint()/None
Returns: result – Closest matching fingerprints to original. If no match is found, fall back on default
Return type: np.array of shape=(n_fingerprints,)
App Recognition¶
Once FlowPrint is trained using the fit(), you can use FlowPrint to label unknown Flows with known apps.
-
FlowPrint.recognize(X, y=None, default='common')¶ Return labels corresponding to closest matching fingerprints
Parameters: - X (Array-like of Fingerprint of shape=(n_fingerprints,)) – Fingerprints to compare against training set.
- y (ignored) –
- default (‘common’|’largest’|other, default=’common’) –
- Default to this strategy if no match is found
- ’common’ : return the fingerprint with most flows
- ’largest’: return the largest fingerprint
- other: return <other> as match, e.g. Fingerprint()/None
Returns: result – Label of closest matching fingerprints to original
Return type: np.array of shape=(n_fingerprints,)
Unseen app detection¶
Once FlowPrint is trained using the fit(), you can use FlowPrint to detect if unknown Flows are in the set of known (trained) apps or if they are a previously unseen app.
-
FlowPrint.detect(X, y=None, threshold=None)¶ Predict whether samples of X are anomalous or not.
Parameters: - X (np.array of shape=(n_samples,)) – Flows for fitting FlowPrint.
- y (Ignored) –
- threshold (float, default=None) – Minimum required threshold to consider point benign. If None is given, use FlowPrint default
Returns: result – Prediction of samples in X: +1 if benign, -1 if anomalous.
Return type: np.array of shape=(n_samples,)
I/O methods¶
FlowPrint provides methods to save and load a FlowPrint object, including its fingerprints to a json file.
-
FlowPrint.save(file, fingerprints=None)¶ Save fingerprints to file.
Parameters: - file (string) – File in which to save flowprint fingerprints.
- fingerprints (iterable of Fingerprint (optional)) – If None export fingerprints from fitted FlowPrint object, otherwise, export given fingerprints.
-
FlowPrint.load(*files, store=True, parameters=False)¶ Load fingerprints from files.
Parameters: - file (string) – Files from which to load fingerprints.
- store (boolean, default=True) – If True, store fingerprints in FlowPrint object
- parameters (boolean, default=False) – If True, also update FlowPrint parameters from file
Returns: result – Fingerprints imported from file.
Return type: dict of Fingerprint -> label