![]() |
Чтение пакетов снифера
Есть самописный снифер на C#, снифаю им пакеты браузера, затем необходимо отпарсить html текст, достав необходимую информацию. Проблема в том, что текст в пакета не очень читабелен. Можно ли как-нибудь привести пакет к читабельному виду? Вот, например, кусок пакета с хтмл странички ya.ru
(русские буквы так вообще не отображаются) Код:
HTTP/1.1 200 OK..Server: nginx..Date: Tue, 02 Feb 2010 15:38:23 GMT..Content-Type: text/html; charset=utf-8..Last-Modified: Tue, 12 Jan 2010 15:29:03 GMT..Transfer-Encoding: chunked..Connection: keep-alive....1362..<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><meta http-equiv=Content-Type content="text/html;charset=utf-8"><title>............</title><link rel="shortcut icon"href="http://img.yandex.net/i/favicon.ico"><base target="_top"><style type="text/css">*{font-size:100.01%;margin:0}body{font:.8em Arial,sans-serif;background:#fff url(http://www.tns-counter.ru/V13a****yandex_ru/ru/CP1251/tmsec=yandex_ya/0)}body,a{color:#999}a:hover{color:#f00!important}table{width:100%;height:100%}table table{width:65%;max-width:1000px;min-width:300px;margin:auto}table table td{padding:.25em}#text,#text input{font:100% Arial,sans-serif;width:100%}p{padding:5em 2.2em 13px}body,ul,li{padding:0;list-style:none}span{white-space:nowrap}#head{float:left;width:100%}#head li{font:85% Verdana,sans-serif;padding:5px 10px 7px 0}#head a{color:#000}#head .s{float:left;padding-left:10px}#head .s a{float:left;color:#ee7b00}#head .s i{position:absolute;width:16px;height:16px;margin-left:-19px;background:url(http://img.yandex.net/i/switch-yaru.png) no-repeat}#mail{float:right}#head .user,#head .user *{text-decoration:underline}#head .user *{color:#f00}#head .exit{color:#E03A3A}</style><!--[if IE]><style>.b-search__wrap{width:expression(document.body.clientWidth>1600 ? '1000px':document.body.clientWidth< 500 ? '300px':'65%')}#head .s i{cursor:hand}</style><![endif]--><style type="text/css"media="handheld">body{padding:.5em}tr,td{display:block}table,table table,td,p{padding:0;height:auto;width:100%;min-width:0;text-align:center}#text *{width:180px}input{margin:.5em 0}</style><script type="text/javascript">var ieHomeCheck={URL:"http://ya.ru/",linkId:"sethome",clids:[41124],_checkClids:function(){var D=-1;document.body.style.behavior="url(#default#homepage)";if(document.body.isHomePage("http://ya.ru/")||document.body.isHomePage(this.URL)){return 0}for(var C=0;C<this.clids.length;C++){if(document.body.isHomePage(this.URL+"?clid="+this.clids[C])){return this.clids[C]}}return D},_hide:function(){document.getElementById(this.linkId).style.display="none"},_cH:function(F,G){var E=function(C,A,B){return location.protocol+"//clck.yandex.ru/"+B+"/dtype="+C+"/pid=132/cid=2039/path="+A+"/rnd="+((new Date()).getTime()+Math.round(Math.random()*100))+"/*"+G};var H=document.createElement("script");H.src=E("stred",F,"jclck");document.documentElement.getElementsByTagName("head")[0].appendChild(H)},action:function(){this.URL=location.protocol+"//"+location.hostname+"/";var B=this._checkClids();if(B>0){this._hide();this._cH("nextdistrib.homepage."+B,this.URL)}else{if(B==0){this._hide();this._cH("nextdistrib.homepage",this.URL)}}}};function c(A,B,C){new Image().src=location.protocol+"//clck.yandex.ru/click/dtype=stred/pid="+B+"/cid="+C+"/rnd="+((new Date()).getTime()+Math.round(Math.random()*100))+"/*"+(A.href?A.href:"")}function setHome(A,B){try{A.style.behavior="url(#default#homepage)";A.setHomePage(B);return false}catch(C){}}function createElement(B,A){var D=document.createElement(B);for(var C in A){D[C]=A[C]}return document.getElementsByTagName("head")[0].appendChild(D)};</script><table cellspacing=0 cellpadding=0><tr><td valign=top colspan=2 height=1><ul id=head><li class=s><a id="sethome"href="http://help.yandex.ru/start/"onclick="c(this,17,1755);return setHome(this,'http://ya.ru/?clid='+(location.href.match(/clid=(\d+)/)?location.href.match(/clid=(\d+)/)[1]:'41124'))">.............. ..................</a><li id=mail><a href="http://mail.yandex.ru"onclick="c(this,17,1080)">..........................</a></ul><!--[if IE]><script type="text/javascript">ieHomeCheck.action();</script><![endif]--><tr><td align=center colspan=2><form action="http://yandex.ru/yandsearch"onsubmit='var clid=location.href.match(/clid=(\d+)/);location.href=this.action+"?text="+encodeURIComponent(this.text.value)+(clid?"&"+clid[0]:"");return false'><table class="b-search__wrap"><tr><td><a href="http://www.yandex.ru"onclick="c(this,17,1081)"><img src="http://ya.ru/logo.png"width=100 height=44 border=0 alt="............"></a><td id=text><div><input name=text size=50 maxlength=300></div><t |
точки эти - 0d 0a - возврат строки перевод каретки
а русский должен отображаться нормально, если в консоли отображаешь, - есть CharToOem и тд Можешь сделать для пакета WriteFile в какойнить файло и посмотри, только двоичные данные, - они так и будут нечитабельными, можешь фильтр добавить который будет писать только от 'a'-'z' 'A'-'Z' '0'-'9' |
Неправильно задал вопрос, проблема немного в другом. В пакете текст и байты разделены на две "колонки" и ширина колонки с текстом вроде как всегда одна и если строка не помещается, она переносится на след. строку, то есть слово yandex например может там отобразиться и как
Код:
yaКод:
yanНу это ладно полбеды. Сейчас еще с одной проблемой столкнулся, пришел такой вот пакет (частично) Код:
8A 2A CE 71 4A 79 76 5A 30 4D D1 CB ED 74 77 BA *ÎqJyvZ0MÑËítwº |
ненене))) пакет может быть фрагментом че угодно - хоть картинки хоть хз. потому что вообще есть maximum transmission unit для лок сети который весит около полутра КБ. и если ты сгружаешь страницу - то получать ты будешь все пдоряд.
тыб хоть сорс привел, откуда я знаю как ты его парсишь) |
Цитата:
|
все прална .... идет анализ пожатого контента! Пожатый контент НИ ОДНИМ СНИФЕРОМ не просмотреть 8))) gzip жмет весь ФРАГМЕНТ и разжимает только ВЕСЬ .... а у тебя ПРИСМОТРИСЬ только часть .... фрагменты разбросаны в зависимости от MTU!
ТС откажись от этой затеи... |
Цитата:
|
потому что по видимому следит за потоком фрагментированных данных
возьми Wireshark и посмотри для примера как к тебе данные приходят. а еще лучше - сам wpdpack. Код:
// Open the adapterя повторюсь - но - все приходит фрагментами, если правильно хочш выстроить, следи за tcp syn/ack |
Кошмар, кошмаррр... я думал сложность сетевого анализа лишь в написании грамотного парсера, а оказываются еще пакеты фрагментированные идут не по порядку O_O. А как узнать фрагментирован ли пакет? и как их собрать ??? кошмарррр Ааааааа
|
да идет новичек по лесу .... думает ну через пеньки то я перепрыгну а тут фигак и лбом об столетний дуб!
:D ... нада на форуме спросить какой высоты пеньки бувают! :p |
| Время: 13:03 |