01-26-2013, 03:18 PM
C# разработчики ваще лютая армия. Сейчас допишу коммент и пойду писать на C# для iOS
Lame Guard Кликер
|
01-26-2013, 03:18 PM
C# разработчики ваще лютая армия. Сейчас допишу коммент и пойду писать на C# для iOS
01-26-2013, 03:34 PM
На MaxCheaters почти всегда говно толкает, форум чем то похож на ксла2.
Такая защита просто бред.
01-26-2013, 03:35 PM
Борьба с ботами , это погоня за призраком. Проблемы должны решатся на уровне экономике сервера , а цены на предметы формируют сами игроки(по этому там и нет ГМ шопа). Проблемы хаков , багов решаются на уровне сервера.
Я писал и капчи и защиты , опыт говорит только об одном - все это х*я Ну и под конец выложу алгоритм генерации капчи, не требует ни каких картинок встраивать в клиент , передается как клановый значек , работает безотказно. Код
package l2.gameserver.utils;
import l2.commons.util.Rnd; /** * Генератор капчи и обвязка на 4 символа в формате DDS DXT1 (16x64x2) для передачи как клановы значек. * @author izen * */ public class CapchaUtil { private static final String alphabet = "WJFZNYSGVRU57912"; private static final int crc24tab[] = { 0x00000000, 0x00800063, 0x008000A5, 0x000000C6, 0x00800129, 0x0000014A, 0x0000018C, 0x008001EF, 0x00800231, 0x00000252, 0x00000294, 0x008002F7, 0x00000318, 0x0080037B, 0x008003BD, 0x000003DE, 0x00800401, 0x00000462, 0x000004A4, 0x008004C7, 0x00000528, 0x0080054B, 0x0080058D, 0x000005EE, 0x00000630, 0x00800653, 0x00800695, 0x000006F6, 0x00800719, 0x0000077A, 0x000007BC, 0x008007DF, 0x00800861, 0x00000802, 0x000008C4, 0x008008A7, 0x00000948, 0x0080092B, 0x008009ED, 0x0000098E, 0x00000A50, 0x00800A33, 0x00800AF5, 0x00000A96, 0x00800B79, 0x00000B1A, 0x00000BDC, 0x00800BBF, 0x00000C60, 0x00800C03, 0x00800CC5, 0x00000CA6, 0x00800D49, 0x00000D2A, 0x00000DEC, 0x00800D8F, 0x00800E51, 0x00000E32, 0x00000EF4, 0x00800E97, 0x00000F78, 0x00800F1B, 0x00800FDD, 0x00000FBE, 0x008010A1, 0x000010C2, 0x00001004, 0x00801067, 0x00001188, 0x008011EB, 0x0080112D, 0x0000114E, 0x00001290, 0x008012F3, 0x00801235, 0x00001256, 0x008013B9, 0x000013DA, 0x0000131C, 0x0080137F, 0x000014A0, 0x008014C3, 0x00801405, 0x00001466, 0x00801589, 0x000015EA, 0x0000152C, 0x0080154F, 0x00801691, 0x000016F2, 0x00001634, 0x00801657, 0x000017B8, 0x008017DB, 0x0080171D, 0x0000177E, 0x000018C0, 0x008018A3, 0x00801865, 0x00001806, 0x008019E9, 0x0000198A, 0x0000194C, 0x0080192F, 0x00801AF1, 0x00001A92, 0x00001A54, 0x00801A37, 0x00001BD8, 0x00801BBB, 0x00801B7D, 0x00001B1E, 0x00801CC1, 0x00001CA2, 0x00001C64, 0x00801C07, 0x00001DE8, 0x00801D8B, 0x00801D4D, 0x00001D2E, 0x00001EF0, 0x00801E93, 0x00801E55, 0x00001E36, 0x00801FD9, 0x00001FBA, 0x00001F7C, 0x00801F1F, 0x00802121, 0x00002142, 0x00002184, 0x008021E7, 0x00002008, 0x0080206B, 0x008020AD, 0x000020CE, 0x00002310, 0x00802373, 0x008023B5, 0x000023D6, 0x00802239, 0x0000225A, 0x0000229C, 0x008022FF, 0x00002520, 0x00802543, 0x00802585, 0x000025E6, 0x00802409, 0x0000246A, 0x000024AC, 0x008024CF, 0x00802711, 0x00002772, 0x000027B4, 0x008027D7, 0x00002638, 0x0080265B, 0x0080269D, 0x000026FE, 0x00002940, 0x00802923, 0x008029E5, 0x00002986, 0x00802869, 0x0000280A, 0x000028CC, 0x008028AF, 0x00802B71, 0x00002B12, 0x00002BD4, 0x00802BB7, 0x00002A58, 0x00802A3B, 0x00802AFD, 0x00002A9E, 0x00802D41, 0x00002D22, 0x00002DE4, 0x00802D87, 0x00002C68, 0x00802C0B, 0x00802CCD, 0x00002CAE, 0x00002F70, 0x00802F13, 0x00802FD5, 0x00002FB6, 0x00802E59, 0x00002E3A, 0x00002EFC, 0x00802E9F, 0x00003180, 0x008031E3, 0x00803125, 0x00003146, 0x008030A9, 0x000030CA, 0x0000300C, 0x0080306F, 0x008033B1, 0x000033D2, 0x00003314, 0x00803377, 0x00003298, 0x008032FB, 0x0080323D, 0x0000325E, 0x00803581, 0x000035E2, 0x00003524, 0x00803547, 0x000034A8, 0x008034CB, 0x0080340D, 0x0000346E, 0x000037B0, 0x008037D3, 0x00803715, 0x00003776, 0x00803699, 0x000036FA, 0x0000363C, 0x0080365F, 0x008039E1, 0x00003982, 0x00003944, 0x00803927, 0x000038C8, 0x008038AB, 0x0080386D, 0x0000380E, 0x00003BD0, 0x00803BB3, 0x00803B75, 0x00003B16, 0x00803AF9, 0x00003A9A, 0x00003A5C, 0x00803A3F, 0x00003DE0, 0x00803D83, 0x00803D45, 0x00003D26, 0x00803CC9, 0x00003CAA, 0x00003C6C, 0x00803C0F, 0x00803FD1, 0x00003FB2, 0x00003F74, 0x00803F17, 0x00003EF8, 0x00803E9B, 0x00803E5D, 0x00003E3E, }; private static final long[][][] glyphs = { // System { { // 0: 'W' 0x0000000000000C60L, 0x0C600C600D600D60L, 0x0D6006C006C006C0L, 0x0000000000000000L }, { // 1: 'J' 0x0000000000000060L, 0x0060006000600060L, 0x00600660066003C0L, 0x0000000000000000L }, { // 2: 'F' 0x00000000000007E0L, 0x06000600060007C0L, 0x0600060006000600L, 0x0000000000000000L }, { // 3: 'Z' 0x00000000000007E0L, 0x0060006000C00180L, 0x03000600060007E0L, 0x0000000000000000L }, { // 4: 'N' 0x0000000000000630L, 0x0630073007B006F0L, 0x0670063006300630L, 0x0000000000000000L }, { // 5: 'Y' 0x0000000000000660L, 0x06600660066003C0L, 0x0180018001800180L, 0x0000000000000000L }, { // 6: 'S' 0x00000000000003C0L, 0x0660060003000180L, 0x00C00060066003C0L, 0x0000000000000000L }, { // 7: 'G' 0x00000000000003C0L, 0x0660066006000600L, 0x06E00660066003E0L, 0x0000000000000000L }, { // 8: 'V' 0x0000000000000660L, 0x0660066006600660L, 0x0660066003C00180L, 0x0000000000000000L }, { // 9: 'R' 0x00000000000007C0L, 0x06600660066007C0L, 0x06C0066006600660L, 0x0000000000000000L }, { // 10: 'U' 0x0000000000000660L, 0x0660066006600660L, 0x06600660066003C0L, 0x0000000000000000L }, { // 11: '5' 0x00000000000007E0L, 0x06000600060007C0L, 0x0060006000C00780L, 0x0000000000000000L }, { // 12: '7' 0x00000000000007E0L, 0x006000C000C00180L, 0x0180030003000300L, 0x0000000000000000L }, { // 13: '9' 0x00000000000003C0L, 0x0660066006600660L, 0x03E000C001800380L, 0x0000000000000000L }, { // 14: '1' 0x00000000000000C0L, 0x01C007C000C000C0L, 0x00C000C000C000C0L, 0x0000000000000000L }, { // 15: '2' 0x00000000000003C0L, 0x06600660006000C0L, 0x01800300060007E0L, 0x0000000000000000L }, }, // Tahoma { { // 0: 'W' 0x0000000061866186L, 0x618663C633CC33CCL, 0x366C366C1C381C38L, 0x1C38000000000000L }, { // 1: 'J' 0x0000000003F00030L, 0x0030003000300030L, 0x0030003000300060L, 0x07C0000000000000L }, { // 2: 'F' 0x0000000007F80600L, 0x06000600060007F8L, 0x0600060006000600L, 0x0600000000000000L }, { // 3: 'Z' 0x000000000FF00030L, 0x006000C000C00180L, 0x0300030006000C00L, 0x0FF0000000000000L }, { // 4: 'N' 0x0000000018041C04L, 0x1E041704138411C4L, 0x10E41074103C101CL, 0x100C000000000000L }, { // 5: 'Y' 0x0000000018181818L, 0x0C300C30066003C0L, 0x03C0018001800180L, 0x0180000000000000L }, { // 6: 'S' 0x0000000003F00618L, 0x0C180C000F8007F0L, 0x007800180C180C30L, 0x07E0000000000000L }, { // 7: 'G' 0x0000000003F00E18L, 0x0C181800180018F8L, 0x181818180C180E18L, 0x03F0000000000000L }, { // 8: 'V' 0x0000000018301830L, 0x18300C600C600C60L, 0x06C006C006C00380L, 0x0380000000000000L }, { // 9: 'R' 0x000000000FE00C30L, 0x0C300C300C300C60L, 0x0FC00C600C300C18L, 0x0C0C000000000000L }, { // 10: 'U' 0x0000000018181818L, 0x1818181818181818L, 0x1818181818180C30L, 0x07E0000000000000L }, { // 11: '5' 0x0000000007F80600L, 0x0600060007E00030L, 0x001800180C180C30L, 0x07E0000000000000L }, { // 12: '7' 0x000000000FF80030L, 0x00300060006000C0L, 0x00C0018001800300L, 0x0300000000000000L }, { // 13: '9' 0x0000000003E00630L, 0x0C180C180C180618L, 0x03F8001800300060L, 0x07C0000000000000L }, { // 14: '1' 0x0000000001800780L, 0x0180018001800180L, 0x0180018001800180L, 0x07E0000000000000L }, { // 15: '2' 0x0000000007E00C30L, 0x0C18001800180030L, 0x006001C003000600L, 0x0FF8000000000000L }, }, // Verdana { { // 0: 'W' 0x000000000000318CL, 0x318C318C19981BD8L, 0x1A580E700C300C30L, 0x0000000000000000L }, { // 1: 'J' 0x00000000000003E0L, 0x0060006000600060L, 0x00600060006007C0L, 0x0000000000000000L }, { // 2: 'F' 0x00000000000007E0L, 0x06000600060007C0L, 0x0600060006000600L, 0x0000000000000000L }, { // 3: 'Z' 0x00000000000007E0L, 0x00C000C001800180L, 0x03000300060007E0L, 0x0000000000000000L }, { // 4: 'N' 0x0000000000000C10L, 0x0E100B100B100990L, 0x08D008D008700830L, 0x0000000000000000L }, { // 5: 'Y' 0x0000000000000C30L, 0x0C30066003C00180L, 0x0180018001800180L, 0x0000000000000000L }, { // 6: 'S' 0x00000000000007C0L, 0x0C200C000E0007C0L, 0x00E00060086007C0L, 0x0000000000000000L }, { // 7: 'G' 0x00000000000003E0L, 0x06100C000C000C00L, 0x0CF00C30063003F0L, 0x0000000000000000L }, { // 8: 'V' 0x0000000000000C60L, 0x0C600C6006C006C0L, 0x06C0038003800380L, 0x0000000000000000L }, { // 9: 'R' 0x0000000000000FC0L, 0x0C600C600C600FC0L, 0x0D800CC00C600C30L, 0x0000000000000000L }, { // 10: 'U' 0x0000000000000C30L, 0x0C300C300C300C30L, 0x0C300C300C3007E0L, 0x0000000000000000L }, { // 11: '5' 0x00000000000007E0L, 0x0600060007C00060L, 0x006000600C6007C0L, 0x0000000000000000L }, { // 12: '7' 0x00000000000007F0L, 0x00300060006000C0L, 0x00C0018001800300L, 0x0000000000000000L }, { // 13: '9' 0x00000000000007C0L, 0x0C600C600C600C60L, 0x07E0006000C00780L, 0x0000000000000000L }, { // 14: '1' 0x0000000000000180L, 0x0780018001800180L, 0x01800180018007E0L, 0x0000000000000000L }, { // 15: '2' 0x00000000000003E0L, 0x0630003000300060L, 0x00C00180030007F0L, 0x0000000000000000L }, }, // LucidaI { { // 0: 'W' 0x0000000000000808L, 0x0808099009B00B20L, 0x1340154015801980L, 0x1100000000000000L }, { // 1: 'J' 0x00000000000001E0L, 0x0020002000400040L, 0x0040008000800100L, 0x1E00000000000000L }, { // 2: 'F' 0x00000000000003FCL, 0x0200020004000400L, 0x07E0080008000800L, 0x1000000000000000L }, { // 3: 'Z' 0x00000000000003FCL, 0x0008001000200040L, 0x0080030004000800L, 0x1FE0000000000000L }, { // 4: 'N' 0x0000000000000308L, 0x0308030805100490L, 0x049008A008A008A0L, 0x1040000000000000L }, { // 5: 'Y' 0x0000000000000810L, 0x0820084004800500L, 0x0600040004000400L, 0x0800000000000000L }, { // 6: 'S' 0x00000000000001F0L, 0x0210020003000180L, 0x00C0004000400840L, 0x0F80000000000000L }, { // 7: 'G' 0x00000000000000F8L, 0x0308040008000800L, 0x0870102018200C20L, 0x07C0000000000000L }, { // 8: 'V' 0x0000000000000808L, 0x0810081004200440L, 0x0480058005000600L, 0x0400000000000000L }, { // 9: 'R' 0x00000000000001F0L, 0x0118010802100220L, 0x03C0048004400460L, 0x0820000000000000L }, { // 10: 'U' 0x0000000000000208L, 0x0208020804100410L, 0x0410082008200840L, 0x0780000000000000L }, { // 11: '5' 0x0000000000F80100L, 0x0100010003800040L, 0x0040004000400080L, 0x0F00000000000000L }, { // 12: '7' 0x0000000003F80010L, 0x0020004000800100L, 0x0200040004000800L, 0x1000000000000000L }, { // 13: '9' 0x0000000000F00118L, 0x0218021004100630L, 0x03E0002000400880L, 0x0F00000000000000L }, { // 14: '1' 0x00000010003001E0L, 0x0020002000400040L, 0x0040008000800080L, 0x0FE0000000000000L }, { // 15: '2' 0x0000000000F00108L, 0x0008000800100020L, 0x0040018002000400L, 0x0FC0000000000000L }, }, }; public static final int buildCapcha(short text, byte font) { return (text | (font << 0x10)) & 0x00FFFFFF; } public static final short getCapchaTextPart(int capcha) { return (short)(capcha & 0x0000FFFF); } public static final byte getCapchaFontPart(int capcha) { return (byte)(capcha >> 0x10 & 0xFF); } public static final short rgb888TOrgb565(int rgb888) { return (short)((((rgb888 >> 0x08) & 0x00F808) | ((rgb888 >> 0x05) & 0x0007E0) | ((rgb888 >> 0x03) & 0x00001F)) & 0xFFFF); } public static final String getCapchaText(int capcha) { char[] r = new char[0x4]; short text = getCapchaTextPart(capcha); for(int i = 0; i < 0x04; i++) r[i] = alphabet.charAt(text >> (i << 2) & 0x0F); return new String®; } /** * Генерирует DDS DXT1 текстуру 16x64x2 c 4мя символами. * @param text - 16 бит (слово) капча. каждые 4 бита - символ. итого доступно 16 символов. * @param font - 8 бит. по 2 бита на каждый символ. доступно 4 набора шрифтов. * @param bgcolor - цвет фона в RGB888 формате. * @return массив из 640 байт - DDS DXT1 текстура с 4мя символами. */ public static final byte[] getCapchaImage(int capcha, int bgcolor) { byte[] r = new byte[0x280]; short text = getCapchaTextPart(capcha); byte font = getCapchaFontPart(capcha); int i, j, k; long m = 0; short bgc = rgb888TOrgb565(bgcolor); short c = (short) ~bgc; // header r[0x00] = 0x44; r[0x01] = 0x44; r[0x02] = 0x53; r[0x03] = 0x20;// 'DDS ' signature r[0x04] = 0x7C; // dwSize r[0x08] = 0x07; r[0x09] = 0x10; r[0x0A] = 0x08; // dwFlags r[0x0C] = 0x10; r[0x10] = 0x40; // dwHeight x dwWidth; 16 x 64 r[0x15] = 0x02; // dwPOLS r[0x4C] = 0x20; // dwPFSize r[0x50] = 0x04; // dwPFFlags; FourCC r[0x54] = 0x44; r[0x55] = 0x58; r[0x56] = 0x54; r[0x57] = 0x31; // FourCC - 'DXT1' // main map for(i = 0; i < 0x04; i++) for(j = 0; j < 0x04; j++) { m = glyphs[font >> (j << 1) & 0x03][text >> (j << 2) & 0x0F][i]; k = 0x80 + (j << 0x05) + (i << 0x07); r[k + 0x00] = (byte)(bgc & 0xFF); r[k + 0x01] = (byte)(bgc >> 0x08 & 0xFF); r[k + 0x02] = (byte)(c & 0xFF); r[k + 0x03] = (byte)(c >> 0x08 & 0xFF); r[k + 0x04] = (byte)((m >> 0x3F & 0x01) | (m >> 0x3C & 0x04) | (m >> 0x39 & 0x10) | (m >> 0x36 & 0x40)); r[k + 0x05] = (byte)((m >> 0x2F & 0x01) | (m >> 0x2C & 0x04) | (m >> 0x29 & 0x10) | (m >> 0x26 & 0x40)); r[k + 0x06] = (byte)((m >> 0x1F & 0x01) | (m >> 0x1C & 0x04) | (m >> 0x19 & 0x10) | (m >> 0x16 & 0x40)); r[k + 0x07] = (byte)((m >> 0x0F & 0x01) | (m >> 0x0C & 0x04) | (m >> 0x09 & 0x10) | (m >> 0x06 & 0x40)); r[k + 0x08] = (byte)(bgc & 0xFF); r[k + 0x09] = (byte)(bgc >> 0x08 & 0xFF); r[k + 0x0A] = (byte)(c & 0xFF); r[k + 0x0B] = (byte)(c >> 0x08 & 0xFF); r[k + 0x0C] = (byte)((m >> 0x3B & 0x01) | (m >> 0x38 & 0x04) | (m >> 0x35 & 0x10) | (m >> 0x32 & 0x40)); r[k + 0x0D] = (byte)((m >> 0x2B & 0x01) | (m >> 0x28 & 0x04) | (m >> 0x25 & 0x10) | (m >> 0x22 & 0x40)); r[k + 0x0E] = (byte)((m >> 0x1B & 0x01) | (m >> 0x18 & 0x04) | (m >> 0x15 & 0x10) | (m >> 0x12 & 0x40)); r[k + 0x0F] = (byte)((m >> 0x0B & 0x01) | (m >> 0x08 & 0x04) | (m >> 0x05 & 0x10) | (m >> 0x02 & 0x40)); r[k + 0x10] = (byte)(bgc & 0xFF); r[k + 0x11] = (byte)(bgc >> 0x08 & 0xFF); r[k + 0x12] = (byte)(c & 0xFF); r[k + 0x13] = (byte)(c >> 0x08 & 0xFF); r[k + 0x14] = (byte)((m >> 0x37 & 0x01) | (m >> 0x34 & 0x04) | (m >> 0x31 & 0x10) | (m >> 0x2E & 0x40)); r[k + 0x15] = (byte)((m >> 0x27 & 0x01) | (m >> 0x24 & 0x04) | (m >> 0x21 & 0x10) | (m >> 0x1E & 0x40)); r[k + 0x16] = (byte)((m >> 0x17 & 0x01) | (m >> 0x14 & 0x04) | (m >> 0x11 & 0x10) | (m >> 0x0E & 0x40)); r[k + 0x17] = (byte)((m >> 0x07 & 0x01) | (m >> 0x04 & 0x04) | (m >> 0x01 & 0x10) | (m << 0x02 & 0x40)); r[k + 0x18] = (byte)(bgc & 0xFF); r[k + 0x19] = (byte)(bgc >> 0x08 & 0xFF); r[k + 0x1A] = (byte)(c & 0xFF); r[k + 0x1B] = (byte)(c >> 0x08 & 0xFF); r[k + 0x1C] = (byte)((m >> 0x33 & 0x01) | (m >> 0x30 & 0x04) | (m >> 0x2D & 0x10) | (m >> 0x2A & 0x40)); r[k + 0x1D] = (byte)((m >> 0x23 & 0x01) | (m >> 0x20 & 0x04) | (m >> 0x1D & 0x10) | (m >> 0x1A & 0x40)); r[k + 0x1E] = (byte)((m >> 0x13 & 0x01) | (m >> 0x10 & 0x04) | (m >> 0x0D & 0x10) | (m >> 0x0A & 0x40)); r[k + 0x1F] = (byte)((m >> 0x03 & 0x01) | (m >> 0x00 & 0x04) | (m << 0x03 & 0x10) | (m << 0x06 & 0x40)); } return r; } /** * Генерирует ID капчи для crest_id * @param capcha * @param font * @return */ public static final int getId(int capcha) { short text = getCapchaTextPart(capcha); byte font = getCapchaFontPart(capcha); int r = 0x0b704ce; r = (r << 8) ^ crc24tab[((r >>> 16) ^ (text >> 0x08 & 0xFF)) & 0xFF]; r = (r << 8) ^ crc24tab[((r >>> 16) ^ (text & 0xFF)) & 0xFF]; r = (r << 8) ^ crc24tab[((r >>> 16) ^ font) & 0xFF]; return r & 0x00FFFFFF; } public static final int RndCapcha() { return buildCapcha((short)Rnd.get(0x0000FFFF), (byte)Rnd.get(0xFF)); } public static final int RndRGB888Color() { int r = Rnd.get(0xFF); int g = Rnd.get(0xFF); int b = Rnd.get(0xFF); if(r >= 0x7A && r <= 0x86 && g >= 0x7A && g <= 0x86 && b >= 0x7A && b <= 0x86) { r = 0; g = 0; b = 0; } return 0x00FFFFFF & (r << 0x10 & 0x00FF0000) | (g << 0x8 & 0x00FF00) | (b & 0xFF); } public static final boolean IsValidEntry(int capcha, String entry) { return entry.trim().toUpperCase().equalsIgnoreCase(getCapchaText(capcha)); } } |
« Предыдущая | Следующая »
|
Возможно похожие темы ... | |||||
Тема | Автор | Ответы | Просмотры | Последний пост | |
Smart Guard - отзывы | 109 | 31,705 |
12-25-2016, 01:09 AM Последний пост: Sunriseworld |
||
First Guard настройка | 2 | 2,467 |
11-06-2016, 06:21 PM Последний пост: KateKate7912 |
||
CCP guard | 13 | 4,612 |
05-26-2015, 09:32 PM Последний пост: GenCloud |
||
Updater+Launcher & Guard | 3 | 3,483 |
04-08-2014, 12:47 PM Последний пост: Shayne |
||
Lame Guard | 0 | 1,128 |
12-21-2013, 03:07 PM Последний пост: Athlete2 |
||
Итак,выкладываю сие чудо FT-Guard исходники | 8 | 6,375 |
02-05-2013, 12:34 PM Последний пост: nEkToSaN |
||
Game Guard | 2 | 1,476 |
08-21-2011, 05:32 AM Последний пост: Vit@lik™ |
||
Game Guard ОС Севен | 6 | 5,627 |
08-16-2011, 07:39 PM Последний пост: 1stForrest |
||
Установка L2jCore Guard 1.5 Source | 2 | 3,369 |
01-23-2011, 06:35 PM Последний пост: [STIGMATED] |
||
l2jcore guard 1.5 (шара) | 7 | 4,656 |
01-04-2011, 05:46 PM Последний пост: Blakkky |