Я написал приложение для автоматического подключения к нашим брандмауэрам. Все они работают с одним и тем же интерфейсом. Мы связываемся с IP-адресом, и они выдают сообщение LOGIN или LOGOUT и запрашивают имя пользователя или пароль.
Я использовал этот код:
public static void ConnectToFirewall(string strUsername, string strPassword, string strFirewallIp)
{
IPAddress[] ipaIpAddressCollection = Dns.GetHostAddresses(strFirewallIp);
IPEndPoint ipeIpEndPoint = new IPEndPoint(ipaIpAddressCollection[0], intPort);
Socket sckSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sckSocket.Connect(ipeIpEndPoint);
string strData = strUsername + "\r\n"+ strPassword + "\r\n";
byte[] bytData = new byte[1024];
bytData = Encoding.ASCII.GetBytes(strData);
sckSocket.Send(bytData);
byte[] bytDataReceived = new byte[1024];
int intData = sckSocket.Receive(bytDataReceived);
sckSocket.Close();
}
Если я не вошел в систему, при подключении к нему я получаю сообщение: ВХОД, имя пользователя: / Пароль :.
Если я вошел в систему, я получаю ВЫХОД, имя пользователя: / Пароль.
Это прекрасно работает с вышеуказанным методом для половины моих брандмауэров, похоже, не работает (я получаю логин, как будто я не пытался передать учетные данные).
Я также попробовал это с
TcpClient tcpConnection = new TcpClient(myip,myport);
но это дает тот же результат. Это работает для определенных IP-адресов брандмауэра. терпит неудачу для других. Все они находятся в одном домене.
Кто-нибудь знает, как я мог бы пройти через это или какие шаги я мог предпринять для устранения неполадок этого или что может быть причиной того, что какой-то сервер не принимает этот метод, несмотря на то, что он действительно принимает, если я telnet к нему?
Любая помощь или предложения приветствуются.
Большое спасибо заранее.