📄 icq.java
字号:
{ caps |= CAPF_IM2; } else if (Util.byteArrayEquals(capabilities, offset, CAP_MACICQ, 0, 16)) { caps |= CAPF_MACICQ; } else if (Util.byteArrayEquals(capabilities, offset, CAP_RICHTEXT, 0, 16)) { caps |= CAPF_RICHTEXT; } else if (Util.byteArrayEquals(capabilities, offset, CAP_IS2001, 0, 16)) { caps |= CAPF_IS2001; } else if (Util.byteArrayEquals(capabilities, offset, CAP_IS2002, 0, 16)) { caps |= CAPF_IS2002; } else if (Util.byteArrayEquals(capabilities, offset, CAP_STR20012, 0, 16)) { caps |= CAPF_STR20012; } else if (Util.byteArrayEquals(capabilities, offset, CAP_AIMICON, 0, 16)) { caps |= CAPF_AIMICON; } else if (Util.byteArrayEquals(capabilities, offset, CAP_AIMCHAT, 0, 16)) { caps |= CAPF_AIMCHAT; } else if (Util.byteArrayEquals(capabilities, offset, CAP_UIM, 0, 16)) { caps |= CAPF_UIM; } else if (Util.byteArrayEquals(capabilities, offset, CAP_RAMBLER, 0, 16)) { caps |= CAPF_RAMBLER; } else if (Util.byteArrayEquals(capabilities, offset, CAP_ABV, 0, 16)) { caps |= CAPF_ABV; } else if (Util.byteArrayEquals(capabilities, offset, CAP_NETVIGATOR, 0, 16)) { caps |= CAPF_NETVIGATOR; } else if (Util.byteArrayEquals(capabilities, offset, CAP_XTRAZ, 0, 16)) { caps |= CAPF_XTRAZ; } else if (Util.byteArrayEquals(capabilities, offset, CAP_AIMFILE, 0, 16)) { caps |= CAPF_AIMFILE; } else if (Util.byteArrayEquals(capabilities, offset, CAP_JIMM, 0, 5)) { caps |= CAPF_JIMM; szVersion = detectClientVersion(capabilities, CLI_JIMM, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_QUTIM, 0, CAP_QUTIM.length)) { caps |= CAPF_QUTIM; szVersion = detectClientVersion(capabilities, CLI_QUTIM, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_SMAPER, 0, CAP_SMAPER.length)) { caps |= CAPF_SMAPER; szVersion = detectClientVersion(capabilities, CLI_SMAPER, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_JIMM_DICHAT, 0, CAP_JIMM_DICHAT.length)) { caps |= CAPF_JIMM_DICHAT; szVersion = detectClientVersion(capabilities, CLI_JIMM_DICHAT, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_AIMIMIMAGE, 0, 16)) caps |= CAPF_AIMIMIMAGE; else if (Util.byteArrayEquals(capabilities, offset, CAP_AVATAR, 0, 16)) caps |= CAPF_AVATAR; else if (Util.byteArrayEquals(capabilities, offset, CAP_DIRECT, 0, 16)) caps |= CAPF_DIRECT; else if (Util.byteArrayEquals(capabilities, offset, CAP_TYPING, 0, 16)) caps |= CAPF_TYPING; else if (Util.byteArrayEquals(capabilities, offset, CAP_MCHAT, 0, 9)) { caps |= CAPF_MCHAT; szVersion = detectClientVersion(capabilities, CLI_MCHAT, j); } else if (Util.byteArrayEquals(capabilities, offset, CAP_QIPINFIUM, 0, 16)) { caps |= CAPF_QIPINFIUM; }// else if (Util.byteArrayEquals(capabilities, j16, CAP_AUDIO, 0, 16))// {// caps |= CAPF_AUDIO;// }// else if (Util.byteArrayEquals(capabilities, j16, CAP_VIDEO, 0, 16))// {// caps |= CAPF_VIDEO;// } else if (Util.byteArrayEquals(capabilities, offset, CAP_HTMLMESSAGES, 0, 16)) { caps |= CAPF_HTMLMESSAGES; }// else if (Util.byteArrayEquals(capabilities, j16, CAP_XMultiUserChat, 0, 16))// {// caps |= CAPF_XMultiUserChat;// }// else if (Util.byteArrayEquals(capabilities, j16, CAP_XtZers, 0, 16))// {// caps |= CAPF_XtZers;// } else if (Util.byteArrayEquals(capabilities, offset, CAP_IsICQLITE, 0, 16)) { caps |= CAPF_IsICQLITE; } else if (Util.byteArrayEquals(capabilities, offset, CAP_IMPLUS, 0, 16)) { caps |= CAPF_IMPLUS; } } } //Client detection //If this is status change we don`t need to detect client... if (!statusChange) { switch (1) { default: if ((caps & CAPF_IMPLUS) != 0) { client = CLI_IMPLUS; if ((dwFP1 & 0xFFFFFFF0) == 0x494D2B00) { switch (dwFP1 & 0xFF) { case 0x03: //SmartPhone, Pocket PC szVersion += "(SmartPhone, Pocket PC)"; break; case 0x05: //Win32 szVersion += "(Win32)"; break; } } break; } if ((caps & CAPF_QUTIM) != 0) { client = CLI_QUTIM; break; } if ((caps & CAPF_SMAPER) != 0) { client = CLI_SMAPER; break; } if ((caps & CAPF_JIMM_DICHAT) != 0) { client = CLI_JIMM_DICHAT; break; } if ((caps & CAPF_QIPINFIUM) != 0) { client = CLI_QIPINFIUM; szVersion += "(" + dwFP1 + ")" + ((dwFP2 == 0xB) ? " Beta" : ""); break; } if ((caps & CAPF_QIPPDASYM) != 0) { client = CLI_QIPPDASYM; break; } if ((caps & CAPF_QIPPDAWIN) != 0) { client = CLI_QIPPDAWIN; break; } if ((caps & CAPF_MCHAT) != 0) { client = CLI_MCHAT; break; } if ((caps & CAPF_JIMM) != 0) { client = CLI_JIMM; break; } if ((caps & CAPF_QIP) != 0) { client = CLI_QIP; if (((dwFP1 >> 24) & 0xFF) != 0) szVersion += " (" + ((dwFP1 >> 24) & 0xFF) + ((dwFP1 >> 16) & 0xFF) + ((dwFP1 >> 8) & 0xFF) + (dwFP1 & 0xFF) + ")"; break; } if (((caps & (CAPF_TRILLIAN + CAPF_TRILCRYPT)) != 0) && (dwFP1 == 0x3b75ac09)) { client = CLI_TRILLIAN; break; } if (((caps & CAPF_IM2) != 0) && (dwFP1 == 0x3FF19BEB)) { client = CLI_IM2; break; } if ((caps & (CAPF_SIM + CAPF_SIMOLD)) != 0) { client = CLI_SIM; break; } if ((caps & CAPF_KOPETE) != 0) { client = CLI_KOPETE; break; } if ((caps & CAPF_LICQ) != 0) { client = CLI_LICQ; break; } if (((caps & CAPF_AIMICON) != 0) && ((caps & CAPF_AIMFILE) != 0) && ((caps & CAPF_AIMIMIMAGE) != 0)) { client = CLI_GAIM; break; } if ((caps & CAPF_UTF8_INTERNAL) != 0) { switch (wVersion) { case 10: if (((caps & CAPF_TYPING) != 0) && ((caps & CAPF_RICHTEXT) != 0)) { client = CLI_ICQ2003B; } case 7: if (((caps & CAPF_AIM_SERVERRELAY) == 0) && ((caps & CAPF_DIRECT) == 0) && (dwFP1 == 0) && (dwFP2 == 0) && (dwFP3 == 0)) { client = CLI_ICQ2GO; } break; default: if ((dwFP1 == 0) && (dwFP2 == 0) && (dwFP3 == 0)) { if ((caps & CAPF_RICHTEXT) != 0) { client = CLI_ICQLITE; if (((caps & CAPF_AVATAR) != 0) && ((caps & CAPF_XTRAZ) != 0)) { if ((caps & CAPF_AIMFILE) != 0) // TODO: add more client = CLI_ICQLITE5; else client = CLI_ICQLITE4; } } else if (((caps & CAPF_IsICQLITE) != 0) && ((caps & CAPF_HTMLMESSAGES) != 0)) { client = CLI_ICQ6; } else if ((caps & CAPF_UIM) != 0) client = CLI_UIM; else client = CLI_AGILE; } break; } if (client != CLI_NONE) break; } if ((caps & CAPF_MACICQ) != 0) { client = CLI_MACICQ; break; } if (((caps & CAPF_AIMCHAT) != 0) && ((caps & CAPF_IsICQLITE) == 0)) { client = CLI_AIM; break; } if ((dwFP1 & 0xFF7F0000) == 0x7D000000) { client = CLI_LICQ; int ver = dwFP1 & 0xFFFF; if (ver % 10 != 0) { szVersion = ver / 1000 + "." + (ver / 10) % 100 + "." + ver % 10; } else { szVersion = ver / 1000 + "." + (ver / 10) % 100; } break; } switch (dwFP1) { case 0x7FFFFFFF: if ((caps & CAPF_MIRANDAIM) != 0) { client = CLI_MIRANDA; szVersion = "IM: " + szVersion + " ICQ: " +((dwFP2 >> 24) & 0x7F) + "." + ((dwFP2 >> 16) & 0xFF) + "." + ((dwFP2 >> 8) & 0xFF) + "." + (dwFP2 & 0xFF); } break; case 0xFFFFFFFF: if ((dwFP3 == 0xFFFFFFFF) && (dwFP2 == 0xFFFFFFFF)) { client = CLI_GAIM; break; } if ((dwFP2 == 0) && (dwFP3 != 0xFFFFFFFF)) { if (wVersion == 7) { client = CLI_WEBICQ; break; } if ((dwFP3 == 0x3B7248ED) && ((caps & CAPF_UTF8_INTERNAL) == 0) && ((caps & CAPF_RICHTEXT) == 0)) { client = CLI_SPAM; break; } } client = CLI_MIRANDA; szVersion = ((dwFP2 >> 24) & 0x7F) + "." + ((dwFP2 >> 16) & 0xFF) + "." + ((dwFP2 >> 8) & 0xFF) + "." + (dwFP2 & 0xFF); break; case 0xFFFFFFFE: if (dwFP3 == dwFP1) { client = CLI_JIMM; } break; case 0xFFFFFF8F: client = CLI_STRICQ; break; case 0xFFFFFF42: client = CLI_MICQ; break; case 0xFFFFFFBE: client = CLI_ALICQ; break; case 0xFFFFFF7F: client = CLI_ANDRQ; szVersion = ((dwFP2 >> 24) & 0xFF) + "." + ((dwFP2 >> 16) & 0xFF) + "." + ((dwFP2 >> 8) & 0xFF) + "." + (dwFP2 & 0xFF); break; case 0xFFFFFFAB: client = CLI_YSM; break; case 0x04031980: client = CLI_VICQ; break; case 0x3AA773EE: if ((dwFP2 == 0x3AA66380) && (dwFP3 == 0x3A877A42)) { if (wVersion == 7) { if (((caps & CAPF_AIM_SERVERRELAY) != 0) && ((caps & CAPF_DIRECT) != 0)) { if ((caps & CAPF_RICHTEXT) != 0) { client = CLI_CENTERICQ; break; } client = CLI_LIBICQJABBER; } } client = CLI_LIBICQ2000; } break; case 0x3b75ac09: client = CLI_TRILLIAN; break; case 0x3BA8DBAF: // FP2: 0x3BEB5373; FP3: 0x3BEB5262; if (wVersion == 2) client = CLI_STICQ; break; case 0x3FF19BEB: if ((wVersion == 8) && (dwFP1 == dwFP3)) //FP2: 0x3FEC05EB; FP3: 0x3FF19BEB; client = CLI_IM2; break; case 0x4201F414: if (((dwFP2 & dwFP3) == dwFP1) && (wVersion == 8)) client = CLI_SPAM; break; case 0xFFFFF666: client = CLI_RANDQ; szVersion = Integer.toString(dwFP2); break; } if (client != CLI_NONE) break; if ((dwFP1 != 0) && (dwFP1 == dwFP3) && (dwFP3 == dwFP2) && (caps == 0)) { client = CLI_VICQ; break; } if (((caps & CAPF_AIM_SERVERRELAY) != 0) && ((caps & CAPF_DIRECT) != 0) && ((caps & CAPF_UTF8_INTERNAL) != 0) && ((caps & CAPF_RICHTEXT) != 0))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -