Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SslStream se zaglupljuje zbog malformed SSL paketa

[es] :: .NET :: SslStream se zaglupljuje zbog malformed SSL paketa

[ Pregleda: 1279 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

stargatenow

Član broj: 9811
Poruke: 258
*.static.sbb.rs.



+3 Profil

icon SslStream se zaglupljuje zbog malformed SSL paketa07.06.2010. u 11:05 - pre 169 meseci
Pokusavam da komuniciram sa jednim Linux-based sistemom preko SSL, koristeci SslStream u C# u .NET 2.0. Sve je radilo kako treba, osim slanja jedne komande tom sistemu: posle nje mi on posalje odgovor, ali od tog momenta vise nista ne mogu da procitam iz SslStream-a (blokira na .Read, a nece da cita ni asinhrono). Ne dobijem nikakav exception, stream je otvoren, sve izgleda kao da udaljeni sistem nista vise ne salje.

Na kraju sam krenuo da posmatram komunikaciju kroz Wireshark, i otkrio sam sta je uzrok: poslednja poruka koju sam ispravno primio sadrzi i neki plaintext (koji izgleda kao neka greska koju baci Linux) unutar tela SSL paketa. Pretpostavljam da plaintext unutar tela SSL paketa nije predvidjen/dozvoljen, ali me buni zasto mi onda SslStream nekako ne stavi do znanja da je doslo do takvog problema (preko nekog exception-a ili sl).

Ima li neko ideju kako da u kodu uhvatim da se ovo desilo, i da nekako oporavim stream?

Probao sam i da uradim sledece: postavim ReadTimeout stream-a na npr. 5 sec (ciljam da to istekne upravo posle problematicne komande), on baci IOException kada to istekne (posle te komande) a nema podataka, i onda u sledecem .Read uspesno procita plaintext poruku. Ovo mi onda pravi druge probleme, izmedju ostalog i to da sistem moze da mi baca ovaj exception non-stop, jer moze da se desi da duze vreme nema poruka izmedju sistema...


NOTE: kada uklonim uzrok te Linux greske koju dobijem kao plaintext, sve radi kako treba, ali mi ni to nije trajno resenje, jer moram da handlujem ovo zbog drugih potencijalnih gresaka.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: SslStream se zaglupljuje zbog malformed SSL paketa07.06.2010. u 11:24 - pre 169 meseci
A da sa linuxa uhvatis gresku, posaljes gresku kroz ssl stream i oboris isti? Deluje mi kao da kontrolises obe strane.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

stargatenow

Član broj: 9811
Poruke: 258
*.static.sbb.rs.



+3 Profil

icon Re: SslStream se zaglupljuje zbog malformed SSL paketa07.06.2010. u 11:31 - pre 169 meseci
Njet, nemam kontrolu nad Linux stranom (u pitanju je zatvoren i lose dokumentovan sistem).
 
Odgovor na temu

stargatenow

Član broj: 9811
Poruke: 258
*.static.sbb.rs.



+3 Profil

icon Re: SslStream se zaglupljuje zbog malformed SSL paketa09.06.2010. u 11:12 - pre 169 meseci
Napravio sam neki workaround, mada je na klimavim nogama. Otkrio sam da:

1. SslStream.Read se blokira ako naleti na plaintext, jer ne moze da ga svari, ali ne baci nikakav exception nego ceka jos podataka (do beskonacnosti)
2. Ako u tom momentu uradim .Read na underlying TCP stream-u i pokupim to plaintext "djubre", SslStream.Read nastavlja da radi kako treba. Ali, zackoljica je kako otkriti da u SslStream postoji djubre, i kako da ga uklonim a da ne pocistim i neke dobre (enkriptovane) podatke.

Evo kako to radi (mada mislim moze da dodje do situacije da proguta i korisne podatke):

- Posle svakog SslStream.Read proveravam .DataAvailable iz njegovog underlying TCP stream-a
- Ako i posle .Read ima podataka (DataAvailable = true), palim timer koji ceka 5 sec
- Ako pre isteka tih 5 sec SslStream.Read vrati novu turu podataka, znaci da nije blokirao i iskljucujem timer
- U suprotnom, ako timer okine, ponovo proverim .DataAvailable. Ako i dalje postoji nesto, velika je verovatnoca da mi SslStream.Read stoji blokiran zbog toga. Onda uradim .Read na underlying stream-u i nadam se da sam pokupio samo djubre.

 
Odgovor na temu

[es] :: .NET :: SslStream se zaglupljuje zbog malformed SSL paketa

[ Pregleda: 1279 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.