В вашем вопросе общая длина строки равна 4752
int length = text.Length; //4752
Но Подстрока номер второго параметра представляет количество символов, которое вы хотите получить.
В вашем коде начните с indexStart(4176)
и получите indexEnd(4195)
, который будет за строкой Length.
Я думаю, вам нужно использовать indexEnd - indexStart
для второго параметра
int indexStart = text.IndexOf("DeviceName="); //4176
int indexEnd = text.IndexOf("DeviceID="); //4195
string deviceName = text.Substring(indexStart, indexEnd - indexStart);