public void SendClientBlock(eSocket.Server.eSockClient client) { if (HashBlock.Count == 0) { client.Send(new Packet.MD5FirstBlock(hash, HashCharset)); HashBlock.AddRange(new int[] { 0, 0, 0 }); SetCurrentBlockText("???"); BlocksSent += 1; SetBlocksStatus(); return; } StringBuilder sBlock = new StringBuilder(); foreach (int i in HashBlock) { if (i > HashCharset.Length - 1) { continue; } sBlock.Append(HashCharset[i]); } client.Send(new Packet.MD5Crack(hash, sBlock.ToString(), HashCharset)); BlocksSent += 1; SetBlocksStatus(); HashBlock[0] += 1; for (int i = 0; i < HashBlock.Count; i++) { if (HashBlock[i] == HashCharset.Length) { if (i == HashBlock.Count) { HashBlock[i] = 0; HashBlock.Add(0); } else { HashBlock[i + 1] += 1; HashBlock[i] = 0; } } } sBlock = new StringBuilder(); foreach (int i in HashBlock) { if (i > HashCharset.Length) { continue; } sBlock.Append(HashCharset[i]); } SetCurrentBlockText("???" + sBlock.ToString()); }