>[оверквотинг удален]
>>
>>Подробная инструкция на русском по установке и настройке aimsniff с веб интерфейсом
>>и поддержкой юникод. Гугль рулит :)
>
>Хорошая статья. Все разложено по поволчкам. Все работает спасибо.
>НО эта штука ловит только сообщения отправленные с квипа, а если юзер
>использует аську встроенную в мейл агента то icqsniff ничего не ловит.
>
>Кто нить решил данную проблему? В каком кодировке шлет сообщения мейл агент?
>Меняем чать кода, а именно целиком функцию convertHex на то, что указано ниже.
Не очень красиво, но работает для ловли аськи 6.5 и прочих, которые показывают кракозябры в оригинальном скрипте.
Табличку взял с http://www.samag.ru/forum/index.php/topic,177.0.html
Желающие думаю разбирутся, что я чуток поменял и сделают красивше...
Мэйл агент , вроде как отсылает сообщения через свой прокси, а через 5190 только принимает...
-----------------
#added this function to convert hex to string for me
sub convertHex{
my($value)=@_;
my $tmpval = "";
my $utfstr = "";
my $incr="";
my $bit="";
my $msg="";
my $nextbit="";
my $prevbit="";
# Get rid of unicode
if ($value=~/^0.*/){
for($incr=0;$incr<length($value);$incr+=4){
$bit=substr($value,$incr,4);
$nextbit=substr($value,$incr+4,4);
$prevbit=substr($value,$incr-4,4);
if (($bit=~/^04.*/)&&(($bit=~/^04.*/)||($prevbit=~/^04.*/))) {
if ($bit eq "0410") { $tmpval.=chr(0xC0); } # CYRILLIC CAPITAL LETTER A
elsif ($bit eq "0411") { $tmpval.=chr(0xC1); } # CYRILLIC CAPITAL LETTER BE
elsif ($bit eq "0412") { $tmpval.=chr(0xC2); } # CYRILLIC CAPITAL LETTER VE
elsif ($bit eq "0413") { $tmpval.=chr(0xC3); } # CYRILLIC CAPITAL LETTER GHE
elsif ($bit eq "0414") { $tmpval.=chr(0xC4); } # CYRILLIC CAPITAL LETTER DE
elsif ($bit eq "0415") { $tmpval.=chr(0xC5); } # CYRILLIC CAPITAL LETTER IE
elsif ($bit eq "0401") { $tmpval.=chr(0xA8); } # CYRILLIC CAPITAL LETTER IO
elsif ($bit eq "0416") { $tmpval.=chr(0xC6); } # CYRILLIC CAPITAL LETTER ZHE
elsif ($bit eq "0417") { $tmpval.=chr(0xC7); } # CYRILLIC CAPITAL LETTER ZE
elsif ($bit eq "0418") { $tmpval.=chr(0xC8); } # CYRILLIC CAPITAL LETTER I
elsif ($bit eq "0419") { $tmpval.=chr(0xC9); } # CYRILLIC CAPITAL LETTER SHORT I
elsif ($bit eq "041a") { $tmpval.=chr(0xCA); } # CYRILLIC CAPITAL LETTER K
elsif ($bit eq "041b") { $tmpval.=chr(0xCB); } # CYRILLIC CAPITAL LETTER L
elsif ($bit eq "041c") { $tmpval.=chr(0xCC); } # CYRILLIC CAPITAL LETTER M
elsif ($bit eq "041d") { $tmpval.=chr(0xCD); } # CYRILLIC CAPITAL LETTER N
elsif ($bit eq "041e") { $tmpval.=chr(0xCE); } # CYRILLIC CAPITAL LETTER O
elsif ($bit eq "041f") { $tmpval.=chr(0xCF); } # CYRILLIC CAPITAL LETTER P
elsif ($bit eq "0420") { $tmpval.=chr(0xD0); } # CYRILLIC CAPITAL LETTER R
elsif ($bit eq "0421") { $tmpval.=chr(0xD1); } # CYRILLIC CAPITAL LETTER S
elsif ($bit eq "0422") { $tmpval.=chr(0xD2); } # CYRILLIC CAPITAL LETTER T
elsif ($bit eq "0423") { $tmpval.=chr(0xD3); } # CYRILLIC CAPITAL LETTER U
elsif ($bit eq "0424") { $tmpval.=chr(0xD4); } # CYRILLIC CAPITAL LETTER F
elsif ($bit eq "0425") { $tmpval.=chr(0xD5); } # CYRILLIC CAPITAL LETTER HA
elsif ($bit eq "0426") { $tmpval.=chr(0xD6); } # CYRILLIC CAPITAL LETTER TSE
elsif ($bit eq "0427") { $tmpval.=chr(0xD7); } # CYRILLIC CAPITAL LETTER CHE
elsif ($bit eq "0428") { $tmpval.=chr(0xD8); } # CYRILLIC CAPITAL LETTER SHA
elsif ($bit eq "0429") { $tmpval.=chr(0xD9); } # CYRILLIC CAPITAL LETTER SHCHA
elsif ($bit eq "042a") { $tmpval.=chr(0xDA); } # CYRILLIC CAPITAL LETTER HARD SIG
elsif ($bit eq "042b") { $tmpval.=chr(0xDB); } # CYRILLIC CAPITAL LETTER YERU
elsif ($bit eq "042c") { $tmpval.=chr(0xDC); } # CYRILLIC CAPITAL LETTER SOFT SIG
elsif ($bit eq "042d") { $tmpval.=chr(0xDD); } # CYRILLIC CAPITAL LETTER E
elsif ($bit eq "042e") { $tmpval.=chr(0xDE); } # CYRILLIC CAPITAL LETTER YU
elsif ($bit eq "042f") { $tmpval.=chr(0xDF); } # CYRILLIC CAPITAL LETTER YA
elsif ($bit eq "0430") { $tmpval.=chr(0xE0); } # CYRILLIC SMALL LETTER A
elsif ($bit eq "0431") { $tmpval.=chr(0xE1); } # CYRILLIC SMALL LETTER BE
elsif ($bit eq "0432") { $tmpval.=chr(0xE2); } # CYRILLIC SMALL LETTER VE
elsif ($bit eq "0433") { $tmpval.=chr(0xE3); } # CYRILLIC SMALL LETTER GHE
elsif ($bit eq "0434") { $tmpval.=chr(0xE4); } # CYRILLIC SMALL LETTER DE
elsif ($bit eq "0435") { $tmpval.=chr(0xE5); } # CYRILLIC SMALL LETTER IE
elsif ($bit eq "0451") { $tmpval.=chr(0xB8); } # CYRILLIC SMALL LETTER IO
elsif ($bit eq "0436") { $tmpval.=chr(0xE6); } # CYRILLIC SMALL LETTER ZHE
elsif ($bit eq "0437") { $tmpval.=chr(0xE7); } # CYRILLIC SMALL LETTER ZE
elsif ($bit eq "0438") { $tmpval.=chr(0xE8); } # CYRILLIC SMALL LETTER I
elsif ($bit eq "0439") { $tmpval.=chr(0xE9); } # CYRILLIC SMALL LETTER SHORT I
elsif ($bit eq "043a") { $tmpval.=chr(0xEA); } # CYRILLIC SMALL LETTER K
elsif ($bit eq "043b") { $tmpval.=chr(0xEB); } # CYRILLIC SMALL LETTER L
elsif ($bit eq "043c") { $tmpval.=chr(0xEC); } # CYRILLIC SMALL LETTER M
elsif ($bit eq "043d") { $tmpval.=chr(0xED); } # CYRILLIC SMALL LETTER N
elsif ($bit eq "043e") { $tmpval.=chr(0xEE); } # CYRILLIC SMALL LETTER O
elsif ($bit eq "043f") { $tmpval.=chr(0xEF); } # CYRILLIC SMALL LETTER PE
elsif ($bit eq "0440") { $tmpval.=chr(0xF0); } # CYRILLIC SMALL LETTER ER
elsif ($bit eq "0441") { $tmpval.=chr(0xF1); } # CYRILLIC SMALL LETTER ES
elsif ($bit eq "0442") { $tmpval.=chr(0xF2); } # CYRILLIC SMALL LETTER TE
elsif ($bit eq "0443") { $tmpval.=chr(0xF3); } # CYRILLIC SMALL LETTER U
elsif ($bit eq "0444") { $tmpval.=chr(0xF4); } # CYRILLIC SMALL LETTER EF
elsif ($bit eq "0445") { $tmpval.=chr(0xF5); } # CYRILLIC SMALL LETTER HA
elsif ($bit eq "0446") { $tmpval.=chr(0xF6); } # CYRILLIC SMALL LETTER TSE
elsif ($bit eq "0447") { $tmpval.=chr(0xF7); } # CYRILLIC SMALL LETTER CHE
elsif ($bit eq "0448") { $tmpval.=chr(0xF8); } # CYRILLIC SMALL LETTER SHA
elsif ($bit eq "0449") { $tmpval.=chr(0xF9); } # CYRILLIC SMALL LETTER SHCHA
elsif ($bit eq "044a") { $tmpval.=chr(0xFA); } # CYRILLIC SMALL LETTER HARD SIGN
elsif ($bit eq "044b") { $tmpval.=chr(0xFB); } # CYRILLIC SMALL LETTER YERU
elsif ($bit eq "044c") { $tmpval.=chr(0xFC); } # CYRILLIC SMALL LETTER SOFT SIGN
elsif ($bit eq "044d") { $tmpval.=chr(0xFD); } # CYRILLIC SMALL LETTER E
elsif ($bit eq "044e") { $tmpval.=chr(0xFE); } # CYRILLIC SMALL LETTER YU
elsif ($bit eq "044f") { $tmpval.=chr(0xFF); } # CYRILLIC SMALL LETTER YA
else { $bit=~s/^04//;
$tmpval.=chr(176+hex($bit)); }
}
else { $bit=~s/^..//;
$tmpval.=chr(hex($bit));
}
}
$tmpval=$tmpval." UTF8my";
return $tmpval;
}
my $cp1251 = Unicode::Map8->new("cp1251");
# make an UTF string
for($incr=0;$incr<length($value);$incr+=2){
$bit=substr($value,$incr,2);
$utfstr.=chr(hex($bit));
}
# if ($value=~/^0.*/){
if ($value=~/^0[^0].*/){
# Possibly UTF-16 (UCS-2)
$tmpval = $cp1251->to8($utfstr);
$tmpval=$tmpval." UTF-16";
return $tmpval;
} elsif ((($value=~/^(..)*d1..d1/) or ($value=~/^(..)*d0..d0/)) and ($value!~/^0003.*/)) {
# Possibly UTF-8
$tmpval = $cp1251->to8(utf8($utfstr)->utf16);
$tmpval=$tmpval." UTF-8";
return $tmpval;
}
for($incr=0;$incr<length($value);$incr+=2){
$bit=substr($value,$incr,2);
#Only print printable characters, duh! should have been done a long time ago
if(hex($bit)>=32 && hex($bit)<=255){
$msg.=chr(hex($bit));
}
}
return $msg;
}