亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serverevent.pm

?? MSN fast change name is new utility 4 you
?? PM
?? 第 1 頁 / 共 2 頁
字號:
package Net::OICQ::ServerEvent;# $Id: ServerEvent.pm,v 1.8 2003/10/17 20:01:52 tans Exp $# Copyright (c) 2003 Shufeng Tan.  All rights reserved.# # This package is free software and is provided "as is" without express# or implied warranty.  It may be used, redistributed and/or modified# under the terms of the Perl Artistic License (see# http://www.perl.com/perl/misc/Artistic.html)use 5.006;use strict;use warnings;eval "no encoding; use bytes;" if $] >= 5.008;use Crypt::OICQ qw(encrypt decrypt);use Net::OICQ::Event;our @ISA = qw(Net::OICQ::Event);my @MsgPrecursors = ("\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01",		     "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01",		     "..\x00\x00\x00\x01\x01\x00.\x00\x01");my @AutoMsgPrecursors = ("\x00\x00\x00\x01\x00\x00\x00\x00\x02");# Separatorsmy $FS = $Net::OICQ::FS;   # Field separatormy $RS = $Net::OICQ::RS;   # Record separatormy $InfoHeader = \@Net::OICQ::InfoHeader;sub new {    my ($class, $packet, $oicq) = @_;    my $self = {        OICQ  => $oicq,        Header => substr($packet, 0, 7),    };    bless $self, $class;    my $cmdcode = $self->cmdcode;    my $cmd     = $self->cmd;    if ($cmd =~ /reg_new_id_/) {        $oicq->log_t("Cmd $cmd ($cmdcode):\n", $oicq->hexdump($packet));        return undef;    }    my $crypt = substr($packet, 7, -1);    my $plain;    if ($cmd eq 'login') {        eval { $plain = decrypt(undef, $crypt, $oicq->{PWKey}) };        $@ && $oicq->{Debug} && $oicq->log_t($@);        unless (defined $plain) {            eval { $plain = decrypt(undef, $crypt, $oicq->{RandKey}) };        }        $@ && $oicq->log_t($@);    } else {        eval { $plain = decrypt(undef, $crypt, $oicq->{Key}) };    }    return undef unless defined $plain;    $self->{Data} = $plain;    return $self;}# Default method for server datasub default {    my ($self) = @_;    my $oicq = $self->{OICQ};    my $ui = $oicq->{UI};    if (defined $ui) {        $ui->info("Server ack to ", $self->cmd, ": 0x",                  unpack('H*', $self->{Data}), "\n");    }    return unless $oicq->{Debug};    $oicq->log_t("Decryted data from server:\n", $oicq->hexdump($self->{Data}));}# Server replies with session keysub login {    my ($self) = @_;    my $oicq  = $self->{OICQ};    my $plain = $self->{Data};    if (length($plain) < 0x11) {   # Server did not return a session key        if (substr($plain, 0, 1) ne "\x01") {            $oicq->log_t("wrong passwd for $oicq->{Id}, hexdump:\n",                         $oicq->hexdump($plain));            return undef;        }        if (substr($plain, 1, 4) ne $oicq->{_Id}) {            $oicq->log_t("server reply to login request from ",                         unpack('L', substr($plain, 1, 4)), ":\n",                         $oicq->hexdump($plain));            return undef;        }        # Find new server address        $oicq->log_t("redirected to server $oicq->{SvrIP}:$oicq->{SvrPort}");        $oicq->{SvrPort} = unpack('n', substr($plain, 9, 2));        $oicq->{SvrIP} = join('.', map {ord} split('',  substr($plain, 5, 4)));        $oicq->{Socket} = undef;        $oicq->desect($plain,            ['H*', 'Flag', 0, 1],            ['N',  'uid',  1, 4],            ['H*', 'IP',   5, 4],            ['n',  'Port', 9, 2]);        return 0;    }    my $key = substr($plain, 1, 0x10);    $oicq->{Key} = $key;    $oicq->desect($plain,        ['H*', 'S_LOGIN', 0, 1],        ['H*', 'session key', 0x01, 0x10],        ['N',  'uid',     0x11, 0x04],        ['H*', 'S_LOGIN', 0x15, 0x0f],        ['H*', 'S_LOGIN', 0x24, 0x01],        ['H*', 'S_LOGIN', 0x25, 0x02],        ['H*', 'S_LOGIN', 0x27, 0x18],        ['H*', 'S_LOGIN', 0x3f, 0x0e],        ['H*', 'S_LOGIN', 0x4d, 0x20],        ['H*', 'S_LOGIN', 0x6d, 0x12],        ['H*', 'S_LOGIN', 0x7f]);    return 1;}sub logout {    my ($self) = @_;    my $oicq = $self->{OICQ};    $oicq->log("Impossible: logout packet from server?\n",               $oicq->hexdump($self->{Data}));    return;}# Server replies with user infosub get_user_info {    my ($self) = @_;    my $oicq = $self->{OICQ};    my $plain = $self->{Data};    my @field = split(/$FS/, $plain);    return unless defined $field[0];    return if $field[0] =~ /^-/;    $oicq->{MyInfo} = [@field] if $field[0] == $oicq->{Id};    $oicq->{Info}->{$field[0]} = {} unless defined $oicq->{Info}->{$field[0]};    my $hashref = $oicq->{Info}->{$field[0]};    $hashref->{Nickname} = $field[1];    $hashref->{Age}      = $field[7];    $hashref->{Sex}      = $field[8];    $hashref->{Face}     = $oicq->get_face($field[21]);    my $datfile = "$oicq->{Dir}/$oicq->{Id}/$field[0].dat";    my $dat = new FileHandle(">$datfile");    if (defined $dat) {        print $dat "\$_ = {\n";        for(my $j = 0; $j<=$#field; $j++) {            printf $dat "%-15s => '%s',\n", $InfoHeader->[$j], $field[$j];        }        print $dat "};\n";        $dat->close;        my $ui = $oicq->{UI};        if (defined $ui && defined $ui->{show_user_info}) {            $ui->show_user_info(\@field);            delete $ui->{show_user_info};        }    } else {        $oicq->log_t("Failed to open user info file >$datfile");    }    return 1;}# Server acksub send_msg {    my ($self) = @_;    my $oicq = $self->{OICQ};    my $plain = $self->{Data};    my $text = $plain eq "\0" ?                   "Message transmitted by server" :                   "Server ack to send_msg: 0x" . unpack('H*', $plain);    my $ui = $oicq->{UI};    if (defined $ui) {        $ui->info("$text\n");    }    if ($oicq->{Debug} or not defined $oicq->{UI}) {        $oicq->log_t($text);    }    return 1;}sub recv_msg {    my ($self) = @_;    my $oicq  = $self->{OICQ};    my $plain = $self->{Data};    my $srcid = unpack('N', substr($plain, 0, 4));    my $dstid = unpack('N', substr($plain, 4, 4));    defined $oicq->{Info}->{$srcid} or $oicq->{Info}->{$srcid} = {};    $oicq->{Info}->{$srcid}->{Client} = substr($plain, 0x14, 2);    if ($oicq->{Debug} > 1) {        print 'recv_msg data(8,14)=0x', unpack('H*', substr($plain, 8, 14)),              "\nMD5($dstid Key)=0x", unpack('H*', substr($plain, 30, 16)),              "\ndecrypted data:\n", $oicq->hexdump($plain), "\n";    }    return if length($plain) < 0x32;    my $time  = unpack('N', substr($plain, 0x32, 4));    my $mesg = $self->get_msg(substr($plain, 0x36));    my $ui = $oicq->{UI};    if (defined $ui) {        if (defined $mesg) {            $ui->msg($srcid, $dstid, $time, $mesg);        } else {            $ui->error("get_msg error logged, probably due to new MsgPrecursor\n");        }    }    if ($oicq->{Debug} or $oicq->{LogChat}) {        $oicq->log_t("Received message from $srcid:\n$mesg");    }    if (defined $oicq->{Socket} and defined $mesg) {        $oicq->ack_msg($plain);        my $chatbot = $oicq->{Info}->{$srcid}->{ChatBot};        (defined $chatbot && -f $chatbot) or $chatbot = $oicq->{ChatBot};        if (defined $chatbot && -f $chatbot) {            eval { require $chatbot; on_message($oicq, $srcid, $mesg) };            if ($@) {               $oicq->log_t("on_message error: $@");               defined $ui && $ui->error($@);            }        } else {            $self->check_autoreply($oicq, $srcid, $mesg);        }    }    $oicq->desect($plain,        ['N',  'srcid', 0x00, 4],        ['N',  'dstid', 0x04, 4],        ['H*', 'S_RMTS', 0x08, 0x0d],        ['N',  'srcid again', 0x16, 4],        ['N',  'dstid again', 0x1a, 4],        ['H*', 'S_RMTS', 0x1e, 0x23]);    return 1;}# Extract message from decrypted data using MsgPrecursorsub get_msg {    my ($self, $plain) = @_;    my $oicq = $self->{OICQ};    foreach my $precursor (@MsgPrecursors) {	if ($plain =~ /^$precursor(.*)$/s) {	    return $1;	}    }    foreach my $precursor (@AutoMsgPrecursors) {        if ($plain =~ /^$precursor(.*)$/s) {            return "Auto-Reply:\n" . $1;	}    }    $oicq->log("Unable to get message from data:\n", $oicq->hexdump($plain));    $plain =~ s/^(.{11})/'#'.unpack("H*", $1).'#'/se;    return $plain;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区精品欧美日韩一区二区三区 | 欧美美女激情18p| 综合在线观看色| 91欧美一区二区| 亚洲一区二区三区小说| 欧美欧美欧美欧美首页| 免费成人美女在线观看| 久久―日本道色综合久久| 国产一区二区在线电影| 中文字幕一区二区三区四区不卡 | 911精品国产一区二区在线| 久久精品国产精品亚洲综合| 久久精品在线观看| 97久久超碰国产精品| 亚洲国产精品久久艾草纯爱| 欧美一二三区精品| 懂色av一区二区三区蜜臀| 一区二区在线看| 日韩美女啊v在线免费观看| 最新高清无码专区| 日本亚洲最大的色成网站www| 激情国产一区二区| 色中色一区二区| 亚洲精品一区二区三区四区高清| 欧美高清在线一区| 日本午夜一本久久久综合| caoporn国产一区二区| 678五月天丁香亚洲综合网| 久久久精品国产免费观看同学| 国产精品成人网| 国产一区二区h| 日韩欧美精品在线| 中文一区在线播放 | 蜜臀av在线播放一区二区三区 | 日韩激情中文字幕| 国产精品电影一区二区| 美国欧美日韩国产在线播放| 国产精品久线观看视频| 99精品久久99久久久久| 国产成人综合网站| 亚洲欧洲日韩在线| 亚洲精品国产精品乱码不99| 91精品国产福利在线观看| 99久久精品国产导航| 久久99精品国产.久久久久久 | 亚洲精品免费在线观看| 日韩一级高清毛片| 亚洲伊人伊色伊影伊综合网| 色婷婷久久99综合精品jk白丝| 欧美国产在线观看| 成人黄色综合网站| 五月天激情综合| 欧美亚洲图片小说| 亚洲成人av电影| 国产精品久线观看视频| 亚洲天堂2014| 91成人在线观看喷潮| 国产99久久久久久免费看农村| 日本成人在线视频网站| 亚洲最色的网站| 亚洲欧美日韩精品久久久久| 国产日韩av一区| 国产午夜亚洲精品午夜鲁丝片| 日韩欧美在线影院| 91精品国产一区二区三区蜜臀| 欧美性色黄大片| 欧美在线影院一区二区| 91福利在线导航| 91国内精品野花午夜精品| 色一情一乱一乱一91av| 91美女福利视频| 97久久人人超碰| 色婷婷综合久久久| 91日韩一区二区三区| 91视频一区二区三区| 99综合影院在线| 91在线看国产| 色av成人天堂桃色av| 欧美专区在线观看一区| 欧美日韩综合在线| 337p亚洲精品色噜噜噜| 欧美一区二区福利视频| 欧美成人欧美edvon| 精品国产乱码久久久久久牛牛| 精品国产一区二区三区四区四| 欧美日韩一区不卡| 99re这里只有精品首页| 麻豆久久久久久| 亚洲精品福利视频网站| 中文字幕一区二区三区在线观看| 亚洲婷婷在线视频| 日韩视频免费观看高清完整版在线观看| 国产一区二区主播在线| 亚洲成人在线网站| 亚洲午夜电影在线观看| 亚洲一区二区成人在线观看| 久久国产成人午夜av影院| 国产精品久久毛片av大全日韩| 国产精品无遮挡| 亚洲一区二区在线视频| 青青青伊人色综合久久| 国产盗摄一区二区| 97久久精品人人做人人爽50路| 精品视频资源站| 欧美r级在线观看| 国产精品国产三级国产aⅴ无密码| 亚洲欧美视频在线观看| 日韩vs国产vs欧美| 国产91精品在线观看| 欧洲亚洲国产日韩| 欧美精品一区在线观看| 亚洲精品国产视频| 韩日欧美一区二区三区| 91热门视频在线观看| 欧美成人女星排名| 亚洲日本韩国一区| 久久精品国产精品青草| 99国产精品一区| 日韩一级免费观看| 亚洲精品成人精品456| 激情综合五月婷婷| 欧美在线看片a免费观看| 亚洲精品一区在线观看| 一区av在线播放| 国产成人免费视频精品含羞草妖精| 色婷婷av一区二区三区gif| 日韩久久免费av| 一区二区成人在线视频 | 欧美乱熟臀69xxxxxx| 国产情人综合久久777777| 午夜视频久久久久久| 99vv1com这只有精品| 2021中文字幕一区亚洲| 亚洲第一激情av| 91视频国产观看| 欧美激情资源网| 免费成人性网站| 欧美专区亚洲专区| 中文字幕一区二区三区视频| 国产一区二区视频在线| 91精品国产全国免费观看| 亚洲精品免费在线| 波多野结衣中文字幕一区| 久久网这里都是精品| 日韩电影免费在线看| 91久久线看在观草草青青| 国产精品久久久久婷婷| 国模一区二区三区白浆| 日韩欧美国产小视频| 婷婷国产在线综合| 在线观看视频一区二区| 中文字幕亚洲在| 成人激情综合网站| 51久久夜色精品国产麻豆| 色综合久久久久久久| 亚洲国产精品t66y| 国产乱人伦精品一区二区在线观看| 久久综合九色欧美综合狠狠| 久久99久久99| 欧美激情一区在线| 91精品国产91综合久久蜜臀| 亚洲成人动漫在线观看| 777午夜精品免费视频| 日本午夜一区二区| 国产亚洲自拍一区| 91国偷自产一区二区使用方法| 亚洲尤物视频在线| 日韩欧美综合一区| 久久这里只精品最新地址| 人人超碰91尤物精品国产| 欧美二区三区91| 亚洲成精国产精品女| 欧美日韩精品久久久| 视频一区视频二区中文| 毛片av一区二区| 亚洲激情自拍视频| 国产日韩欧美精品电影三级在线| 福利一区福利二区| 国产精品理论在线观看| av一区二区三区在线| 亚洲欧美自拍偷拍色图| 色综合久久久久久久久久久| 亚洲国产毛片aaaaa无费看| 欧美精品vⅰdeose4hd| 日本91福利区| 久久综合色婷婷| 大白屁股一区二区视频| 亚洲欧美日韩久久| 91精选在线观看| 国产一区二区在线免费观看| 国产精品乱人伦| 色婷婷综合久久久久中文一区二区 | 欧美视频精品在线| 美女在线一区二区| 久久久青草青青国产亚洲免观| 99re亚洲国产精品| 秋霞午夜鲁丝一区二区老狼| 久久免费午夜影院| 亚洲精品福利视频网站| 青青草国产成人99久久|