Я делаю простое приложение для обнаружения сетевых аномалий в .NET.
Приложение собирает необработанные пакеты, затем анализирует их и определяет, произошла ли потенциальная атака (с помощью статического алгоритма). На данный момент я реализовал алгоритм для обнаружения атаки TCP Flood на основе флагов SYN и ACK в TCP-пакетах. Помимо анализа, приложение сохраняет данные в файл по указанной схеме:
SOURCE_IP | DESTINATION_IP | ВРЕМЯ (ВРЕМЯ) | СИН | ACK
пример:
10.0.0.5 | 10.0.0.10 | 1726332243,275925 | 1 | 1
Я хочу реализовать модель машинного обучения (с помощью ML.NET), которая прогнозирует и предсказывает, произошла ли атака, на основе данных, которые уже были собраны в текущем «сеансе». >
Я попробовал добавить еще один столбец «IsAttack», который был моим ярлыком. После этого я смоделировал атаку TCP Flood и подготовил данные для обучения, заполнив последний столбец. Но модель ml также включает в себя предыдущие метки, все которые в текущем сеансе равны «0», поэтому она не работает должным образом. С другой стороны, когда я пытался спрогнозировать сценарий, ML брал данные только из одной строки. Есть идеи, как я могу совместить предсказание и прогноз? Или любое другое решение?
Сгенерированная модель машинного обучения:
public partial class TCPFloodMLDetector
{
///
/// model input class for TCPFloodMLDetector.
///
#region model input class
public class ModelInput
{
[LoadColumn(0)]
public string SourceAddress { get; set; }
[LoadColumn(1)]
public string DestinationAddress { get; set; }
[LoadColumn(2)]
public double Timeval { get; set; }
[LoadColumn(3)]
public bool SYN { get; set; }
[LoadColumn(4)]
public bool ACK { get; set; }
[LoadColumn(5)]
[ColumnName(@"col5")]
public Single IsAttack { get; set; }
}
#endregion
///
/// model output class for TCPFloodMLDetector.
///
#region model output class
public class ModelOutput
{
[ColumnName(@"col5")]
public float[] Col5 { get; set; }
[ColumnName(@"col5_LB")]
public float[] Col5_LB { get; set; }
[ColumnName(@"col5_UB")]
public float[] Col5_UB { get; set; }
}
#endregion
private static string MLNetModelPath = Path.GetFullPath(@"D:\Projects\NetworkAnalyzer\\Models\TCPFloodMLDetector.mlnet");
public static readonly Lazy PredictEngine = new Lazy(() => CreatePredictEngine(), true);
///
/// Use this method to predict on .
///
///
model input.
///
public static ModelOutput Predict(ModelInput? input = null, int? horizon = null)
{
var predEngine = PredictEngine.Value;
return predEngine.Predict(input, horizon);
}
private static TimeSeriesPredictionEngine CreatePredictEngine()
{
var mlContext = new MLContext();
ITransformer mlModel = mlContext.Model.Load(MLNetModelPath, out var schema);
return mlModel.CreateTimeSeriesEngine(mlContext);
}
}
Я использую это в функции обнаружения, которая запускается каждую секунду:
public async Task Detect()
{
try
{
var context = new MLContext();
var data = context.Data.LoadFromTextFile("tcpflood.txt",
hasHeader: false, separatorChar: '|');
TCPFloodMLDetector.LoadIDataViewFromFile(context, "tcpflood.txt",
'|', false, true);
// predict with default option.
var modelOutput = TCPFloodMLDetector.Predict();
Console.WriteLine(string.Join(",", modelOutput.Col5));
// predict next 5 periods
modelOutput = TCPFloodMLDetector.Predict(horizon: 5);
Console.WriteLine(string.Join(",", modelOutput.Col5));
}
catch (Exception ex)
{
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... nd-predict
ML.NET сочетает прогноз и предсказание ⇐ C#
Место общения программистов C#
1729775562
Anonymous
Я делаю простое приложение для обнаружения сетевых аномалий в .NET.
Приложение собирает необработанные пакеты, затем анализирует их и определяет, произошла ли потенциальная атака (с помощью статического алгоритма). На данный момент я реализовал алгоритм для обнаружения атаки TCP Flood на основе флагов SYN и ACK в TCP-пакетах. Помимо анализа, приложение сохраняет данные в файл по указанной схеме:
SOURCE_IP | DESTINATION_IP | ВРЕМЯ (ВРЕМЯ) | СИН | ACK
пример:
10.0.0.5 | 10.0.0.10 | 1726332243,275925 | 1 | 1
Я хочу реализовать модель машинного обучения (с помощью ML.NET), которая прогнозирует и предсказывает, произошла ли атака, на основе данных, которые уже были собраны в текущем «сеансе». >
Я попробовал добавить еще один столбец «IsAttack», который был моим ярлыком. После этого я смоделировал атаку TCP Flood и подготовил данные для обучения, заполнив последний столбец. Но модель ml также включает в себя предыдущие метки, все которые в текущем сеансе равны «0», поэтому она не работает должным образом. С другой стороны, когда я пытался спрогнозировать сценарий, ML брал данные только из одной строки. Есть идеи, как я могу совместить предсказание и прогноз? Или любое другое решение?
Сгенерированная модель машинного обучения:
public partial class TCPFloodMLDetector
{
///
/// model input class for TCPFloodMLDetector.
///
#region model input class
public class ModelInput
{
[LoadColumn(0)]
public string SourceAddress { get; set; }
[LoadColumn(1)]
public string DestinationAddress { get; set; }
[LoadColumn(2)]
public double Timeval { get; set; }
[LoadColumn(3)]
public bool SYN { get; set; }
[LoadColumn(4)]
public bool ACK { get; set; }
[LoadColumn(5)]
[ColumnName(@"col5")]
public Single IsAttack { get; set; }
}
#endregion
///
/// model output class for TCPFloodMLDetector.
///
#region model output class
public class ModelOutput
{
[ColumnName(@"col5")]
public float[] Col5 { get; set; }
[ColumnName(@"col5_LB")]
public float[] Col5_LB { get; set; }
[ColumnName(@"col5_UB")]
public float[] Col5_UB { get; set; }
}
#endregion
private static string MLNetModelPath = Path.GetFullPath(@"D:\Projects\NetworkAnalyzer\\Models\TCPFloodMLDetector.mlnet");
public static readonly Lazy PredictEngine = new Lazy(() => CreatePredictEngine(), true);
///
/// Use this method to predict on .
///
///
model input.
///
public static ModelOutput Predict(ModelInput? input = null, int? horizon = null)
{
var predEngine = PredictEngine.Value;
return predEngine.Predict(input, horizon);
}
private static TimeSeriesPredictionEngine CreatePredictEngine()
{
var mlContext = new MLContext();
ITransformer mlModel = mlContext.Model.Load(MLNetModelPath, out var schema);
return mlModel.CreateTimeSeriesEngine(mlContext);
}
}
Я использую это в функции обнаружения, которая запускается каждую секунду:
public async Task Detect()
{
try
{
var context = new MLContext();
var data = context.Data.LoadFromTextFile("tcpflood.txt",
hasHeader: false, separatorChar: '|');
TCPFloodMLDetector.LoadIDataViewFromFile(context, "tcpflood.txt",
'|', false, true);
// predict with default option.
var modelOutput = TCPFloodMLDetector.Predict();
Console.WriteLine(string.Join(",", modelOutput.Col5));
// predict next 5 periods
modelOutput = TCPFloodMLDetector.Predict(horizon: 5);
Console.WriteLine(string.Join(",", modelOutput.Col5));
}
catch (Exception ex)
{
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79122079/ml-net-mix-forecast-and-predict[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия