Decodifica Caratteri Networkstream

giovedì 15 giugno 2006 - 15.11

andrewdj Profilo | Newbie

Ciao a Tutti,
ho un problema di questo tipo:

Sto testando il telnet su un'apparecchiatura tramite il codice seguente...

Dim TcpClient as new TcpClient Dim NetStr as Networkstream Dim _Log as string TcpClient.Connect("172.16.3.180", 23) NetStr = TcpClient.GetStream() ReDim Preserve ReciveBytes(TcpClient.ReceiveBufferSize) NetStr.Read(ReciveBytes, 0, CInt(TcpClient.ReceiveBufferSize)) _Log = Encoding.Default.GetString(ReciveBytes)

Tutto funziona correttamente... (l'apparecchiatura è un router).. leggo e scrivo comandi senza problemi

adesso mi sposto a telnettare un server UNIX (....che dovrebbe avere codifica UTF8....e che tramite prompt "cmd" risponde con il login correttamente)

e il networkstream che mi viene restituito è indecifrabile con qualsiasi codifica che mi propone il metodo "encoding"...quindi UTF8, 16,32, Default,ASCII etc etc...

Qualcuno ha qualche idea...
GRAZIE 100000000000000000000000000!

Vi ringrazio


Andrea Colognese
Microsoft MCP 2005

Brainkiller Profilo | Guru

>e il networkstream che mi viene restituito è indecifrabile con
>qualsiasi codifica che mi propone il metodo "encoding"...quindi
>UTF8, 16,32, Default,ASCII etc etc...
>Qualcuno ha qualche idea...
>GRAZIE 100000000000000000000000000!

Ciao Andrea,
se telnetti il router da prompt dei comandi con il telnet.exe e gli parli scrivendo sequenze di comandi, l'output è leggibile ?
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

andrewdj Profilo | Newbie

Si certo....Utilizzano il prompt funziona tutto perfettamente anche con il server UNIX ...

Intendevi questo???



Andrea Colognese
Microsoft MCP 2005

Brainkiller Profilo | Guru

>Si certo....Utilizzano il prompt funziona tutto perfettamente
>anche con il server UNIX ...
>Intendevi questo???

Esatto,
allora mi chiedo se vai in Debug e fai un Quick Watch sui buffer che ricevono i byte dallo Stream, che cosa vedi ? Qualcosa di leggibile ?

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

andrewdj Profilo | Newbie

Dal debug vedo solo che l'array di bytes "ReciveBytes" contiene dei byte .... la cosa che mi chiedi tu probabilmente non l'ho capita o non ho idea di come farla....
Lo stream di cui stai parlando adesso non è quello del prompt...immagino ... ma quello che creo con il codice...
Andrea Colognese
Microsoft MCP 2005

Brainkiller Profilo | Guru

>Dal debug vedo solo che l'array di bytes "ReciveBytes" contiene
>dei byte .... la cosa che mi chiedi tu probabilmente non l'ho
>capita o non ho idea di come farla....
>Lo stream di cui stai parlando adesso non è quello del prompt...immagino
>... ma quello che creo con il codice...

Esatto, questo ti chiedevo, contiene i bytes, ma quando sei in debug, seleziona il buffer,e e fai tasto destro Quick Watch per vedere che cosa c'è dentro effettivamente.

Intanto se con il telnet.exe ti risponde con 10 caratteri visibili nel prompt, verifica quanti ne ritorna nello Stream ossia quanti sono presenti in ReceiveBytes per capire se almeno in numero corrispondono.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

andrewdj Profilo | Newbie

Ho fatto delle prova...in effetti sul prompt conto tipo 30-34 caratteri..ma nel buffer solo 14...

Ti allego lo screenshot...c'è anche il codice sotto

1920x1200 271Kb

Andrea Colognese
Microsoft MCP 2005

blood Profilo | Senior Member

>
>adesso mi sposto a telnettare un server UNIX (....che dovrebbe
>avere codifica UTF8....e che tramite prompt "cmd" risponde con
>il login correttamente)
>

scusa la domanda ma che demone è quello a cui ti telnetti del server UNIX ?? perchè se era telnet era tutto in chiaro...ma se è SSH...

---------------
Piscopo Paolo

:: wD @ IRCnet :: .NET wannabe 8-)

andrewdj Profilo | Newbie

Sinceramente il nome del demone non lo so..eventualmente se vuoi lo scopro... in ogni caso è tutto telnet ..in chiaro... l'ssh non centra nulla..
Quello che mi suona strano è da prompt "cmd" di XP va tutto alla grande :)
Andrea Colognese
Microsoft MCP 2005

Brainkiller Profilo | Guru

>Sinceramente il nome del demone non lo so..eventualmente se vuoi
>lo scopro... in ogni caso è tutto telnet ..in chiaro... l'ssh
>non centra nulla..
>Quello che mi suona strano è da prompt "cmd" di XP va tutto alla
>grande :)

Ciao,
attenzione il telnet.exe di XP è un telnet avanzato non sono certo 100 linee di codice, semplicemente di send & receive. Ci sono anche vari tipi di emulazione. E' come scrivere un client di posta, ricevere il testo del messaggio è una cosa, poi ci sono gli allegati, che possono essere codificati in diversi modi, il testo stesso del messaggio può essere criptato con certificati, ecc.ecc. insomma il telnet.exe di Windows immagino supporti tutte le fatispecie.

Nel tuo caso in particolare la soluzione al quesito si ha semplicemente guardando una delle RFC principali del protocollo Telnet:
http://www.ietf.org/rfc/rfc0854.txt

In basso vedi a cosa corrispondono i valori 253, 255 che sono visibili nella screenshot.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

andrewdj Profilo | Newbie

...ho dato un'occhiata ed effettivamente ho fatto passi avanti ora devo implementare la negoziazione del telnet e poi dovrebbe andare..

Grazie ancora


Andrea Colognese
Microsoft MCP 2005

Brainkiller Profilo | Guru

>...ho dato un'occhiata ed effettivamente ho fatto passi avanti
>ora devo implementare la negoziazione del telnet e poi dovrebbe
>andare..

ACcetta la risposta con l'apposito link se ti è servita o se hai risolto il problema.
grazie
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5