mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-14 07:10:09 +08:00
update
This commit is contained in:
parent
31bb236e21
commit
1a1dbdabe1
BIN
LV7{YX10AQ5TW@E~308_0JN.png
Normal file
BIN
LV7{YX10AQ5TW@E~308_0JN.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
@ -49,8 +49,21 @@ interface Protocol {
|
||||
const val _0836_622_fix1 = "03 00 00 00 01 01 01 00 00 68 20 00 00 00 00 00 01 01 03 00 19";
|
||||
const val _0836key1 = "EF 4A 36 6A 16 A8 E6 3D 2E EA BD 1F 98 C1 3C DA"
|
||||
|
||||
private val hexToByteArrayCacheMap: MutableMap<Int, ByteArray> = mutableMapOf()
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun hexToBytes(hex: String): ByteArray = hexToUBytes(hex).toByteArray()
|
||||
fun hexToBytes(hex: String): ByteArray {
|
||||
hex.hashCode().let { id ->
|
||||
if (hexToByteArrayCacheMap.containsKey(id)) {
|
||||
return hexToByteArrayCacheMap[id]!!.clone()
|
||||
} else {
|
||||
hexToUBytes(hex).toByteArray().let {
|
||||
hexToByteArrayCacheMap[id] = it.clone();
|
||||
return it
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun hexToUBytes(hex: String): UByteArray = Arrays
|
||||
|
@ -10,12 +10,12 @@ import net.mamoe.mirai.network.packet.server.security.ServerSessionKeyResponsePa
|
||||
import net.mamoe.mirai.network.packet.server.security.ServerSessionKeyResponsePacketEncrypted
|
||||
import net.mamoe.mirai.network.packet.server.touch.ServerTouchResponsePacket
|
||||
import net.mamoe.mirai.network.packet.server.touch.ServerTouchResponsePacketEncrypted
|
||||
import net.mamoe.mirai.util.getRandomKey
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import net.mamoe.mirai.util.*
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import java.net.DatagramPacket
|
||||
import java.net.DatagramSocket
|
||||
import java.net.InetSocketAddress
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* A robot account.
|
||||
@ -97,15 +97,39 @@ class Robot(val number: Int, private val password: String) {
|
||||
|
||||
//是ClientPasswordSubmissionPacket之后服务器回复的
|
||||
is ServerLoginResponseResendPacket -> {
|
||||
if (packet.token00BA != null) {
|
||||
this.token00BA = packet.token00BA!!
|
||||
println(token00BA)
|
||||
if (packet.tokenUnknown != null) {
|
||||
//this.token00BA = packet.token00BA!!
|
||||
//println("token00BA changed!!! to " + token00BA.toUByteArray())
|
||||
}
|
||||
if (packet.flag == ServerLoginResponseResendPacket.Flag.`08 36 31 03`) {
|
||||
this.tgtgtKey = packet.tgtgtKey
|
||||
sendPacket(ClientLoginResendPacket3104(this.number, this.password, this.loginTime, this.loginIP, this.tgtgtKey!!, this.token0825, this.token00BA, packet._0836_tlv0006_encr))
|
||||
sendPacket(ClientLoginResendPacket3104(
|
||||
this.number,
|
||||
this.password,
|
||||
this.loginTime,
|
||||
this.loginIP,
|
||||
this.tgtgtKey!!,
|
||||
this.token0825,
|
||||
when (packet.tokenUnknown != null) {
|
||||
true -> packet.tokenUnknown!!
|
||||
false -> this.token00BA
|
||||
},
|
||||
packet._0836_tlv0006_encr
|
||||
))
|
||||
} else {
|
||||
sendPacket(ClientLoginResendPacket3106(this.number, this.password, this.loginTime, this.loginIP, this.tgtgtKey!!, this.token0825, this.token00BA, packet._0836_tlv0006_encr))
|
||||
sendPacket(ClientLoginResendPacket3106(
|
||||
this.number,
|
||||
this.password,
|
||||
this.loginTime,
|
||||
this.loginIP,
|
||||
this.tgtgtKey!!,
|
||||
this.token0825,
|
||||
when (packet.tokenUnknown != null) {
|
||||
true -> packet.tokenUnknown!!
|
||||
false -> this.token00BA
|
||||
},
|
||||
packet._0836_tlv0006_encr
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
@ -126,8 +150,10 @@ class Robot(val number: Int, private val password: String) {
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun sendPacket(packet: ClientPacket) {
|
||||
sendPacketDebug(packet);
|
||||
if (true) return;
|
||||
try {
|
||||
MiraiLogger log "Encoding"
|
||||
//MiraiLogger log "Encoding"
|
||||
packet.encode()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
@ -137,12 +163,45 @@ class Robot(val number: Int, private val password: String) {
|
||||
p.socketAddress = this.serverAddress*/
|
||||
//ctx.writeAndFlush(packet.toByteArray()).sync()
|
||||
MiraiLogger info "Sending: $packet"
|
||||
packet.logging()
|
||||
packet.toByteArray().packetSentDebugLogging()
|
||||
//GlobalScope.launch {
|
||||
send(packet.toByteArray())
|
||||
send(packet.toByteArray())
|
||||
//}
|
||||
//println(channel!!.writeAndFlush(packet.toByteArray()).channel().connect(serverAddress).sync().get())
|
||||
}
|
||||
|
||||
val packetQueue: MutableList<String> = LinkedList()
|
||||
|
||||
init {
|
||||
packetQueue.add("02 37 13 08 25 31 01 76 E4 B8 DD 00 00 00 13 46 E6 ED CE BF 3B EC 4C A0 B9 0C 84 D5 88 5C DE 99 7A 64 CF CF 59 35 C5 58 AE BD 0B F5 94 65 25 9E 23 01 88 BF D5 B5 51 DC AA 45 C5 97 8E 40 14 0F 46 50 31 CF 1C CB 10 28 33 F7 40 93 A9 B0 F3 EA 18 51 14 FD 61 C3 FD E3 A3 D8 1B 20 6F 60 EA 47 28 91 87 94 2E 5A E4 0A 4D 4D B7 14 57 03 E7 9D D7 28 E2 F4 59 62 34 89 19 1E 10 B8 90 97 C3 11 8A FE D6 3A 9A D8 03")
|
||||
packetQueue.add("02 37 13 08 25 31 02 76 E4 B8 DD 00 00 00 80 96 0C 13 5F 40 31 75 D6 13 3D 59 65 F0 7A 1E 03 22 0B F1 BE F4 D8 BB 46 6C 2E 55 39 A1 05 8B 85 4E A4 D4 F3 A9 D6 CC CA 4D 2E 1A F2 E4 1D 49 4D 1F 23 66 BB 60 92 17 EC D3 35 32 93 E2 3D 8A A0 CE 3C 83 66 1F 0A A0 9A C7 11 91 8E E5 06 54 09 DE 1D 88 6C 0F 16 EB BC 7B 95 BF 71 A2 71 2B 21 F8 AD C8 03 C0 54 DE 03")
|
||||
packetQueue.add("02 37 13 08 36 31 03 76 E4 B8 DD 00 00 00 BD 57 C9 45 45 E4 52 BE DA 05 67 A3 49 0F B7 90 AD 3E 47 34 A9 A8 B3 D9 82 E1 45 95 A4 41 F0 66 56 20 D5 0C B7 AF 9E A3 3A 32 FE 89 B2 0A AD 81 EC D0 D1 7A 17 00 51 5E FA BD 75 D1 DB E9 12 DC 89 25 A8 6D 80 F4 00 21 68 70 A0 77 E3 EF FA 9C 80 25 47 5B 55 E1 A0 1D D9 6B FE B7 7F 6A 3B 67 45 A5 F1 CE 33 F4 43 67 1D FD 83 F6 88 9F 2E 7E F3 8B 0E DE 68 76 B1 48 9A 5C B2 B2 8D 12 E3 FA CE 0F 22 F1 7C 20 4D AD 01 09 36 C6 64 3A BE CA 33 68 46 19 8A A9 66 7A 13 DC F2 EE 04 91 74 FB CB 57 B5 48 84 BF 99 24 3C 1E 5C 04 56 F1 28 E1 49 95 0D 71 39 FB A2 AE EE C5 E6 99 91 A3 A3 59 48 CA DE 10 66 F2 FA 88 D8 6F 46 2B B3 F4 33 C0 64 92 92 99 83 06 43 C2 3C FC 0F 34 38 7C 0F F8 3C 35 D0 CD 23 05 06 5B 61 B3 AD 38 D9 E2 5F 51 A4 A0 CA AF 4A A9 86 11 C9 AC 2C 44 11 08 52 E3 3C 0D 1B 91 B6 C6 70 FC 15 CC 16 F6 3B C9 97 C0 82 D1 8B 24 2F AA 35 50 61 E9 11 F8 E1 09 29 B9 20 5E 3A 73 33 BF 78 9C CC D0 A7 BF 23 66 65 3B D1 1F 71 40 C2 E2 0D CA 6F 57 D8 E1 46 B6 47 65 9E 43 04 0E 30 54 EB 70 42 49 6F 75 55 C5 63 3A A4 9D FF 0B F8 56 3B 89 74 14 56 6B 6E 9D 32 D4 DD FA E7 C6 B2 6B 61 F0 54 EF 05 7E E1 49 D6 38 A0 C1 B3 F6 B4 7A 4A 03 31 1D E7 88 BA 56 9D 50 03 95 FF DB 23 DC 3C B9 51 1B 4B 06 1E 5E C5 B1 96 EA 8B 64 92 48 24 65 A4 92 EC BA 90 42 AD BA 04 81 4F 42 FB 41 60 E9 93 68 1F 59 67 57 57 5F 40 22 1B F2 D9 C5 5D 53 34 2C E4 82 ED D2 A8 3B F1 C2 05 2A 4D F9 45 63 21 E7 92 5A 01 D4 A4 3A 98 D8 57 39 34 D4 E2 CC F6 D1 76 12 76 00 A5 89 18 66 9C F9 18 31 52 E6 92 B2 11 46 73 8D 37 92 99 7A 3B FC 82 36 A1 7A 7B 91 D0 F7 59 C2 64 76 7A 4F 7E 88 8A AF 11 AA 90 5C 0D E2 9F F7 A8 9B 04 A7 05 48 EC 92 01 2A 19 0E 8C A7 1B 9C 1F B2 F8 BD C5 AE 98 D5 86 C7 C6 D2 D5 BC B5 BB D7 F9 05 52 F1 5A 6D B5 94 2C 44 86 11 A9 B3 EB 9D D7 30 BF 21 1F 22 2D FB AC 0C 5C 94 C4 69 C2 82 C8 48 6C 86 40 95 EF 67 9B B1 60 17 09 56 AE CB 85 EF FD 60 7D BA A3 1D 13 05 10 93 ED 5D 91 6B 3B 8C 23 C4 45 EF 02 BA 86 0E F7 8E 46 C7 3D 07 8A 67 94 3B 5C 4B 05 BD 64 76 DF 1A 3B A5 C9 26 AA F6 A5 36 4E EC 00 AD D8 B7 5E 32 53 02 9F CF 3C 23 9C 94 BB 03 F8 97 9F 53 CC A0 68 77 4D A4 DE D0 CE DE 68 FC A2 07 A5 9E 65 28 E2 A2 95 E0 1D 45 11 47 E9 03 1A BE F5 1F 48 36 37 B8 EA EA 6B 9C 73 93 7D 21 CA 77 F7 62 73 BF BA 54 BB C2 38 0C 04 68 A4 E0 05 98 18 6E 5D EC 40 EE 54 27 9C 67 5C 79 5D 89 3C 4F DC 29 50 46 87 D9 EB F9 12 03")
|
||||
}
|
||||
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun sendPacketDebug(packet: ClientPacket) {
|
||||
try {
|
||||
//MiraiLogger log "Encoding"
|
||||
packet.encode()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
packet.writeHex(Protocol.tail)
|
||||
/*val p = DatagramPacket(packet.toByteArray());
|
||||
p.socketAddress = this.serverAddress*/
|
||||
//ctx.writeAndFlush(packet.toByteArray()).sync()
|
||||
MiraiLogger info "Sending: $packet"
|
||||
packet.logging()
|
||||
packet.toByteArray().packetSentDebugLogging()
|
||||
//GlobalScope.launch {
|
||||
this.onPacketReceived(ServerPacket.ofByteArray(packetQueue.removeAt(0).hexToBytes()))
|
||||
//send(packet.toByteArray())
|
||||
//}a
|
||||
//println(channel!!.writeAndFlush(packet.toByteArray()).channel().connect(serverAddress).sync().get())
|
||||
}
|
||||
|
||||
// private val socket = DatagramSocket(15314)
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
@ -153,7 +212,7 @@ class Robot(val number: Int, private val password: String) {
|
||||
|
||||
val dp1 = DatagramPacket(ByteArray(22312), 22312)
|
||||
socket.send(DatagramPacket(data, data.size))
|
||||
MiraiLogger info "Packet sent: ${data.toUByteArray().toHexString()}"
|
||||
MiraiLogger info "Packet sent: ${data.toUByteArray().toUHexString()}"
|
||||
socket.receive(dp1)
|
||||
val zeroByte: Byte = 0
|
||||
var i = dp1.data.size - 1;
|
||||
@ -164,6 +223,9 @@ class Robot(val number: Int, private val password: String) {
|
||||
onPacketReceived(ServerPacket.ofByteArray(dp1.data.copyOfRange(0, i + 1)))
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
repeat(100) { println() }
|
||||
println(DebugLogger.buff.toString())
|
||||
System.exit(1)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -53,7 +53,15 @@ abstract class ClientPacket : ByteArrayDataOutputStream(), Packet {
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return this.javaClass.simpleName + this.getAllDeclaredFields().joinToString(", ", "{", "}") { it.trySetAccessible(); it.name + "=" + it.get(this) }
|
||||
return this.javaClass.simpleName + this.getAllDeclaredFields().joinToString(", ", "{", "}") {
|
||||
it.trySetAccessible(); it.name + "=" + it.get(this).let { value ->
|
||||
when (value) {
|
||||
is ByteArray -> value.toUHexString()
|
||||
is UByteArray -> value.toUHexString()
|
||||
else -> value.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -128,8 +136,8 @@ fun DataOutputStream.writeTLV0006(qq: Int, password: String, loginTime: Int, log
|
||||
|
||||
val md5_1 = md5(password);
|
||||
val md5_2 = md5(md5_1 + "00 00 00 00".hexToBytes() + qq.toByteArray())
|
||||
println(md5_1.toUByteArray().toHexString())
|
||||
println(md5_2.toUByteArray().toHexString())
|
||||
println(md5_1.toUByteArray().toUHexString())
|
||||
println(md5_2.toUByteArray().toUHexString())
|
||||
it.write(md5_1)
|
||||
it.writeInt(loginTime)
|
||||
it.writeByte(0);
|
||||
@ -147,7 +155,7 @@ fun DataOutputStream.writeTLV0006(qq: Int, password: String, loginTime: Int, log
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun main() {
|
||||
println(lazyEncode { it.writeTLV0006(1994701021, "D1 A5 C8 BB E1 Q3 CC DD", 131513, "123.123.123.123", "AA BB CC DD EE FF AA BB CC".hexToBytes()) }.toUByteArray().toHexString())
|
||||
println(lazyEncode { it.writeTLV0006(1994701021, "D1 A5 C8 BB E1 Q3 CC DD", 131513, "123.123.123.123", "AA BB CC DD EE FF AA BB CC".hexToBytes()) }.toUByteArray().toUHexString())
|
||||
}
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
@ -190,7 +198,7 @@ fun Int.toLByteArray(): ByteArray = byteArrayOf(
|
||||
)
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun Int.toHexString(separator: String = " "): String = this.toByteArray().toUByteArray().toHexString(separator);
|
||||
fun Int.toHexString(separator: String = " "): String = this.toByteArray().toUByteArray().toUHexString(separator);
|
||||
|
||||
private fun md5(str: String): ByteArray = MessageDigest.getInstance("MD5").digest(str.toByteArray())
|
||||
|
||||
|
@ -14,6 +14,7 @@ import java.net.InetAddress
|
||||
*/
|
||||
@PacketId("08 36 31 03")
|
||||
@ExperimentalUnsignedTypes
|
||||
@TestedSuccessfully
|
||||
class ClientPasswordSubmissionPacket(
|
||||
private val qq: Int,
|
||||
private val password: String,
|
||||
@ -38,8 +39,34 @@ class ClientPasswordSubmissionPacket(
|
||||
}
|
||||
}
|
||||
|
||||
fun main() {
|
||||
val loginTime = "5D 60 F6 33".hexToInt()
|
||||
println(loginTime)
|
||||
|
||||
val loginIP = "AB 70 E2 96".let { it.split(" ").map { it.hexToByte() }.joinToString(".") { it.toString() } }
|
||||
|
||||
|
||||
val tgtgtKey = "68 25 55 61 52 66 4A 54 71 6A 71 5A 24 50 27 6D".hexToBytes()
|
||||
|
||||
val token0825 = "56 3A E4 8B B4 64 D2 72 60 FE 01 54 FC B1 5F 88 E0 BA 64 1A 55 F2 84 FC 97 D0 BF 5F 47 A8 D9 76 BB FB 4A 7A F3 5E 0E A4 8E CA 8F 27 C2 02 6E 5D E7 68 9F 7C CF 91 83 F4".hexToBytes()
|
||||
val token00ba = "57 3A 37 C3 FB A0 C3 E5 AE F3 0E B6 03 DE BF 9E E2 B5 C5 FE A0 F0 03 4F F7 8A 5C 29 5C E0 5A A2 89 D5 3F 60 E2 B2 81 FE D4 16 04 D4 E3 C6 4A D7 A9 D9 E6 FC 2E 7E 0C F3".hexToBytes()
|
||||
val tlv_0006_encr = "0D DF 92 9C 5A 08 D1 67 FD 7D D6 DE CE D0 92 39 79 17 53 57 41 9B D6 D3 F9 F8 9A 3B E1 C2 3A E7 CF 02 6E 5E 36 B7 6D CF 33 66 77 FE AC 58 93 A3 85 E7 AF 6F 2D A2 74 E2 60 28 4B 29 17 04 79 95 39 D4 BF 4D C1 ED 61 49 13 23 9D 71 62 29 AF 87 D7 E3 42 49 88 3F D8 5C DB 9F 9E 5A 2A EA 02 F6 4F 2B D3 5B AF BE 0C B2 54 46 AE 99 1B 07 0B BE 6A C2 29 18 25 6A 95 0A".hexToBytes()
|
||||
|
||||
|
||||
ClientLoginResendPacket3104(
|
||||
1994701021,
|
||||
"xiaoqqq",
|
||||
loginTime,
|
||||
loginIP,
|
||||
tgtgtKey,
|
||||
token0825,
|
||||
token00ba,
|
||||
tlv_0006_encr
|
||||
).let { it.encode();println(it.toUByteArray().toUHexString()) }
|
||||
}
|
||||
|
||||
@PacketId("08 36 31 04")
|
||||
@ExperimentalUnsignedTypes
|
||||
@ExperimentalUnsignedTypes//todo 测试出来这个包长度有问题
|
||||
class ClientLoginResendPacket3104(qq: Int, password: String, loginTime: Int, loginIP: String, tgtgtKey: ByteArray, token0825: ByteArray, token00BA: ByteArray, tlv_0006_encr: ByteArray? = null) : ClientLoginResendPacket(qq, password, loginTime, loginIP, tgtgtKey, token0825, token00BA, tlv_0006_encr)
|
||||
|
||||
@PacketId("08 36 31 06")
|
||||
@ -47,7 +74,16 @@ class ClientLoginResendPacket3104(qq: Int, password: String, loginTime: Int, log
|
||||
class ClientLoginResendPacket3106(qq: Int, password: String, loginTime: Int, loginIP: String, tgtgtKey: ByteArray, token0825: ByteArray, token00BA: ByteArray, tlv_0006_encr: ByteArray? = null) : ClientLoginResendPacket(qq, password, loginTime, loginIP, tgtgtKey, token0825, token00BA, tlv_0006_encr)
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
open class ClientLoginResendPacket internal constructor(val qq: Int, val password: String, val loginTime: Int, val loginIP: String, val tgtgtKey: ByteArray, val token0825: ByteArray, val token00BA: ByteArray, val tlv_0006_encr: ByteArray? = null) : ClientPacket() {
|
||||
open class ClientLoginResendPacket internal constructor(
|
||||
val qq: Int,
|
||||
val password: String,
|
||||
val loginTime: Int,
|
||||
val loginIP: String,
|
||||
val tgtgtKey: ByteArray,
|
||||
val token0825: ByteArray,
|
||||
val token00BA: ByteArray,
|
||||
val tlv_0006_encr: ByteArray? = null
|
||||
) : ClientPacket() {
|
||||
override fun encode() {
|
||||
this.writeQQ(qq)
|
||||
this.writeHex(Protocol._0836_622_fix1)
|
||||
@ -72,9 +108,6 @@ open class ClientLoginResendPacket internal constructor(val qq: Int, val passwor
|
||||
}
|
||||
}
|
||||
|
||||
fun main() {
|
||||
println(InetAddress.getLocalHost().hostAddress)
|
||||
}
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
@PacketId("08 28 04 34")
|
||||
@ -180,7 +213,7 @@ private fun DataOutputStream.writePart2() {
|
||||
|
||||
this.writeHex("05 08")//tag
|
||||
this.writeHex("00 05")//length
|
||||
this.writeHex("10 00 00 00 00")//value
|
||||
this.writeHex("01 00 00 00 00")//value
|
||||
|
||||
this.writeHex("03 13")//tag
|
||||
this.writeHex("00 19")//length
|
||||
|
@ -8,7 +8,7 @@ import net.mamoe.mirai.network.packet.client.writeIP
|
||||
import net.mamoe.mirai.network.packet.client.writeQQ
|
||||
import net.mamoe.mirai.util.ByteArrayDataOutputStream
|
||||
import net.mamoe.mirai.util.TEACryptor
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import net.mamoe.mirai.util.toUHexString
|
||||
import java.io.IOException
|
||||
|
||||
/**
|
||||
@ -23,7 +23,7 @@ class ClientTouchPacket(val qq: Int, val serverIp: String) : ClientPacket() {
|
||||
@ExperimentalUnsignedTypes
|
||||
@Throws(IOException::class)
|
||||
override fun encode() {
|
||||
//println(this.toUByteArray().toHexString(" "))
|
||||
//println(this.toUByteArray().toUHexString(" "))
|
||||
//exitProcess(1)
|
||||
|
||||
this.writeQQ(qq)
|
||||
@ -43,7 +43,7 @@ class ClientTouchPacket(val qq: Int, val serverIp: String) : ClientPacket() {
|
||||
//this.writeIP("123456789")
|
||||
this.writeHex("00 02 00 36 00 12 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 14 00 1D 01 02 00 19")
|
||||
this.writeHex(Protocol.publicKey)
|
||||
println(super.toUByteArray().toHexString())
|
||||
println(super.toUByteArray().toUHexString())
|
||||
return super.toByteArray()
|
||||
}
|
||||
}.toByteArray()))
|
||||
@ -58,7 +58,7 @@ fun main() {
|
||||
pk.encode()
|
||||
pk.writeHex(Protocol.tail)
|
||||
//println("pk.toByteArray() = " + pk.toUByteArray().contentToString())
|
||||
println(pk.toUByteArray().toHexString(" "))
|
||||
println(pk.toUByteArray().toUHexString(" "))
|
||||
|
||||
/*
|
||||
println(object : ByteArrayDataOutputStream() {
|
||||
@ -67,7 +67,7 @@ fun main() {
|
||||
this.writeInt(1994701021)
|
||||
return super.toUByteArray()
|
||||
}
|
||||
}.toUByteArray().toHexString())*/
|
||||
}.toUByteArray().toUHexString())*/
|
||||
|
||||
|
||||
/*
|
||||
@ -85,7 +85,7 @@ fun main() {
|
||||
this.writeHex(Protocol.publicKey)
|
||||
return super.toUByteArray()
|
||||
}
|
||||
}.toUByteArray().toHexString(" "))
|
||||
}.toUByteArray().toUHexString(" "))
|
||||
*/
|
||||
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ import net.mamoe.mirai.network.packet.server.login.*
|
||||
import net.mamoe.mirai.network.packet.server.touch.ServerTouchResponsePacket
|
||||
import net.mamoe.mirai.network.packet.server.touch.ServerTouchResponsePacketEncrypted
|
||||
import net.mamoe.mirai.util.getAllDeclaredFields
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import net.mamoe.mirai.util.toUHexString
|
||||
import java.io.DataInputStream
|
||||
|
||||
/**
|
||||
@ -20,7 +20,7 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun ofByteArray(bytes: ByteArray): ServerPacket {
|
||||
println("Raw received: ${bytes.toUByteArray().toHexString()}")
|
||||
println("Raw received: ${bytes.toUByteArray().toUHexString()}")
|
||||
|
||||
val stream = bytes.dataInputStream()
|
||||
|
||||
@ -41,7 +41,7 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
|
||||
}
|
||||
|
||||
if (bytes.size > 700) {
|
||||
return ServerLoginResponseSuccessPacketEncrypted(stream, bytes.size)
|
||||
return ServerLoginResponseSuccessPacketEncrypted(stream)
|
||||
}
|
||||
|
||||
return ServerLoginResponseFailedPacket(when (bytes.size) {
|
||||
@ -53,7 +53,7 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
|
||||
359 -> ServerLoginResponseFailedPacket.State.TAKEN_BACK
|
||||
|
||||
//unknown
|
||||
63 -> throw IllegalArgumentException(bytes.size.toString())
|
||||
63 -> throw IllegalArgumentException(bytes.size.toString())//可能是已经完成登录, 服务器拒绝第二次登录
|
||||
351 -> throw IllegalArgumentException(bytes.size.toString())
|
||||
|
||||
else -> throw IllegalArgumentException(bytes.size.toString())
|
||||
@ -169,7 +169,15 @@ DataArrived >> AnalyMessage
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return this.javaClass.simpleName + this.getAllDeclaredFields().joinToString(", ", "{", "}") { it.trySetAccessible(); it.name + "=" + it.get(this) }
|
||||
return this.javaClass.simpleName + this.getAllDeclaredFields().joinToString(", ", "{", "}") {
|
||||
it.trySetAccessible(); it.name + "=" + it.get(this).let { value ->
|
||||
when (value) {
|
||||
is ByteArray -> value.toUHexString()
|
||||
is UByteArray -> value.toUHexString()
|
||||
else -> value?.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,9 @@ import net.mamoe.mirai.network.packet.server.ServerPacket
|
||||
import net.mamoe.mirai.network.packet.server.dataInputStream
|
||||
import net.mamoe.mirai.network.packet.server.goto
|
||||
import net.mamoe.mirai.util.TEACryptor
|
||||
import net.mamoe.mirai.util.TestedSuccessfully
|
||||
import net.mamoe.mirai.util.hexToUBytes
|
||||
import net.mamoe.mirai.util.toUHexString
|
||||
import java.io.DataInputStream
|
||||
|
||||
/**
|
||||
@ -18,18 +21,21 @@ class ServerLoginResponseResendPacket(input: DataInputStream, val flag: Flag) :
|
||||
}
|
||||
|
||||
lateinit var _0836_tlv0006_encr: ByteArray;
|
||||
var token00BA: ByteArray? = null
|
||||
var tokenUnknown: ByteArray? = null
|
||||
lateinit var tgtgtKey: ByteArray
|
||||
|
||||
@TestedSuccessfully
|
||||
override fun decode() {
|
||||
this.input.skip(5)
|
||||
tgtgtKey = this.input.readNBytes(16)//22
|
||||
this.input.skip(3)//25
|
||||
println(tgtgtKey.toUHexString())
|
||||
this.input.skip(2)//25
|
||||
_0836_tlv0006_encr = this.input.readNBytes(120)
|
||||
|
||||
when (flag) {
|
||||
Flag.`08 36 31 03` -> {
|
||||
token00BA = this.input.goto(153).readNBytes(56)
|
||||
tokenUnknown = this.input.goto(153).readNBytes(56)
|
||||
println(tokenUnknown!!.toUHexString())
|
||||
}
|
||||
|
||||
Flag.OTHER -> {
|
||||
@ -46,11 +52,26 @@ class ServerLoginResponseResendPacketEncrypted(input: DataInputStream, private v
|
||||
|
||||
}
|
||||
|
||||
@TestedSuccessfully
|
||||
fun decrypt(tgtgtKey: ByteArray): ServerLoginResponseResendPacket {
|
||||
//this.input.skip(7)
|
||||
this.input goto 14
|
||||
var data: ByteArray = this.input.readAllBytes()
|
||||
data = TEACryptor.CRYPTOR_SHARE_KEY.decrypt(data.let { it.copyOfRange(0, it.size - 1) });
|
||||
data = TEACryptor.decrypt(data, tgtgtKey);
|
||||
data = TEACryptor.decrypt(data, tgtgtKey)
|
||||
return ServerLoginResponseResendPacket(data.dataInputStream(), flag)
|
||||
}
|
||||
}
|
||||
|
||||
fun main() {
|
||||
val tgtgtkey = "9E 83 61 FF 18 61 4B 77 34 FE 1C 9C E2 03 B4 F2".hexToUBytes()
|
||||
|
||||
ServerLoginResponseResendPacketEncrypted("02 37 13 08 36 31 03 76 E4 B8 DD 00 00 00 94 9B 87 00 87 7F 9E D0 E5 6A F6 17 41 02 0C AA F3 AC C8 CF 4E C6 9D EC FA 6C BD F8 7C 4B A5 28 80 CC DE B5 0A 41 8E 63 CE 5E 30 D8 A6 83 92 0E 2E 5C 35 E5 6E 62 3D FE 17 DD 7C 47 9A AD EF F0 F7 2A 6F 21 32 99 1B 6D E1 DA BE 68 2F 26 A9 93 DE 1B 4F 11 F0 AF A1 06 7B 85 53 46 D2 A3 DD A6 BE F2 76 8A 61 BF 15 FD 17 C4 45 DB EC 05 51 56 46 63 48 87 49 79 0D 40 DF 9D D9 99 93 EC D0 44 7B 4A 79 EB BD 08 10 18 29 0E 85 EE 26 A0 CD 40 00 2F 3E ED F4 A4 C3 01 5E 82 F5 A8 02 FA 70 EB F2 07 AD FF 0E DA 08 7A 3A FE B6 F4 5D 98 18 F7 58 C2 19 21 AF 29 D2 95 16 CE C4 A3 5F B0 E6 23 C2 B2 C6 5F 03 42 C2 44 C2 B0 A0 3F 95 8E 89 EF FC EC E4 BF 03 CB DA 9C D3 84 3F 9B A0 F1 B4 14 6E 23 D5 74 79 6F 89 DA B8 33 DB EF 0B 21 E1 27 27 57 8B 56 CB D9 BF C2 A8 25 6E 48 23 EB 31 9D 03".hexToUBytes().toByteArray().dataInputStream(), ServerLoginResponseResendPacket.Flag.`08 36 31 03`).decrypt(tgtgtkey.toByteArray()).let { it.decode();println(it._0836_tlv0006_encr.toUHexString()) }
|
||||
|
||||
val data = "94 9B 87 00 87 7F 9E D0 E5 6A F6 17 41 02 0C AA F3 AC C8 CF 4E C6 9D EC FA 6C BD F8 7C 4B A5 28 80 CC DE B5 0A 41 8E 63 CE 5E 30 D8 A6 83 92 0E 2E 5C 35 E5 6E 62 3D FE 17 DD 7C 47 9A AD EF F0 F7 2A 6F 21 32 99 1B 6D E1 DA BE 68 2F 26 A9 93 DE 1B 4F 11 F0 AF A1 06 7B 85 53 46 D2 A3 DD A6 BE F2 76 8A 61 BF 15 FD 17 C4 45 DB EC 05 51 56 46 63 48 87 49 79 0D 40 DF 9D D9 99 93 EC D0 44 7B 4A 79 EB BD 08 10 18 29 0E 85 EE 26 A0 CD 40 00 2F 3E ED F4 A4 C3 01 5E 82 F5 A8 02 FA 70 EB F2 07 AD FF 0E DA 08 7A 3A FE B6 F4 5D 98 18 F7 58 C2 19 21 AF 29 D2 95 16 CE C4 A3 5F B0 E6 23 C2 B2 C6 5F 03 42 C2 44 C2 B0 A0 3F 95 8E 89 EF FC EC E4 BF 03 CB DA 9C D3 84 3F 9B A0 F1 B4 14 6E 23 D5 74 79 6F 89 DA B8 33 DB EF 0B 21 E1 27 27 57 8B 56 CB D9 BF C2 A8 25 6E 48 23 EB 31 9D".hexToUBytes()
|
||||
|
||||
val d1 = TEACryptor.CRYPTOR_SHARE_KEY.decrypt(data.toByteArray())
|
||||
|
||||
ServerLoginResponseResendPacket(TEACryptor.decrypt(d1, tgtgtkey.toByteArray()).dataInputStream(), ServerLoginResponseResendPacket.Flag.`08 36 31 03`).let { it.decode();println(it._0836_tlv0006_encr.toUHexString()) }
|
||||
|
||||
}
|
@ -7,7 +7,7 @@ import net.mamoe.mirai.network.packet.server.readNBytes
|
||||
import net.mamoe.mirai.network.packet.server.readVarString
|
||||
import net.mamoe.mirai.util.TEACryptor
|
||||
import net.mamoe.mirai.util.hexToBytes
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import net.mamoe.mirai.util.toUHexString
|
||||
import java.io.DataInputStream
|
||||
|
||||
/**
|
||||
@ -41,7 +41,7 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream, val packetDataLen
|
||||
|
||||
//??
|
||||
var b = this.input.readNBytes(2)
|
||||
val msgLength = when (b.toUByteArray().toHexString()) {
|
||||
val msgLength = when (b.toUByteArray().toUHexString()) {
|
||||
"01 07" -> 0
|
||||
"00 33" -> 28
|
||||
"01 10" -> 65
|
||||
@ -99,7 +99,7 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream, val packetDataLen
|
||||
this.token38 = this.input.readNBytes(56)//82
|
||||
|
||||
this.input.skip(60L)//142
|
||||
val msgLength = when (val id = this.input.readNBytes(2).toUByteArray().toHexString()) {
|
||||
val msgLength = when (val id = this.input.readNBytes(2).toUByteArray().toUHexString()) {
|
||||
"01 07" -> 0
|
||||
"00 33" -> 28
|
||||
"01 10" -> 64
|
||||
@ -119,19 +119,19 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream, val packetDataLen
|
||||
}
|
||||
}
|
||||
|
||||
class ServerLoginResponseSuccessPacketEncrypted(input: DataInputStream, val length: Int) : ServerPacket(input) {
|
||||
class ServerLoginResponseSuccessPacketEncrypted(input: DataInputStream) : ServerPacket(input) {
|
||||
override fun decode() {
|
||||
|
||||
}
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun decrypt(tgtgtKey: ByteArray): ServerLoginResponseSuccessPacket {//todo test
|
||||
input.skip(7)
|
||||
var bytes = input.readAllBytes();
|
||||
bytes = bytes.copyOfRange(0, bytes.size - 1);
|
||||
println(bytes.toUByteArray().toHexString())
|
||||
fun decrypt(tgtgtKey: ByteArray): ServerLoginResponseSuccessPacket {
|
||||
input goto 14
|
||||
var bytes = input.readAllBytes()
|
||||
bytes = bytes.copyOfRange(0, bytes.size - 1)
|
||||
println(bytes.toUByteArray().toUHexString())
|
||||
|
||||
return ServerLoginResponseSuccessPacket(DataInputStream(TEACryptor.decrypt(bytes, Protocol.shareKey.hexToBytes()).inputStream()), length);
|
||||
return ServerLoginResponseSuccessPacket(DataInputStream(TEACryptor.decrypt(TEACryptor.decrypt(bytes, Protocol.shareKey.hexToBytes()), tgtgtKey).inputStream()), bytes.size);
|
||||
//TeaDecrypt(取文本中间(data, 43, 取文本长度(data) - 45), m_0828_rec_decr_key)
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ import net.mamoe.mirai.network.packet.server.ServerPacket
|
||||
import net.mamoe.mirai.network.packet.server.dataInputStream
|
||||
import net.mamoe.mirai.network.packet.server.goto
|
||||
import net.mamoe.mirai.util.TEACryptor
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import net.mamoe.mirai.util.toUHexString
|
||||
import java.io.DataInputStream
|
||||
|
||||
/**
|
||||
@ -31,7 +31,7 @@ class ServerLoginResponseVerificationCodePacket(input: DataInputStream, val pack
|
||||
this.input.skip(1)
|
||||
|
||||
val b = this.input.readByte()
|
||||
println(b.toHexString())
|
||||
println(b.toUHexString())
|
||||
|
||||
this.token00BA = this.input.goto(packetLength - 60).readNBytes(40)
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ import net.mamoe.mirai.network.packet.server.readIP
|
||||
import net.mamoe.mirai.util.TEACryptor
|
||||
import net.mamoe.mirai.util.getRandomKey
|
||||
import net.mamoe.mirai.util.hexToBytes
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import net.mamoe.mirai.util.toUHexString
|
||||
import java.io.DataInputStream
|
||||
|
||||
/**
|
||||
@ -48,7 +48,7 @@ class ServerTouchResponsePacket(inputStream: DataInputStream) : ServerPacket(inp
|
||||
}
|
||||
|
||||
else -> {
|
||||
throw IllegalStateException(arrayOf(id.toUByte()).toUByteArray().toHexString())
|
||||
throw IllegalStateException(arrayOf(id.toUByte()).toUByteArray().toUHexString())
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -64,7 +64,7 @@ class ServerTouchResponsePacketEncrypted(private val type: ServerTouchResponsePa
|
||||
input.skip(7)
|
||||
var bytes = input.readAllBytes();
|
||||
bytes = bytes.copyOfRange(0, bytes.size - 1);
|
||||
println(bytes.toUByteArray().toHexString())
|
||||
println(bytes.toUByteArray().toUHexString())
|
||||
|
||||
return ServerTouchResponsePacket(DataInputStream(TEACryptor.decrypt(bytes, when (type) {
|
||||
ServerTouchResponsePacket.Type.TYPE_08_25_31_02 -> Protocol.redirectionKey.hexToBytes()
|
||||
|
34
mirai-core/src/main/java/net/mamoe/mirai/util/DebugLogger.kt
Normal file
34
mirai-core/src/main/java/net/mamoe/mirai/util/DebugLogger.kt
Normal file
@ -0,0 +1,34 @@
|
||||
package net.mamoe.mirai.util
|
||||
|
||||
import net.mamoe.mirai.network.packet.client.ClientPacket
|
||||
import net.mamoe.mirai.network.packet.server.ServerPacket
|
||||
|
||||
/**
|
||||
* @author Him188moe
|
||||
*/
|
||||
object DebugLogger {
|
||||
val buff = StringBuilder()
|
||||
}
|
||||
|
||||
|
||||
fun ByteArray.encryptionDebugLogging() {
|
||||
DebugLogger.buff.append("TEA encrypt: " + this.toUHexString()).append("\n")
|
||||
}
|
||||
|
||||
fun ByteArray.packetSentDebugLogging() {
|
||||
DebugLogger.buff.append("packet sent: " + this.toUHexString()).append("\n")
|
||||
}
|
||||
|
||||
fun ByteArray.decryptionDebugLogging() {
|
||||
DebugLogger.buff.append("TEA decrypted: " + this.toUHexString()).append("\n")
|
||||
}
|
||||
|
||||
fun ServerPacket.logging() {
|
||||
DebugLogger.buff.append(this.toString())
|
||||
|
||||
}
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun ClientPacket.logging() {
|
||||
DebugLogger.buff.append(this.toString())
|
||||
}
|
@ -239,11 +239,13 @@ public class TEACryptor {
|
||||
}
|
||||
|
||||
public byte[] encrypt(byte[] plaintext) {
|
||||
DebugLoggerKt.encryptionDebugLogging(plaintext);
|
||||
System.out.println("TEA加密, 原文=" + UtilsKt.toUHexString(plaintext));
|
||||
return encrypt(plaintext, 0, plaintext.length);
|
||||
}
|
||||
|
||||
public byte[] decrypt(byte[] ciphertext) {
|
||||
DebugLoggerKt.decryptionDebugLogging(ciphertext);
|
||||
return decrypt(ciphertext, 0, ciphertext.length);
|
||||
}
|
||||
}
|
6
mirai-core/src/main/java/net/mamoe/mirai/util/Tested.kt
Normal file
6
mirai-core/src/main/java/net/mamoe/mirai/util/Tested.kt
Normal file
@ -0,0 +1,6 @@
|
||||
package net.mamoe.mirai.util
|
||||
|
||||
/**
|
||||
* @author Him188moe
|
||||
*/
|
||||
annotation class TestedSuccessfully
|
@ -32,20 +32,23 @@ object Utils {
|
||||
fun ByteArray.toHexString(): String = toHexString(" ")
|
||||
fun ByteArray.toHexString(separator: String = " "): String = Utils.toHexString(this, separator)
|
||||
@ExperimentalUnsignedTypes
|
||||
fun ByteArray.toUHexString(separator: String = " "): String = this.toUByteArray().toHexString(separator)
|
||||
fun ByteArray.toUHexString(separator: String = " "): String = this.toUByteArray().toUHexString(separator)
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun ByteArray.toUHexString(): String = this.toUByteArray().toHexString()
|
||||
fun ByteArray.toUHexString(): String = this.toUByteArray().toUHexString()
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun UByteArray.toHexString(separator: String = " "): String = Utils.toHexString(this, separator)
|
||||
fun UByteArray.toUHexString(separator: String = " "): String = Utils.toHexString(this, separator)
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun UByteArray.toHexString(): String = toHexString(" ")
|
||||
fun UByteArray.toUHexString(): String = this.toUHexString(" ")
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun Byte.toHexString(): String = this.toUByte().toString(16)
|
||||
fun Byte.toUHexString(): String = this.toUByte().toString(16)
|
||||
|
||||
/**
|
||||
* firstly [Protocol.hexToUBytes], secondly [UByteArray.toByteArray]
|
||||
*/
|
||||
@ExperimentalUnsignedTypes
|
||||
fun String.hexToBytes(): ByteArray = Protocol.hexToBytes(this)
|
||||
|
||||
@ -55,6 +58,9 @@ fun String.hexToUBytes(): UByteArray = Protocol.hexToUBytes(this)
|
||||
@ExperimentalUnsignedTypes
|
||||
fun String.hexToShort(): Short = hexToBytes().let { ((it[1].toInt() shl 8) + it[0]).toShort() }
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun String.hexToInt(): Int = hexToBytes().let { ((it[3].toInt() shl 24) + (it[2].toInt() shl 16) + (it[1].toInt() shl 8) + it[0]) }
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun String.hexToByte(): Byte = hexToBytes()[0]
|
||||
|
||||
|
@ -1,456 +0,0 @@
|
||||
package net.mamoe.mirai.util;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* 加密解密QQ消息的工具类. QQ消息的加密算法是一个16次的迭代过程,并且是反馈的,每一个加密单元是8字节,输出也是8字节,密钥是16字节
|
||||
* 我们以prePlain表示前一个明文块,plain表示当前明文块,crypt表示当前明文块加密得到的密文块,preCrypt表示前一个密文块
|
||||
* f表示加密算法,d表示解密算法 那么从plain得到crypt的过程是: crypt = f(plain ˆ preCrypt) ˆ
|
||||
* prePlain 所以,从crypt得到plain的过程自然是 plain = d(crypt ˆ prePlain) ˆ
|
||||
* preCrypt 此外,算法有它的填充机制,其会在明文前和明文后分别填充一定的字节数,以保证明文长度是8字节的倍数
|
||||
* 填充的字节数与原始明文长度有关,填充的方法是:
|
||||
*
|
||||
* <pre>
|
||||
* <code>
|
||||
*
|
||||
* ------- 消息填充算法 -----------
|
||||
* a = (明文长度 + 10) mod 8
|
||||
* if(a 不等于 0) a = 8 - a;
|
||||
* b = 随机数 & 0xF8 | a; 这个的作用是把a的值保存了下来
|
||||
* plain[0] = b; 然后把b做为明文的第0个字节,这样第0个字节就保存了a的信息,这个信息在解密时就要用来找到真正明文的起始位置
|
||||
* plain[1 至 a+2] = 随机数 & 0xFF; 这里用随机数填充明文的第1到第a+2个字节
|
||||
* plain[a+3 至 a+3+明文长度-1] = 明文; 从a+3字节开始才是真正的明文
|
||||
* plain[a+3+明文长度, 最后] = 0; 在最后,填充0,填充到总长度为8的整数为止。到此为止,结束了,这就是最后得到的要加密的明文内容
|
||||
* ------- 消息填充算法 ------------
|
||||
*
|
||||
* </code>
|
||||
* </pre>
|
||||
*
|
||||
* @author b
|
||||
* @author luma
|
||||
* @author notXX
|
||||
*/
|
||||
final class _TEAEncryption {
|
||||
// 指向当前的明文块
|
||||
private byte[] plain;
|
||||
// 这指向前面一个明文块
|
||||
private byte[] prePlain;
|
||||
// 输出的密文或者明文
|
||||
private byte[] out;
|
||||
// 当前加密的密文位置和上一次加密的密文块位置,他们相差8
|
||||
private int crypt, preCrypt;
|
||||
// 当前处理的加密解密块的位置
|
||||
private int pos;
|
||||
// 填充数
|
||||
private int padding;
|
||||
// 密钥
|
||||
private byte[] key;
|
||||
// 用于加密时,表示当前是否是第一个8字节块,因为加密算法是反馈的
|
||||
// 但是最开始的8个字节没有反馈可用,所有需要标明这种情况
|
||||
private boolean header = true;
|
||||
// 这个表示当前解密开始的位置,之所以要这么一个变量是为了避免当解密到最后时
|
||||
// 后面已经没有数据,这时候就会出错,这个变量就是用来判断这种情况免得出错
|
||||
private int contextStart;
|
||||
// 随机数对象
|
||||
private static Random random = new Random();
|
||||
// 字节输出流
|
||||
private ByteArrayOutputStream baos;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*/
|
||||
public _TEAEncryption() {
|
||||
baos = new ByteArrayOutputStream(8);
|
||||
}
|
||||
|
||||
/**
|
||||
* 把字节数组从offset开始的len个字节转换成一个unsigned int, 因为java里面没有unsigned,所以unsigned
|
||||
* int使用long表示的, 如果len大于8,则认为len等于8。如果len小于8,则高位填0 <br>
|
||||
* (edited by notxx) 改变了算法, 性能稍微好一点. 在我的机器上测试10000次, 原始算法花费18s, 这个算法花费12s.
|
||||
*
|
||||
* @param in 字节数组.
|
||||
* @param offset 从哪里开始转换.
|
||||
* @param len 转换长度, 如果len超过8则忽略后面的
|
||||
* @return
|
||||
*/
|
||||
private static long getUnsignedInt(byte[] in, int offset, int len) {
|
||||
long ret = 0;
|
||||
int end = 0;
|
||||
if (len > 8)
|
||||
end = offset + 8;
|
||||
else
|
||||
end = offset + len;
|
||||
for (int i = offset; i < end; i++) {
|
||||
ret <<= 8;
|
||||
ret |= in[i] & 0xff;
|
||||
}
|
||||
return (ret & 0xffffffffL) | (ret >>> 32);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密
|
||||
*
|
||||
* @param in 密文
|
||||
* @param offset 密文开始的位置
|
||||
* @param len 密文长度
|
||||
* @param k 密钥
|
||||
* @return 明文
|
||||
*/
|
||||
public byte[] decrypt(byte[] in, int offset, int len, byte[] k) {
|
||||
// 检查密钥
|
||||
if (k == null)
|
||||
return null;
|
||||
|
||||
crypt = preCrypt = 0;
|
||||
this.key = k;
|
||||
int count;
|
||||
byte[] m = new byte[offset + 8];
|
||||
|
||||
// 因为QQ消息加密之后至少是16字节,并且肯定是8的倍数,这里检查这种情况
|
||||
if ((len % 8 != 0) || (len < 16)) return null;
|
||||
// 得到消息的头部,关键是得到真正明文开始的位置,这个信息存在第一个字节里面,所以其用解密得到的第一个字节与7做与
|
||||
prePlain = decipher(in, offset);
|
||||
pos = prePlain[0] & 0x7;
|
||||
// 得到真正明文的长度
|
||||
count = len - pos - 10;
|
||||
// 如果明文长度小于0,那肯定是出错了,比如传输错误之类的,返回
|
||||
if (count < 0) return null;
|
||||
|
||||
// 这个是临时的preCrypt,和加密时第一个8字节块没有prePlain一样,解密时
|
||||
// 第一个8字节块也没有preCrypt,所有这里建一个全0的
|
||||
for (int i = offset; i < m.length; i++)
|
||||
m[i] = 0;
|
||||
// 通过了上面的代码,密文应该是没有问题了,我们分配输出缓冲区
|
||||
out = new byte[count];
|
||||
// 设置preCrypt的位置等于0,注意目前的preCrypt位置是指向m的,因为java没有指针,所以我们在后面要控制当前密文buf的引用
|
||||
preCrypt = 0;
|
||||
// 当前的密文位置,为什么是8不是0呢?注意前面我们已经解密了头部信息了,现在当然该8了
|
||||
crypt = 8;
|
||||
// 自然这个也是8
|
||||
contextStart = 8;
|
||||
// 加1,和加密算法是对应的
|
||||
pos++;
|
||||
|
||||
// 开始跳过头部,如果在这个过程中满了8字节,则解密下一块
|
||||
// 因为是解密下一块,所以我们有一个语句 m = in,下一块当然有preCrypt了,我们不再用m了
|
||||
// 但是如果不满8,这说明了什么?说明了头8个字节的密文是包含了明文信息的,当然还是要用m把明文弄出来
|
||||
// 所以,很显然,满了8的话,说明了头8个字节的密文除了一个长度信息有用之外,其他都是无用的填充
|
||||
padding = 1;
|
||||
while (padding <= 2) {
|
||||
if (pos < 8) {
|
||||
pos++;
|
||||
padding++;
|
||||
}
|
||||
if (pos == 8) {
|
||||
m = in;
|
||||
if (!decrypt8Bytes(in, offset, len)) return null;
|
||||
}
|
||||
}
|
||||
|
||||
// 这里是解密的重要阶段,这个时候头部的填充都已经跳过了,开始解密
|
||||
// 注意如果上面一个while没有满8,这里第一个if里面用的就是原始的m,否则这个m就是in了
|
||||
int i = 0;
|
||||
while (count != 0) {
|
||||
if (pos < 8) {
|
||||
out[i] = (byte) (m[offset + preCrypt + pos] ^ prePlain[pos]);
|
||||
i++;
|
||||
count--;
|
||||
pos++;
|
||||
}
|
||||
if (pos == 8) {
|
||||
m = in;
|
||||
preCrypt = crypt - 8;
|
||||
if (!decrypt8Bytes(in, offset, len))
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// 最后的解密部分,上面一个while已经把明文都解出来了,就剩下尾部的填充了,应该全是0
|
||||
// 所以这里有检查是否解密了之后是不是0,如果不是的话那肯定出错了,返回null
|
||||
for (padding = 1; padding < 8; padding++) {
|
||||
if (pos < 8) {
|
||||
if ((m[offset + preCrypt + pos] ^ prePlain[pos]) != 0)
|
||||
return null;
|
||||
pos++;
|
||||
}
|
||||
if (pos == 8) {
|
||||
m = in;
|
||||
preCrypt = crypt;
|
||||
if (!decrypt8Bytes(in, offset, len))
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param in 需要被解密的密文
|
||||
* @param k 密钥
|
||||
* @return Message 已解密的消息
|
||||
* @paraminLen 密文长度
|
||||
*/
|
||||
public byte[] decrypt(byte[] in, byte[] k) {
|
||||
return decrypt(in, 0, in.length, k);
|
||||
}
|
||||
|
||||
/**
|
||||
* 加密
|
||||
*
|
||||
* @param in 明文字节数组
|
||||
* @param offset 开始加密的偏移
|
||||
* @param len 加密长度
|
||||
* @param k 密钥
|
||||
* @return 密文字节数组
|
||||
*/
|
||||
public byte[] encrypt(byte[] in, int offset, int len, byte[] k) {
|
||||
// 检查密钥
|
||||
if (k == null)
|
||||
return in;
|
||||
|
||||
plain = new byte[8];
|
||||
prePlain = new byte[8];
|
||||
pos = 1;
|
||||
padding = 0;
|
||||
crypt = preCrypt = 0;
|
||||
this.key = k;
|
||||
header = true;
|
||||
|
||||
// 计算头部填充字节数
|
||||
pos = (len + 0x0A) % 8;
|
||||
if (pos != 0)
|
||||
pos = 8 - pos;
|
||||
// 计算输出的密文长度
|
||||
out = new byte[len + pos + 10];
|
||||
// 这里的操作把pos存到了plain的第一个字节里面
|
||||
// 0xF8后面三位是空的,正好留给pos,因为pos是0到7的值,表示文本开始的字节位置
|
||||
plain[0] = (byte) ((rand() & 0xF8) | pos);
|
||||
|
||||
// 这里用随机产生的数填充plain[1]到plain[pos]之间的内容
|
||||
for (int i = 1; i <= pos; i++)
|
||||
plain[i] = (byte) (rand() & 0xFF);
|
||||
pos++;
|
||||
// 这个就是prePlain,第一个8字节块当然没有prePlain,所以我们做一个全0的给第一个8字节块
|
||||
for (int i = 0; i < 8; i++)
|
||||
prePlain[i] = 0x0;
|
||||
|
||||
// 继续填充2个字节的随机数,这个过程中如果满了8字节就加密之
|
||||
padding = 1;
|
||||
while (padding <= 2) {
|
||||
if (pos < 8) {
|
||||
plain[pos++] = (byte) (rand() & 0xFF);
|
||||
padding++;
|
||||
}
|
||||
if (pos == 8)
|
||||
encrypt8Bytes();
|
||||
}
|
||||
|
||||
// 头部填充完了,这里开始填真正的明文了,也是满了8字节就加密,一直到明文读完
|
||||
int i = offset;
|
||||
while (len > 0) {
|
||||
if (pos < 8) {
|
||||
plain[pos++] = in[i++];
|
||||
len--;
|
||||
}
|
||||
if (pos == 8)
|
||||
encrypt8Bytes();
|
||||
}
|
||||
|
||||
// 最后填上0,以保证是8字节的倍数
|
||||
padding = 1;
|
||||
while (padding <= 7) {
|
||||
if (pos < 8) {
|
||||
plain[pos++] = 0x0;
|
||||
padding++;
|
||||
}
|
||||
if (pos == 8)
|
||||
encrypt8Bytes();
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param in 需要加密的明文
|
||||
* @param k 密钥
|
||||
* @return Message 密文
|
||||
* @paraminLen 明文长度
|
||||
*/
|
||||
public byte[] encrypt(byte[] in, byte[] k) {
|
||||
return encrypt(in, 0, in.length, k);
|
||||
}
|
||||
|
||||
/**
|
||||
* 加密一个8字节块
|
||||
*
|
||||
* @param in 明文字节数组
|
||||
* @return 密文字节数组
|
||||
*/
|
||||
private byte[] encipher(byte[] in) {
|
||||
// 迭代次数,16次
|
||||
int loop = 0x10;
|
||||
// 得到明文和密钥的各个部分,注意java没有无符号类型,所以为了表示一个无符号的整数
|
||||
// 我们用了long,这个long的前32位是全0的,我们通过这种方式模拟无符号整数,后面用到的long也都是一样的
|
||||
// 而且为了保证前32位为0,需要和0xFFFFFFFF做一下位与
|
||||
long y = getUnsignedInt(in, 0, 4);
|
||||
long z = getUnsignedInt(in, 4, 4);
|
||||
long a = getUnsignedInt(key, 0, 4);
|
||||
long b = getUnsignedInt(key, 4, 4);
|
||||
long c = getUnsignedInt(key, 8, 4);
|
||||
long d = getUnsignedInt(key, 12, 4);
|
||||
// 这是算法的一些控制变量,为什么delta是0x9E3779B9呢?
|
||||
// 这个数是TEA算法的delta,实际是就是(sqr(5) - 1) * 2^31 (根号5,减1,再乘2的31次方)
|
||||
long sum = 0;
|
||||
long delta = 0x9E3779B9;
|
||||
delta &= 0xFFFFFFFFL;
|
||||
|
||||
// 开始迭代了,乱七八糟的,我也看不懂,反正和DES之类的差不多,都是这样倒来倒去
|
||||
while (loop-- > 0) {
|
||||
sum += delta;
|
||||
sum &= 0xFFFFFFFFL;
|
||||
y += ((z << 4) + a) ^ (z + sum) ^ ((z >>> 5) + b);
|
||||
y &= 0xFFFFFFFFL;
|
||||
z += ((y << 4) + c) ^ (y + sum) ^ ((y >>> 5) + d);
|
||||
z &= 0xFFFFFFFFL;
|
||||
}
|
||||
|
||||
// 最后,我们输出密文,因为我用的long,所以需要强制转换一下变成int
|
||||
baos.reset();
|
||||
writeInt((int) y);
|
||||
writeInt((int) z);
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密从offset开始的8字节密文
|
||||
*
|
||||
* @param in 密文字节数组
|
||||
* @param offset 密文开始位置
|
||||
* @return 明文
|
||||
*/
|
||||
private byte[] decipher(byte[] in, int offset) {
|
||||
// 迭代次数,16次
|
||||
int loop = 0x10;
|
||||
// 得到密文和密钥的各个部分,注意java没有无符号类型,所以为了表示一个无符号的整数
|
||||
// 我们用了long,这个long的前32位是全0的,我们通过这种方式模拟无符号整数,后面用到的long也都是一样的
|
||||
// 而且为了保证前32位为0,需要和0xFFFFFFFF做一下位与
|
||||
long y = getUnsignedInt(in, offset, 4);
|
||||
long z = getUnsignedInt(in, offset + 4, 4);
|
||||
long a = getUnsignedInt(key, 0, 4);
|
||||
long b = getUnsignedInt(key, 4, 4);
|
||||
long c = getUnsignedInt(key, 8, 4);
|
||||
long d = getUnsignedInt(key, 12, 4);
|
||||
// 算法的一些控制变量,sum在这里也有数了,这个sum和迭代次数有关系
|
||||
// 因为delta是这么多,所以sum如果是这么多的话,迭代的时候减减减,减16次,最后
|
||||
// 得到0。反正这就是为了得到和加密时相反顺序的控制变量,这样才能解密呀~~
|
||||
long sum = 0xE3779B90;
|
||||
sum &= 0xFFFFFFFFL;
|
||||
long delta = 0x9E3779B9;
|
||||
delta &= 0xFFFFFFFFL;
|
||||
|
||||
// 迭代开始了, @_@
|
||||
while (loop-- > 0) {
|
||||
z -= ((y << 4) + c) ^ (y + sum) ^ ((y >>> 5) + d);
|
||||
z &= 0xFFFFFFFFL;
|
||||
y -= ((z << 4) + a) ^ (z + sum) ^ ((z >>> 5) + b);
|
||||
y &= 0xFFFFFFFFL;
|
||||
sum -= delta;
|
||||
sum &= 0xFFFFFFFFL;
|
||||
}
|
||||
|
||||
baos.reset();
|
||||
writeInt((int) y);
|
||||
writeInt((int) z);
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入一个整型到输出流,高字节优先
|
||||
*
|
||||
* @param t
|
||||
*/
|
||||
private void writeInt(int t) {
|
||||
baos.write(t >>> 24);
|
||||
baos.write(t >>> 16);
|
||||
baos.write(t >>> 8);
|
||||
baos.write(t);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密
|
||||
*
|
||||
* @param in 密文
|
||||
* @return 明文
|
||||
*/
|
||||
private byte[] decipher(byte[] in) {
|
||||
return decipher(in, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 加密8字节
|
||||
*/
|
||||
private void encrypt8Bytes() {
|
||||
// 这部分完成我上面所说的 plain ^ preCrypt,注意这里判断了是不是第一个8字节块,如果是的话,那个prePlain就当作preCrypt用
|
||||
for (pos = 0; pos < 8; pos++) {
|
||||
if (header)
|
||||
plain[pos] ^= prePlain[pos];
|
||||
else
|
||||
plain[pos] ^= out[preCrypt + pos];
|
||||
}
|
||||
// 这个完成我上面说的 f(plain ^ preCrypt)
|
||||
byte[] crypted = encipher(plain);
|
||||
// 这个没什么,就是拷贝一下,java不像c,所以我只好这么干,c就不用这一步了
|
||||
System.arraycopy(crypted, 0, out, crypt, 8);
|
||||
|
||||
// 这个完成了 f(plain ^ preCrypt) ^ prePlain,ok,下面拷贝一下就行了
|
||||
for (pos = 0; pos < 8; pos++)
|
||||
out[crypt + pos] ^= prePlain[pos];
|
||||
System.arraycopy(plain, 0, prePlain, 0, 8);
|
||||
|
||||
// 完成了加密,现在是调整crypt,preCrypt等等东西的时候了
|
||||
preCrypt = crypt;
|
||||
crypt += 8;
|
||||
pos = 0;
|
||||
header = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密8个字节
|
||||
*
|
||||
* @param in 密文字节数组
|
||||
* @param offset 从何处开始解密
|
||||
* @param len 密文的长度
|
||||
* @return true表示解密成功
|
||||
*/
|
||||
private boolean decrypt8Bytes(byte[] in, int offset, int len) {
|
||||
// 这里第一步就是判断后面还有没有数据,没有就返回,如果有,就执行 crypt ^ prePlain
|
||||
for (pos = 0; pos < 8; pos++) {
|
||||
if (contextStart + pos >= len)
|
||||
return true;
|
||||
prePlain[pos] ^= in[offset + crypt + pos];
|
||||
}
|
||||
|
||||
// 好,这里执行到了 d(crypt ^ prePlain)
|
||||
prePlain = decipher(prePlain);
|
||||
if (prePlain == null)
|
||||
return false;
|
||||
|
||||
// 解密完成,最后一步好像没做?
|
||||
// 这里最后一步放到decrypt里面去做了,因为解密的步骤有点不太一样
|
||||
// 调整这些变量的值先
|
||||
contextStart += 8;
|
||||
crypt += 8;
|
||||
pos = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 这是个随机因子产生器,用来填充头部的,如果为了调试,可以用一个固定值
|
||||
* 随机因子可以使相同的明文每次加密出来的密文都不一样
|
||||
*
|
||||
* @return 随机因子
|
||||
*/
|
||||
private int rand() {
|
||||
return random.nextInt();
|
||||
}
|
||||
}
|
@ -173,17 +173,19 @@ public class HexComparator {
|
||||
public static void main(String[] args) {
|
||||
System.out.println(HexComparator.compare(
|
||||
//mirai
|
||||
"01 12 00 38 D7 B4 57 68 68 BA 91 9D 2C 6F F0 B8 1A 77 4A DC 10 FE 74 E6 03 CE EA 90 5A 43 FD 19 21 94 EF 41 C3 2B 48 B7 91 70 DD AE 47 EA C7 EC 69 5A 6D 16 3B CA E8 DC 82 81 24 74 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 78 F4 FC F9 F2 B0 04 32 4A 01 F7 0B 23 7A 5E 30 E9 42 83 89 C4 D2 7A F7 7D 6E 71 FF FC 97 81 3A FC 11 75 3B D6 7C E8 C2 04 3E CD B1 34 57 C3 B4 AF 40 87 BD 06 18 7F 7B E8 8E F5 42 0F A8 A8 87 44 3A A5 51 69 61 F1 12 F4 94 DE BA 37 D9 50 5C 03 ED CB DE 6E 68 B4 DE 79 6E BF A9 07 D2 E5 56 7A AF 35 12 00 0C 4D 9D F4 E5 0C 36 9C 5C 5A CE F7 2D 95 28 82 8A FC E5 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 56 5C 1A 38 F9 6A 88 F8 34 EF 68 FC 83 9D 61 9B 7A 07 F6 37 CD 1E C4 9A C9 B2 81 B3 F5 67 C4 74 63 23 30 64 E8 32 6F BD 35 14 0D 75 2D DF 0F 38 80 D3 3C 11 0D 1B 74 EF C8 6D 54 42 E7 DB 94 B9 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 01 10 00 3C 00 01 00 38 E0 65 0C 69 9A EE D9 90 CE 5D AF 23 6B 49 03 0D 98 47 25 3F B5 BD 88 BB 54 50 72 E0 37 8E 66 ED A6 37 18 77 71 5D 66 A6 A3 CD A5 BC 9B CD 87 42 DB 41 59 3E 54 A7 90 DC 03 12 00 05 01 00 00 00 01 05 08 00 05 10 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 32 8C B5 CB 10 2E 0A 31 F2 EB 6D FC 13 CB 14 83 31 CD 75 C6"
|
||||
|
||||
"01 12 00 38 56 3A E4 8B B4 64 D2 72 60 FE 01 54 FC B1 5F 88 E0 BA 64 1A 55 F2 84 FC 97 D0 BF 5F 47 A8 D9 76 BB FB 4A 7A F3 5E 0E A4 8E CA 8F 27 C2 02 6E 5D E7 68 9F 7C CF 91 83 F4 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 0D DF 92 9C 5A 08 D1 67 FD 7D D6 DE CE D0 92 39 79 17 53 57 41 9B D6 D3 F9 F8 9A 3B E1 C2 3A E7 CF 02 6E 5E 36 B7 6D CF 33 66 77 FE AC 58 93 A3 85 E7 AF 6F 2D A2 74 E2 60 28 4B 29 17 04 79 95 39 D4 BF 4D C1 ED 61 49 13 23 9D 71 62 29 AF 87 D7 E3 42 49 88 3F D8 5C DB 9F 9E 5A 2A EA 02 F6 4F 2B D3 5B AF BE 0C B2 54 46 AE 99 1B 07 0B BE 6A C2 29 18 25 6A 95 0A 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 E2 9A D0 B3 7D CD 3D F4 55 DB 04 A4 68 2A AF 4E 38 46 8B E0 1F 2D 2A B8 F6 C6 AB 4F DF D1 5F 8C D4 CA 2A 91 25 14 33 A3 C5 08 F8 01 4C E6 3D 89 5F 23 38 3A EC 01 58 F6 B1 F6 7F 2E 6A 02 17 4A 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 01 10 00 3C 00 01 00 38 57 3A 37 C3 FB A0 C3 E5 AE F3 0E B6 03 DE BF 9E E2 B5 C5 FE A0 F0 03 4F F7 8A 5C 29 5C E0 5A A2 89 D5 3F 60 E2 B2 81 FE D4 16 04 D4 E3 C6 4A D7 A9 D9 E6 FC 2E 7E 0C F3 03 12 00 05 01 00 00 00 01 05 08 00 05 10 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 10 21 DF C4 F3 DD 42 09 6F A0 93 8C 7E 0E 78 EF 22 8D 88 35"
|
||||
,
|
||||
//e
|
||||
"01 12 00 38 D5 CC FC 5E BF 39 4C 07 7F FF AE 3C C2 10 E0 0E 3D C1 7B 6C 1C 58 9C 97 AB DE DC 4C B7 8E AB DA 77 BE 5F AD 8D 3C EA 7D B8 3D 5E B3 5B 6B DD 32 E6 A5 0C 6F B7 93 E4 C3 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 64 5C 48 D5 BF 98 6A 81 8F B5 09 DA A5 83 0E 45 BB 99 9B 03 42 2A 87 95 48 88 52 0D 5F 0B C1 4D A7 5F BF 60 4F 3D A1 04 D3 B4 E4 D2 45 71 5C 74 95 80 86 45 E0 26 EA B2 B1 09 0B 56 22 68 7C 5D 8D 9E 69 E4 C5 4E 0C EA F5 6F 90 FF 4B 43 43 EB 4F 76 45 70 DA 12 C7 1E A5 14 B8 5B 78 79 75 5E 2C F3 5D 1A C4 39 D5 AE 1A 70 EC AF A1 F5 FF D6 D3 B9 C6 DA 71 7E 15 52 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 9D AB 45 74 6A E5 3F E2 8E 81 16 6C BB FA 0D A1 37 28 2F B9 02 3D EB 07 C7 ED 95 99 F9 35 27 35 58 67 4A FA 6E E4 89 37 8A 00 3B 19 C5 15 7E F6 83 D5 CF 66 9C FD 10 9F 27 90 31 3B 2E 98 F9 4C 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 01 10 00 3C 00 01 00 38 3A 51 49 BC 3C 44 78 A1 A7 6D B7 98 03 05 9F 42 E1 15 E5 53 0C C1 03 82 5E AE AD FC 44 C6 E9 85 66 51 F2 E2 67 B4 60 DC 89 EC E4 56 13 52 E6 AA C4 5A D1 FA 3D E7 10 92 03 12 00 05 01 00 00 00 01 05 08 00 05 01 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 D5 4E 31 3E 5E B3 28 6C 94 FB 25 CA E8 C4 A4 28 09 02 B2 58"
|
||||
"01 12 00 38 56 3A E4 8B B4 64 D2 72 60 FE 01 54 FC B1 5F 88 E0 BA 64 1A 55 F2 84 FC 97 D0 BF 5F 47 A8 D9 76 BB FB 4A 7A F3 5E 0E A4 8E CA 8F 27 C2 02 6E 5D E7 68 9F 7C CF 91 83 F4 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 0D DF 92 9C 5A 08 D1 67 FD 7D D6 DE CE D0 92 39 79 17 53 57 41 9B D6 D3 F9 F8 9A 3B E1 C2 3A E7 CF 02 6E 5E 36 B7 6D CF 33 66 77 FE AC 58 93 A3 85 E7 AF 6F 2D A2 74 E2 60 28 4B 29 17 04 79 95 39 D4 BF 4D C1 ED 61 49 13 23 9D 71 62 29 AF 87 D7 E3 42 49 88 3F D8 5C DB 9F 9E 5A 2A EA 02 F6 4F 2B D3 5B AF BE 0C B2 54 46 AE 99 1B 07 0B BE 6A C2 29 18 25 6A 95 0A 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 26 2B FE EB 21 8E 08 16 BA 42 B3 A3 C5 6A 5B 31 33 A9 B3 F0 EB 16 80 BE F0 58 D3 51 98 2F A7 23 27 7C 06 97 F4 85 01 77 5C 5B D6 A2 82 54 06 A0 07 53 39 E2 E7 62 E5 09 1A 25 79 6F D9 E0 ED B6 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 01 10 00 3C 00 01 00 38 57 3A 37 C3 FB A0 C3 E5 AE F3 0E B6 03 DE BF 9E E2 B5 C5 FE A0 F0 03 4F F7 8A 5C 29 5C E0 5A A2 89 D5 3F 60 E2 B2 81 FE D4 16 04 D4 E3 C6 4A D7 A9 D9 E6 FC 2E 7E 0C F3 03 12 00 05 01 00 00 00 01 05 08 00 05 01 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 4C 97 73 32 83 1A 6F C4 94 91 0A 7A D8 21 81 58 73 3D 24 F6"
|
||||
));
|
||||
|
||||
/*
|
||||
System.out.println(HexComparator.compare(
|
||||
//e
|
||||
"90 5E 39 DF 00 02 76 E4 B8 DD 00 00 04 53 00 00 00 01 00 00 15 85 00 00 01 55 35 05 8E C9 BA 16 D0 01 63 5B 59 4B 59 52 31 01 B9 00 00 00 00 00 00 00 00 00 00 00 00 00 7B 7B 7B 7B 00 00 00 00 00 00 00 00 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B AA BB CC DD EE FF AA BB CC",
|
||||
//mirai
|
||||
"6F 0B DF 92 00 02 76 E4 B8 DD 00 00 04 53 00 00 00 01 00 00 15 85 00 00 01 55 35 05 8E C9 BA 16 D0 01 63 5B 59 4B 59 52 31 01 B9 00 00 00 00 00 00 00 00 00 00 00 00 00 E9 E9 E9 E9 00 00 00 00 00 00 00 00 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B AA BB CC DD EE FF AA BB CC\n\n\n"
|
||||
));
|
||||
));*/
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,5 @@
|
||||
import net.mamoe.mirai.network.packet.client.login.ClientPasswordSubmissionPacket
|
||||
import net.mamoe.mirai.network.packet.server.login.ServerLoginResponseVerificationCodePacket
|
||||
import net.mamoe.mirai.util.hexToBytes
|
||||
import net.mamoe.mirai.util.toHexString
|
||||
import java.io.DataInputStream
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import net.mamoe.mirai.util.toUHexString
|
||||
|
||||
@ExperimentalUnsignedTypes
|
||||
fun main(){
|
||||
@ -13,8 +8,8 @@ fun main(){
|
||||
val s = DataInputStream(data.hexToBytes().inputStream())
|
||||
val packet = ServerTouchResponsePacket(ServerTouchResponsePacket.Type.TYPE_08_25_31_01, s)
|
||||
packet.decode()
|
||||
System.out.println(packet.token.toUByteArray().toHexString(" "))
|
||||
System.out.println(packet.loginTime.toHexString(" "))
|
||||
System.out.println(packet.token.toUByteArray().toUHexString(" "))
|
||||
System.out.println(packet.loginTime.toUHexString(" "))
|
||||
System.out.println(packet.loginIP)
|
||||
*/
|
||||
|
||||
@ -25,10 +20,10 @@ fun main(){
|
||||
val s = DataInputStream(data.hexToBytes().inputStream())
|
||||
val packet = ServerLoginResponseSuccessPacket(s,(data.length+1)/3)
|
||||
packet.decode()
|
||||
System.out.println("0828key: \n" + packet._0828_rec_decr_key.toUByteArray().toHexString(" "))
|
||||
System.out.println("token88: \n" + packet.token88.toUByteArray().toHexString(" "))
|
||||
System.out.println("token38: \n" + packet.token38.toUByteArray().toHexString(" "))
|
||||
System.out.println("enckey: \n" + packet.encryptionKey.toUByteArray().toHexString(" "))
|
||||
System.out.println("0828key: \n" + packet._0828_rec_decr_key.toUByteArray().toUHexString(" "))
|
||||
System.out.println("token88: \n" + packet.token88.toUByteArray().toUHexString(" "))
|
||||
System.out.println("token38: \n" + packet.token38.toUByteArray().toUHexString(" "))
|
||||
System.out.println("enckey: \n" + packet.encryptionKey.toUByteArray().toUHexString(" "))
|
||||
System.out.println("nick: " + packet.nick)
|
||||
System.out.println("age: " + packet.age)
|
||||
System.out.println("gender: " + packet.gender)
|
||||
@ -39,8 +34,8 @@ fun main(){
|
||||
val s = DataInputStream(data.hexToBytes().inputStream())
|
||||
val packet = ServerLoginResponseVerificationCodePacket(s,(data.length+1)/3)
|
||||
packet.decode()
|
||||
println(packet.token00BA.toUByteArray().toHexString(" "))
|
||||
println(packet.verifyCode.toUByteArray().toHexString(" "))
|
||||
println(packet.token00BA.toUByteArray().toUHexString(" "))
|
||||
println(packet.verifyCode.toUByteArray().toUHexString(" "))
|
||||
println(packet.verifyCodeLength)
|
||||
|
||||
File(System.getProperty("user.dir") + "/5.png").createNewFile()
|
||||
@ -48,5 +43,5 @@ fun main(){
|
||||
*/
|
||||
|
||||
val packet = ClientPasswordSubmissionPacket(1994701021,"xiaoqqq",131513,"123.123.123.123","tgtgtKey".toByteArray(),"".toByteArray())
|
||||
packet.encodeToByteArray().toUByteArray().toHexString(" ")
|
||||
packet.encodeToByteArray().toUByteArray().toUHexString(" ")
|
||||
}
|
81
mirai-core/src/test/java/data.txxt
Normal file
81
mirai-core/src/test/java/data.txxt
Normal file
@ -0,0 +1,81 @@
|
||||
TEA 加密, 内容=78 69 61 6F 71 71 71 00
|
||||
serverip = 61.151.180.143
|
||||
TEA 加密, 内容=00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 03 09 00 08 00 01 3D 97 B4 8F 00 02 00 36 00 12 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 14 00 1D 01 02 00 19 02 6D 28 41 D2 A5 6F D2 FC 3E 2A 1F 03 75 DE 6E 28 8F A8 19 3E 5F 16 49 D3
|
||||
paccket sent: 02 37 13 08 25 31 01 76 E4 B8 DD 03 00 00 00 01 2E 01 00 00 68 52 00 00 00 00 A4 F1 91 88 C9 82 14 99 0C 9E 56 55 91 23 C8 3D A5 23 FD 2A C0 51 40 D7 AF F9 12 90 6A 87 6E 6E 31 2A 1C 7B 2C 4D 54 53 ED 9F A7 39 4F 0A 0A A6 3A 74 EA F9 1E 7B 7F CE 8E AE D0 97 7F CF 92 ED 77 91 8F 80 ED DA 4E 8B 5C 39 FC BE 18 3A 03 D0 ED 0C 31 E6 7A 3A 6B D3 71 8B B5 97 F8 A3 3C 05 1E FE BE 68 F8 86 9C 79 68 10 F7 6A B8 44 B5 7D 3A 78 95 F5 BD 0E 9A 42 03
|
||||
flag = 08 25 31 01
|
||||
收到 ServerTouchResponsePacketEncrypted = 02 37 13 08 25 31 01 76 E4 B8 DD 00 00 00 13 46 E6 ED CE BF 3B EC 4C A0 B9 0C 84 D5 88 5C DE 99 7A 64 CF CF 59 35 C5 58 AE BD 0B F5 94 65 25 9E 23 01 88 BF D5 B5 51 DC AA 45 C5 97 8E 40 14 0F 46 50 31 CF 1C CB 10 28 33 F7 40 93 A9 B0 F3 EA 18 51 14 FD 61 C3 FD E3 A3 D8 1B 20 6F 60 EA 47 28 91 87 94 2E 5A E4 0A 4D 4D B7 14 57 03 E7 9D D7 28 E2 F4 59 62 34 89 19 1E 10 B8 90 97 C3 11 8A FE D6 3A 9A D8 03
|
||||
flag = 08 25 31 01
|
||||
使用#_0825key解密结果: = 02 37 13 08 25 31 01 76 E4 B8 DD 00 00 00 13 46 E6 ED CE BF 3B EC 4C A0 B9 0C 84 D5 88 5C DE 99 7A 64 CF CF 59 35 C5 58 AE BD 0B F5 94 65 25 9E 23 01 88 BF D5 B5 51 DC AA 45 C5 97 8E 40 14 0F 46 50 31 CF 1C CB 10 28 33 F7 40 93 A9 B0 F3 EA 18 51 14 FD 61 C3 FD E3 A3 D8 1B 20 6F 60 EA 47 28 91 87 94 2E 5A E4 0A 4D 4D B7 14 57 03 E7 9D D7 28 E2 F4 59 62 34 89 19 1E 10 B8 90 97 C3 11 8A FE D6 3A 9A D8 03
|
||||
需要重定向
|
||||
得到server ip, g_server = 123.151.77.211
|
||||
发送 ClientServerRedirectionPacket
|
||||
变量: g_server
|
||||
TEA 加密, 内容=00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 01 00 00 03 09 00 0C 00 01 7B 97 4D D3 01 6F A1 58 22 01 00 36 00 12 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 14 00 1D 01 03 00 19 02 6D 28 41 D2 A5 6F D2 FC 3E 2A 1F 03 75 DE 6E 28 8F A8 19 3E 5F 16 49 D3
|
||||
paccket sent: 02 37 13 08 25 31 02 76 E4 B8 DD 03 00 00 00 01 2E 01 00 00 68 52 00 00 00 00 A8 F2 14 5F 58 12 60 AF 07 63 97 D6 76 B2 1A 3B F8 19 BB 1E FD 3B B7 FA B4 2B DA B4 41 14 44 49 2D 01 FC 88 A7 C9 FE A0 DD 21 91 65 4F A2 6A 88 C7 65 1E 64 8E AE 0F 4B 5D 16 4F 61 C2 48 DD E4 DA 01 3C 99 58 13 81 7F 4B 1D 6C 9E F6 4F 2C A0 D4 EC 24 1B 13 CD C7 56 E2 20 8D C2 8D D2 4F 5C 27 56 C2 0C A4 C7 FB 37 B1 3B 90 14 31 65 47 E9 C7 22 AE A5 C3 6F EF 89 38 87 B4 D5 D8 11 10 1E 03
|
||||
flag = 08 25 31 02
|
||||
收到 ServerTouchResponsePacketEncrypted = 02 37 13 08 25 31 02 76 E4 B8 DD 00 00 00 80 96 0C 13 5F 40 31 75 D6 13 3D 59 65 F0 7A 1E 03 22 0B F1 BE F4 D8 BB 46 6C 2E 55 39 A1 05 8B 85 4E A4 D4 F3 A9 D6 CC CA 4D 2E 1A F2 E4 1D 49 4D 1F 23 66 BB 60 92 17 EC D3 35 32 93 E2 3D 8A A0 CE 3C 83 66 1F 0A A0 9A C7 11 91 8E E5 06 54 09 DE 1D 88 6C 0F 16 EB BC 7B 95 BF 71 A2 71 2B 21 F8 AD C8 03 C0 54 DE 03
|
||||
flag = 08 25 31 02
|
||||
不需要redirect
|
||||
得到m_loginTime = 5D 61 20 F9
|
||||
得到m_loginIP = AB 70 E2 96
|
||||
得到m_0825token = BF A4 B1 36 7C 5D 5A A6 3B 2E 65 E9 20 59 7B 04 3B 7C 36 A2 0F 56 79 BA 9D 66 95 08 F3 B1 56 80 AF C6 C7 C0 AC A8 C2 39 1C AC B5 D5 F8 CD 47 F7 33 06 96 85 1F BA 6E AF
|
||||
得到m_tgtgtKey = CE AD BA 22 50 A9 FE 62 AF C4 29 86 2C AF 17 5C
|
||||
发送 ClientPasswordSubmissionPacket
|
||||
PCName 取主机名 () = DESKTOP-M17JREU
|
||||
PCName 处理后 = 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55
|
||||
g_pass = xiaoqqq
|
||||
g_QQ = 76 E4 B8 DD
|
||||
crc32_code(Random) = B9 11 E7 AB 9D AB 61 35 4B B2 2D E0 EA 78 C6 C0
|
||||
crc32_data = 95 9D B2 30
|
||||
m_tgtgtKey = CE AD BA 22 50 A9 FE 62 AF C4 29 86 2C AF 17 5C
|
||||
packet = 79 35 21 65 00 02 76 E4 B8 DD 00 00 04 53 00 00 00 01 00 00 15 85 00 00 01 95 5B 96 CB 95 CF 1C A6 94 C4 B7 79 07 9A BB 15 5D 61 20 F9 00 00 00 00 00 00 00 00 00 00 00 00 00 AB 70 E2 96 00 00 00 00 00 00 00 00 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B CE AD BA 22 50 A9 FE 62 AF C4 29 86 2C AF 17 5C
|
||||
TEA 加密, 内容=79 35 21 65 00 02 76 E4 B8 DD 00 00 04 53 00 00 00 01 00 00 15 85 00 00 01 95 5B 96 CB 95 CF 1C A6 94 C4 B7 79 07 9A BB 15 5D 61 20 F9 00 00 00 00 00 00 00 00 00 00 00 00 00 AB 70 E2 96 00 00 00 00 00 00 00 00 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B CE AD BA 22 50 A9 FE 62 AF C4 29 86 2C AF 17 5C
|
||||
TEA 加密, 内容=00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B
|
||||
构建包加密原文 = 01 12 00 38 BF A4 B1 36 7C 5D 5A A6 3B 2E 65 E9 20 59 7B 04 3B 7C 36 A2 0F 56 79 BA 9D 66 95 08 F3 B1 56 80 AF C6 C7 C0 AC A8 C2 39 1C AC B5 D5 F8 CD 47 F7 33 06 96 85 1F BA 6E AF 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 E4 09 E9 48 57 45 49 D8 9A 35 3C E0 39 78 D6 D2 E2 EA 77 2C B1 DE AC 85 FD 08 CF AD 79 AA E5 36 99 5A FD 82 EC 7C B0 6F FB 5B DD CB A1 DF 8E 31 94 0D 9D 8A 6B 4B B6 F2 1F D0 F3 35 0D 3C 58 1C 19 59 04 12 49 25 D2 D5 24 73 83 00 F0 58 B7 85 05 A5 36 4A E0 FD 14 7C 30 4E FD 7C D5 A1 64 22 D6 55 D8 FA 0C CD 3A 15 90 BF A5 6A 78 57 74 65 79 33 5F 6C 8A 85 CE E0 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 3A AB 51 6D A5 1A D8 E0 0F 6D D2 D9 DB 5E 8D 86 A3 57 75 FE 75 4C 4A 0E 0A F5 16 91 72 D6 BA 05 74 97 99 B1 16 FA 56 6E 27 C5 84 97 4E 31 80 8D DE 16 38 D2 A4 1A 3B AB AA E8 77 FB E7 DB FE E7 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 03 12 00 05 01 00 00 00 01 05 08 00 05 01 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 B9 11 E7 AB 9D AB 61 35 4B B2 2D E0 EA 78 C6 C0 95 9D B2 30
|
||||
TEA 加密, 内容=01 12 00 38 BF A4 B1 36 7C 5D 5A A6 3B 2E 65 E9 20 59 7B 04 3B 7C 36 A2 0F 56 79 BA 9D 66 95 08 F3 B1 56 80 AF C6 C7 C0 AC A8 C2 39 1C AC B5 D5 F8 CD 47 F7 33 06 96 85 1F BA 6E AF 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 E4 09 E9 48 57 45 49 D8 9A 35 3C E0 39 78 D6 D2 E2 EA 77 2C B1 DE AC 85 FD 08 CF AD 79 AA E5 36 99 5A FD 82 EC 7C B0 6F FB 5B DD CB A1 DF 8E 31 94 0D 9D 8A 6B 4B B6 F2 1F D0 F3 35 0D 3C 58 1C 19 59 04 12 49 25 D2 D5 24 73 83 00 F0 58 B7 85 05 A5 36 4A E0 FD 14 7C 30 4E FD 7C D5 A1 64 22 D6 55 D8 FA 0C CD 3A 15 90 BF A5 6A 78 57 74 65 79 33 5F 6C 8A 85 CE E0 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 3A AB 51 6D A5 1A D8 E0 0F 6D D2 D9 DB 5E 8D 86 A3 57 75 FE 75 4C 4A 0E 0A F5 16 91 72 D6 BA 05 74 97 99 B1 16 FA 56 6E 27 C5 84 97 4E 31 80 8D DE 16 38 D2 A4 1A 3B AB AA E8 77 FB E7 DB FE E7 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 03 12 00 05 01 00 00 00 01 05 08 00 05 01 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 B9 11 E7 AB 9D AB 61 35 4B B2 2D E0 EA 78 C6 C0 95 9D B2 30
|
||||
PCName 取主机名 () = DESKTOP-M17JREU
|
||||
PCName 处理后 = 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55
|
||||
g_pass = xiaoqqq
|
||||
g_QQ = 76 E4 B8 DD
|
||||
crc32_code(Random) = A0 99 89 10 F4 AB AD F5 C1 03 CE 74 FE FB 49 FD
|
||||
crc32_data = 5B 1F 17 CA
|
||||
m_tgtgtKey = CE AD BA 22 50 A9 FE 62 AF C4 29 86 2C AF 17 5C
|
||||
packet = A5 FD E6 15 00 02 76 E4 B8 DD 00 00 04 53 00 00 00 01 00 00 15 85 00 00 01 95 5B 96 CB 95 CF 1C A6 94 C4 B7 79 07 9A BB 15 5D 61 20 F9 00 00 00 00 00 00 00 00 00 00 00 00 00 AB 70 E2 96 00 00 00 00 00 00 00 00 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B CE AD BA 22 50 A9 FE 62 AF C4 29 86 2C AF 17 5C
|
||||
TEA 加密, 内容=A5 FD E6 15 00 02 76 E4 B8 DD 00 00 04 53 00 00 00 01 00 00 15 85 00 00 01 95 5B 96 CB 95 CF 1C A6 94 C4 B7 79 07 9A BB 15 5D 61 20 F9 00 00 00 00 00 00 00 00 00 00 00 00 00 AB 70 E2 96 00 00 00 00 00 00 00 00 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B CE AD BA 22 50 A9 FE 62 AF C4 29 86 2C AF 17 5C
|
||||
TEA 加密, 内容=00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B
|
||||
构建包加密原文 = 01 12 00 38 BF A4 B1 36 7C 5D 5A A6 3B 2E 65 E9 20 59 7B 04 3B 7C 36 A2 0F 56 79 BA 9D 66 95 08 F3 B1 56 80 AF C6 C7 C0 AC A8 C2 39 1C AC B5 D5 F8 CD 47 F7 33 06 96 85 1F BA 6E AF 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 00 D9 61 DA 12 4B DE 6B 5A A0 43 25 0A D6 87 28 57 6E 59 70 C2 6C D1 F3 BE B5 FD 74 C7 45 76 1B 2B 96 F4 BF 7C EB F4 8E C1 C2 42 F9 FC 42 3D D0 3D 1D 53 CD DC 9C 92 64 25 E2 61 35 FD 76 DD BA 13 0C 49 B9 47 77 5D B7 17 3D 2A 4C 24 16 4F FD EF 6D D9 B9 17 7C FA 65 33 04 DF C4 10 21 C2 F3 B5 F0 3B BB 35 47 DB B8 54 C7 27 90 54 76 98 E3 BA F7 67 0C 74 4D C4 56 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 47 97 98 C5 BE E2 6E 6C E4 B4 97 2F 8D 89 6B 86 BF 2D C9 75 7F 06 1F 26 45 4A 75 9F 78 1F 9D CA FD 63 BD 10 AB 5B 46 DE 4F B0 63 D4 38 9C D3 CD C2 AC F1 E0 26 AB DE C9 E9 FF 8A D9 C9 0C 08 5D 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 03 12 00 05 01 00 00 00 01 05 08 00 05 01 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 A0 99 89 10 F4 AB AD F5 C1 03 CE 74 FE FB 49 FD 5B 1F 17 CA
|
||||
TEA 加密, 内容=01 12 00 38 BF A4 B1 36 7C 5D 5A A6 3B 2E 65 E9 20 59 7B 04 3B 7C 36 A2 0F 56 79 BA 9D 66 95 08 F3 B1 56 80 AF C6 C7 C0 AC A8 C2 39 1C AC B5 D5 F8 CD 47 F7 33 06 96 85 1F BA 6E AF 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 00 D9 61 DA 12 4B DE 6B 5A A0 43 25 0A D6 87 28 57 6E 59 70 C2 6C D1 F3 BE B5 FD 74 C7 45 76 1B 2B 96 F4 BF 7C EB F4 8E C1 C2 42 F9 FC 42 3D D0 3D 1D 53 CD DC 9C 92 64 25 E2 61 35 FD 76 DD BA 13 0C 49 B9 47 77 5D B7 17 3D 2A 4C 24 16 4F FD EF 6D D9 B9 17 7C FA 65 33 04 DF C4 10 21 C2 F3 B5 F0 3B BB 35 47 DB B8 54 C7 27 90 54 76 98 E3 BA F7 67 0C 74 4D C4 56 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 47 97 98 C5 BE E2 6E 6C E4 B4 97 2F 8D 89 6B 86 BF 2D C9 75 7F 06 1F 26 45 4A 75 9F 78 1F 9D CA FD 63 BD 10 AB 5B 46 DE 4F B0 63 D4 38 9C D3 CD C2 AC F1 E0 26 AB DE C9 E9 FF 8A D9 C9 0C 08 5D 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 03 12 00 05 01 00 00 00 01 05 08 00 05 01 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 A0 99 89 10 F4 AB AD F5 C1 03 CE 74 FE FB 49 FD 5B 1F 17 CA
|
||||
paccket sent: 02 37 13 08 36 31 03 76 E4 B8 DD 03 00 00 00 01 01 01 00 00 68 20 00 00 00 00 00 01 01 03 00 19 02 6D 28 41 D2 A5 6F D2 FC 3E 2A 1F 03 75 DE 6E 28 8F A8 19 3E 5F 16 49 D3 00 00 00 10 EF 4A 36 6A 16 A8 E6 3D 2E EA BD 1F 98 C1 3C DA D3 E5 0D A8 D1 77 18 4A C6 56 87 45 E0 A8 DD 8A 9C AF 93 80 D4 1C E9 BE 9E 4A E9 91 3D 16 CD 4C 6E 55 63 CA 7C E7 8F E8 06 3B 9B CE E7 5B EA D7 4E EB 59 69 0C A9 A1 29 60 B6 25 57 9E E6 79 4D 2C 97 DA D6 C8 C4 66 CF F5 3A A6 3A 7C 01 8C B9 B8 D5 06 A9 93 21 10 1F 19 D0 3D C2 01 ED 42 3E B2 9D C6 E9 5D E9 DC 50 28 6A C4 D9 EF 0D 6A 1F D4 6E 39 A1 52 1D 40 28 86 AE 77 4B C1 43 8A 58 CE 6F A1 FE 6F 1B C4 0A 02 14 EE 09 51 3C 78 DF 89 7A 94 08 AC B7 56 5F B1 B5 B2 22 30 2C 5F 8C 93 39 17 EA DB D4 33 D8 93 76 56 2A D5 69 5D 78 0C 4D BC F0 74 80 8C EA 7A FE FD 90 97 DC 6E 58 94 9E E7 7B A3 BC 23 CB 62 F3 F1 51 CE C8 49 B3 BD E3 82 61 15 24 8B 35 31 0F FB DB DC FE BA 49 32 24 DB 41 7E 7E 08 F9 B0 70 64 DC 33 A8 FD 68 57 EB FA 50 35 29 8F 1E 26 79 EC 18 3A C8 79 13 7B 92 DE A6 85 3E 1C 5F 7F 8E B4 E9 D8 F3 11 5E 34 4D B6 D4 40 1B 83 8C 6D 88 BF 19 44 B4 9C AF 3E 8D 27 C2 A3 C8 4E 50 44 C4 37 E3 85 86 46 F7 43 67 17 E9 7A A8 C1 3A 8A E4 4A 11 2C 29 70 A4 28 1D 19 04 07 B6 26 62 CE 4A 6E FC 7A F4 3F EF 15 25 C3 0E 0E B5 4A 2E 4A 63 E2 EC 80 FE 92 59 CA EF 89 0E 5C DC 10 4C 92 52 BD 2B D6 C1 D0 FB 05 A7 4D 68 AE F7 E6 C2 52 C1 BF B3 7C 81 87 44 0A 93 9D 0E E7 E3 9F 4B F5 C6 2F 5B AE 16 50 85 25 24 19 7C 23 A9 AE 38 B5 2B 68 DF 5A A8 08 71 12 FC 1B D9 05 77 5A E3 B3 C5 6F E2 E5 49 04 DE 01 61 13 E4 79 39 D0 26 80 5D 73 89 32 AD 18 48 A5 0C B1 F0 1D 2C 63 17 EF C6 C9 EA 5E E7 B2 48 0A 07 0C A8 44 A4 F5 1F D3 2E 45 8F C8 C5 70 C5 5A B4 5A 43 2A 39 3D 91 AF 08 46 52 57 1C 2B 59 7C DA 14 BF A3 0A E5 11 C2 0C C2 F1 8B 8D C1 60 B9 65 B5 12 29 AF 02 B0 FC FF C8 F1 48 26 9E 27 AC 48 B2 18 B6 EA E4 E5 89 74 0C 3B 5D 84 BC DC 03
|
||||
flag = 08 36 31 03
|
||||
收到 ServerLoginResponseSucceedPacket
|
||||
原文 = 02 37 13 08 36 31 03 76 E4 B8 DD 00 00 00 BD 57 C9 45 45 E4 52 BE DA 05 67 A3 49 0F B7 90 AD 3E 47 34 A9 A8 B3 D9 82 E1 45 95 A4 41 F0 66 56 20 D5 0C B7 AF 9E A3 3A 32 FE 89 B2 0A AD 81 EC D0 D1 7A 17 00 51 5E FA BD 75 D1 DB E9 12 DC 89 25 A8 6D 80 F4 00 21 68 70 A0 77 E3 EF FA 9C 80 25 47 5B 55 E1 A0 1D D9 6B FE B7 7F 6A 3B 67 45 A5 F1 CE 33 F4 43 67 1D FD 83 F6 88 9F 2E 7E F3 8B 0E DE 68 76 B1 48 9A 5C B2 B2 8D 12 E3 FA CE 0F 22 F1 7C 20 4D AD 01 09 36 C6 64 3A BE CA 33 68 46 19 8A A9 66 7A 13 DC F2 EE 04 91 74 FB CB 57 B5 48 84 BF 99 24 3C 1E 5C 04 56 F1 28 E1 49 95 0D 71 39 FB A2 AE EE C5 E6 99 91 A3 A3 59 48 CA DE 10 66 F2 FA 88 D8 6F 46 2B B3 F4 33 C0 64 92 92 99 83 06 43 C2 3C FC 0F 34 38 7C 0F F8 3C 35 D0 CD 23 05 06 5B 61 B3 AD 38 D9 E2 5F 51 A4 A0 CA AF 4A A9 86 11 C9 AC 2C 44 11 08 52 E3 3C 0D 1B 91 B6 C6 70 FC 15 CC 16 F6 3B C9 97 C0 82 D1 8B 24 2F AA 35 50 61 E9 11 F8 E1 09 29 B9 20 5E 3A 73 33 BF 78 9C CC D0 A7 BF 23 66 65 3B D1 1F 71 40 C2 E2 0D CA 6F 57 D8 E1 46 B6 47 65 9E 43 04 0E 30 54 EB 70 42 49 6F 75 55 C5 63 3A A4 9D FF 0B F8 56 3B 89 74 14 56 6B 6E 9D 32 D4 DD FA E7 C6 B2 6B 61 F0 54 EF 05 7E E1 49 D6 38 A0 C1 B3 F6 B4 7A 4A 03 31 1D E7 88 BA 56 9D 50 03 95 FF DB 23 DC 3C B9 51 1B 4B 06 1E 5E C5 B1 96 EA 8B 64 92 48 24 65 A4 92 EC BA 90 42 AD BA 04 81 4F 42 FB 41 60 E9 93 68 1F 59 67 57 57 5F 40 22 1B F2 D9 C5 5D 53 34 2C E4 82 ED D2 A8 3B F1 C2 05 2A 4D F9 45 63 21 E7 92 5A 01 D4 A4 3A 98 D8 57 39 34 D4 E2 CC F6 D1 76 12 76 00 A5 89 18 66 9C F9 18 31 52 E6 92 B2 11 46 73 8D 37 92 99 7A 3B FC 82 36 A1 7A 7B 91 D0 F7 59 C2 64 76 7A 4F 7E 88 8A AF 11 AA 90 5C 0D E2 9F F7 A8 9B 04 A7 05 48 EC 92 01 2A 19 0E 8C A7 1B 9C 1F B2 F8 BD C5 AE 98 D5 86 C7 C6 D2 D5 BC B5 BB D7 F9 05 52 F1 5A 6D B5 94 2C 44 86 11 A9 B3 EB 9D D7 30 BF 21 1F 22 2D FB AC 0C 5C 94 C4 69 C2 82 C8 48 6C 86 40 95 EF 67 9B B1 60 17 09 56 AE CB 85 EF FD 60 7D BA A3 1D 13 05 10 93 ED 5D 91 6B 3B 8C 23 C4 45 EF 02 BA 86 0E F7 8E 46 C7 3D 07 8A 67 94 3B 5C 4B 05 BD 64 76 DF 1A 3B A5 C9 26 AA F6 A5 36 4E EC 00 AD D8 B7 5E 32 53 02 9F CF 3C 23 9C 94 BB 03 F8 97 9F 53 CC A0 68 77 4D A4 DE D0 CE DE 68 FC A2 07 A5 9E 65 28 E2 A2 95 E0 1D 45 11 47 E9 03 1A BE F5 1F 48 36 37 B8 EA EA 6B 9C 73 93 7D 21 CA 77 F7 62 73 BF BA 54 BB C2 38 0C 04 68 A 4 E0 05 98 18 6E 5D EC 40 EE 54 27 9C 67 5C 79 5D 89 3C 4F DC 29 50 46 87 D9 EB F9 12 03
|
||||
进行解密, key=m_tgtgtKey = CE AD BA 22 50 A9 FE 62 AF C4 29 86 2C AF 17 5C
|
||||
得到m_0828_rec_decr_key = 79 44 42 48 54 78 7D 76 35 2D 37 5F 74 58 77 66
|
||||
得到nick_length = 20
|
||||
得到m_nick = (?ω)
|
||||
得到m_age = 5
|
||||
得到m_gender = 02
|
||||
得到g_clientKey = 00015D6120F900686462B19DE4E17E7D0DB1BBBFBF156F01CFD2A113B3405B8B9B3AB0BB52CD0E34D2F6B22D2DB8F5A48F04E93A7B02544CBD975DF663364C7D100AEA1B05C0D98D0A65549F0C97BA6854566746938051A2B2B99CA6B9390EEC029998A32866635068C89BA9D679082E
|
||||
得到token38 = 87 7B B4 34 81 46 D2 F9 24 F4 FE DA 15 B8 7E 0E FE AD D0 5C E5 E5 27 A6 DD 64 C9 37 26 0E 7E 46 39 CA E3 A8 20 17 E0 C7 8C D2 7B B6 70 7C 50 4F 77 20 E6 22 B6 61 D6 30
|
||||
得到token88 = 00 04 5D 61 20 F9 AB 70 E2 96 00 00 00 00 00 78 C4 B6 4D 8D B1 48 E9 0F 75 22 A9 EC FD 7E 1D 90 A1 90 AC D4 CB 73 4D 76 6C 29 1D 59 58 97 8D 1C 9D 6F 05 1D 9A 4E 27 08 2F A6 5E 52 5C 47 CF CF 12 F0 66 4D 58 74 DD 70 96 44 4D 45 AC 4B 40 37 B2 16 FD D0 DA CB 70 96 E9 39 1F EA 17 2F A2 71 8A 39 A5 A5 D6 3E 93 8C B5 A7 E4 8C EC 96 34 29 43 9B 57 9F 65 2F 16 D8 0D 9E F6 1C F4 2A EB 07 C7 4F A2 E5 AF ED 21 4D
|
||||
得到encryptionKey = 35 F2 B1 8C 26 C3 67 77 E5 79 3D 16 68 F9 7A FD
|
||||
发送未知新包
|
||||
TEA 加密, 内容=00 07 00 88 00 04 5D 61 20 F9 AB 70 E2 96 00 00 00 00 00 78 C4 B6 4D 8D B1 48 E9 0F 75 22 A9 EC FD 7E 1D 90 A1 90 AC D4 CB 73 4D 76 6C 29 1D 59 58 97 8D 1C 9D 6F 05 1D 9A 4E 27 08 2F A6 5E 52 5C 47 CF CF 12 F0 66 4D 58 74 DD 70 96 44 4D 45 AC 4B 40 37 B2 16 FD D0 DA CB 70 96 E9 39 1F EA 17 2F A2 71 8A 39 A5 A5 D6 3E 93 8C B5 A7 E4 8C EC 96 34 29 43 9B 57 9F 65 2F 16 D8 0D 9E F6 1C F4 2A EB 07 C7 4F A2 E5 AF ED 21 4D 00 0C 00 16 00 02 00 00 00 00 00 00 00 00 00 00 7B 97 4D D3 1F 40 00 00 00 00 00 15 00 30 00 01 01 92 A5 D2 59 00 10 54 2D CF 9B 60 BF BB EC 0D D4 81 CE 36 87 DE 35 02 AE 6D ED DC 00 10 06 A9 12 97 B7 F8 76 25 AF AF D3 EA B4 C8 BC E7 00 36 00 12 00 02 00 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 00 1F 00 22 00 01 1A 68 73 66 E4 BA 79 92 CC C2 D4 EC 14 7C 8B AF 43 B0 62 FB 65 58 A9 EB 37 55 1D 26 13 A8 E5 3D 01 05 00 88 00 01 01 02 00 40 02 01 03 3C 01 03 00 00 C2 D9 3F A5 A0 1B 6C 03 A2 EF AB CB 42 92 44 8E 15 97 28 1F DE B6 E9 0A 5C 53 01 CE A2 CC 95 3F E0 CB 30 3F 5C 67 09 22 83 CC 8A 80 8F D6 26 F5 EF EC 24 15 95 8E CE 99 00 40 02 02 03 3C 01 03 00 00 A1 4D 57 52 9E 5B 1F BB 48 75 09 67 F8 C0 64 F6 9B 2A 44 61 78 29 C1 26 9C 3C 59 0E DF 9B D1 59 97 0B 0C 2B 09 27 C6 7C 20 63 11 02 E1 4E A4 DE E2 59 CF A7 A1 47 0A B6 01 0B 00 85 00 02 B9 ED EF D7 CD E5 47 96 7A B5 28 34 CA 93 6B 5C 37 10 00 00 00 00 00 00 00 02 00 63 3E 00 63 02 04 03 06 02 00 04 00 52 D9 00 00 00 00 A9 58 3E 6D 6D 49 AA F6 A6 D9 33 0A E7 7E 36 84 03 01 00 00 68 20 15 8B 00 00 01 02 00 00 03 00 07 DF 00 0A 00 0C 00 01 00 04 00 03 00 04 20 5C 00 92 71 EE B0 CC 65 63 B5 3E BF DE 6E 1E 46 78 AD 09 38 03 07 C4 83 B7 84 F3 B4 C2 64 2C 57 69 61 68 00 00 00 00 00 2D 00 06 00 01 C0 A8 89 01
|
||||
paccket sent: 02 37 13 08 28 04 34 76 E4 B8 DD 02 00 00 00 01 2E 01 00 00 68 52 00 30 00 3A 00 38 87 7B B4 34 81 46 D2 F9 24 F4 FE DA 15 B8 7E 0E FE AD D0 5C E5 E5 27 A6 DD 64 C9 37 26 0E 7E 46 39 CA E3 A8 20 17 E0 C7 8C D2 7B B6 70 7C 50 4F 77 20 E6 22 B6 61 D6 30 43 93 A7 0B 49 A4 4A 0F D8 DB 40 F4 CA DC EA 8F 79 90 A7 39 A4 9E B1 77 28 12 30 1E 30 1E D1 E1 A8 8E EA 87 53 AF 83 94 4C 30 99 DD 3E 6F A0 BE 42 6C B0 B5 A8 E7 35 AA 5B 10 0F 0D 37 BA 48 C2 B1 A7 84 AD 93 E0 82 6F 1B 44 62 7D 69 37 35 68 25 B7 EF BD A5 BB 78 5F 90 54 61 38 92 E5 1E 87 8C F4 E3 57 30 B3 70 C8 EB CD B8 27 3F ED 59 19 6C DA F4 2B 09 57 6C 8B 9D 02 D7 91 E8 52 1E BA 98 6B 89 2A 0B C4 99 CE 17 45 B1 1A F7 47 88 1B 0B B8 65 08 E4 04 0F 2B F4 01 3D 00 EA 3B B0 58 D5 4B 84 96 55 A0 EB D1 FB 00 7F 92 B6 D5 BF 56 02 06 C8 94 D0 63 36 63 30 01 33 F7 60 B6 83 47 AE 78 BC 1E 64 E2 8F 7C B9 67 3B 35 A0 09 AF 33 33 EA 96 C9 0A DA 4C 66 DA 86 A5 7A CB C2 D7 2D 7F EF 36 48 32 DD B3 BB C4 52 F0 DB 2A 36 86 61 7A D0 E8 F6 06 53 C5 AA 53 2B 51 F6 46 4A 1C CB E6 78 FD A4 52 0A F0 DB 2F 80 BA 83 63 32 09 1F 8D C1 EB 18 41 1F C8 6F 7F 57 94 8C F7 2D 34 1F 3C 01 3A 7D 7E F9 66 1D 99 2C 0C 76 29 EE 6C 66 A8 8E 45 B7 5F 9E 3B 26 2F 05 61 B7 CC 61 2E 43 CE 89 83 53 8A B4 93 93 63 42 A6 F5 54 1D 9A 1D 76 24 78 59 3D 3F CA F5 38 4B 0B 7F D4 D7 EE C0 3B FD CB 85 DC 95 A0 0D 88 34 97 6E AD B5 C4 95 19 8F 4C AA 14 A0 F5 F4 CB 75 26 6D 6A D8 4C 43 4A 3D EE 89 52 92 48 6F A7 86 B9 2E 45 EE CB CD DD 33 0C DB 03 91 45 10 95 D7 62 1E 34 37 A3 17 B7 82 7A C3 EF A8 D8 52 08 8A CF 72 7E 8B EE 3A 1A 58 C4 65 17 B5 EE 46 16 0A B3 CB 6A 74 74 2E D2 2A 3D 83 5C 8A A1 4A 72 AB 97 28 DD CD 2B 16 03 4D 94 C9 6C 1E C4 7B F8 7D 7A 56 7D 7A A5 DF FD 12 19 91 96 AA 7D 00 75 12 04 58 D9 69 85 93 0A BB 23 9F 60 BC 8B 00 AE 4D D6 36 30 33 0F 80 F7 B0 CB 72 39 9A 1D 61 76 2E 39 E9 75 16 2C 07 7E FF 68 95 5E 90 73 58 98 72 4D AC 94 B9 43 F0 90 E9 AB 51 31 4C 74 24 90 86 47 B5 F7 E1 97 86 BB 96 47 B4 8F 1E 2C F7 D2 D2 14 F4 CE D5 EF 27 97 CD F8 8B B1 7C 24 D4 73 E1 C0 8E 3C A0 F2 7D 93 74 15 17 99 48 D0 8D 69 65 A6 36 4D 2A DB A7 03
|
||||
flag = 08 28 04 34
|
||||
g_sessionKey = E0 29 20 0D 31 82 38 F8 A1 AC 71 C6 07 F3 CB 54
|
||||
g_tlv0105 = 01 05 00 88 00 01 01 02 00 40 02 01 03 3C 01 03 00 00 C2 D9 3F A5 A0 1B 6C 03 A2 EF AB CB 42 92 44 8E 15 97 28 1F DE B6 E9 0A 5C 53 01 CE A2 CC 95 3F E0 CB 30 3F 5C 67 09 22 83 CC 8A 80 8F D6 26 F5 EF EC 24 15 95 8E CE 99 00 40 02 02 03 3C 01 03 00 00 A1 4D 57 52 9E 5B 1F BB 48 75 09 67 F8 C0 64 F6 9B 2A 44 61 78 29 C1 26 9C 3C 59 0E DF 9B D1 59 97 0B 0C 2B 09 27 C6 7C 20 63 11 02 E1 4E A4 DE E2 59 CF A7 A1 47 0A B6
|
||||
g_loginStatus = 0A
|
||||
TEA 加密, 内容=01 00 0A00 01 00 01 00 04 00 00 00 00
|
||||
paccket sent: 02 37 13 00 EC 35 DB 76 E4 B8 DD 02 00 00 00 01 01 01 00 00 68 20 80 88 1D E3 D9 DF BD 03 EB BF 3D A0 8A E3 DF FF 1A C4 26 40 02 FF 34 FF 03
|
||||
flag = 00 EC 35 DB
|
||||
TEA 加密, 内容=33 00 05 00 08 74 2E 71 71 2E 63 6F 6D 00 0A 71 75 6E 2E 71 71 2E 63 6F 6D 00 0C 71 7A 6F 6E 65 2E 71 71 2E 63 6F 6D 00 0C 6A 75 62 61 6F 2E 71 71 2E 63 6F 6D 00 09 6B 65 2E 71 71 2E 63 6F 6D
|
||||
paccket sent: 02 37 13 00 1D B9 B1 76 E4 B8 DD 02 00 00 00 01 01 01 00 00 68 20 57 90 2B 4A 54 89 D9 5E 40 F1 13 4F C9 6D 0D 22 B2 1A 92 FF 28 0A 2A 21 E3 75 9C 91 22 BD 5D F8 2B 1A ED 6A D8 5A 9F F0 B8 13 B8 A1 C2 25 31 77 98 3D 9A 3D B1 E5 B6 39 1C 04 84 7C 93 3A 84 BF 88 92 45 03 B0 9D CC 1E BC 87 9C 98 F6 03 14 C1 03
|
||||
flag = 00 1D B9 B1
|
||||
TEA 加密, 内容=88 76 E4 B8 DD 00
|
||||
paccket sent: 02 37 13 00 5C CB C6 76 E4 B8 DD 02 00 00 00 01 01 01 00 00 68 20 16 F2 82 2B F9 A2 D4 A2 A8 1A 13 93 FB CD EC 43 03
|
||||
flag = 00 5C CB C6
|
||||
flag = 00 17 D2 48
|
||||
TEA 加密, 内容=76 E4 B8 DD 76 E4 B8 DD 00 02 BB 83 0A 3C 90 09
|
||||
paccket sent: 02 37 13 00 17 D2 48 76 E4 B8 DD 02 00 00 00 01 01 01 00 00 68 20 4E B7 9E C3 F0 AF 38 6B C1 DA D8 32 15 57 66 FE 8D EA 49 5D D0 FE CA C5 11 B9 54 35 B3 3D 7D 6A 03
|
||||
AnalyMessage
|
50
mirai-core/src/test/java/packets.txt
Normal file
50
mirai-core/src/test/java/packets.txt
Normal file
@ -0,0 +1,50 @@
|
||||
from epl
|
||||
|
||||
TEA decrypted: FE 01 12 00 38 C2 3B BA 7D E2 EA B6 66 7D F1 F5 7E 8A 28 5E ED 45 16 37 AA C0 CD A0 0C 43 CC 27 48 EB 9B 86 EE F0 87 76 E6 B5 DE B4 16 C8 23 9C AE DD 6F EC AF B6 4A 23 4B 36 68 88 14 00 17 00 0E 00 01 5D 5E 8D 70 1B 12 55 CB B3 A5 00 00 00 0C 00 16 00 02 00 00 00 00 00 12 00 00 00 00 3D 97 B4 F0 00 00 00 00 00 00
|
||||
TEA encrypt: 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 01 00 00 03 09 00 0C 00 01 3D 97 B4 F0 01 6F A1 58 22 01 00 36 00 12 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 14 00 1D 01 03 00 19 02 6D 28 41 D2 A5 6F D2 FC 3E 2A 1F 03 75 DE 6E 28 8F A8 19 3E 5F 16 49 D3
|
||||
Packet sent: 02 37 13 08 25 31 02 76 E4 B8 DD 03 00 00 00 01 2E 01 00 00 68 52 00 00 00 00 A8 F2 14 5F 58 12 60 AF 07 63 97 D6 76 B2 1A 3B BC 09 3B D1 C3 13 E7 1E B0 D4 B4 57 EC D7 E1 54 1C B9 C7 9B FF E2 86 31 79 98 08 F5 C5 36 7B F8 C2 AC 65 7B A2 25 D9 14 25 42 7A 89 BF AB 1D 3F D9 6A DD E8 45 2E 47 C1 D4 4E 0C 09 B5 16 FA A5 68 B1 86 E9 10 43 0A 3F 97 9C 17 59 27 38 04 82 49 A7 08 21 F6 DB DA 56 12 C2 5B F7 76 1A CD 49 23 4B 28 E0 73 3D 74 98 DB 07 B2 72 FE 32 AC EB 03
|
||||
TEA decrypted: 00 01 12 00 38 6E 42 D2 18 7A 9A D1 C0 E9 56 D3 64 16 4A 0D 46 40 EF 27 B9 79 25 2D 06 E0 28 C5 5B E5 77 3D 55 2D DC DE 13 ED 46 1E 90 2B B8 C9 13 60 39 53 53 01 A3 C1 A1 FC 44 07 E2 00 17 00 0E 00 01 5D 5E 8D 70 1B 12 55 CB B3 A5 00 00 03 10 00 04 3D 97 B4 F0
|
||||
TEA encrypt: 28 0C F3 77 00 02 76 E4 B8 DD 00 00 04 53 00 00 00 01 00 00 15 85 00 00 01 95 5B 96 CB 95 CF 1C A6 94 C4 B7 79 07 9A BB 15 5D 5E 8D 70 00 00 00 00 00 00 00 00 00 00 00 00 00 1B 12 55 CB 00 00 00 00 00 00 00 00 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 4E EB C9 19 82 AB 72 4E 9E 6A C9 A5 22 50 96 5D
|
||||
TEA encrypt: 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B
|
||||
TEA encrypt: 01 12 00 38 6E 42 D2 18 7A 9A D1 C0 E9 56 D3 64 16 4A 0D 46 40 EF 27 B9 79 25 2D 06 E0 28 C5 5B E5 77 3D 55 2D DC DE 13 ED 46 1E 90 2B B8 C9 13 60 39 53 53 01 A3 C1 A1 FC 44 07 E2 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 C9 DB 44 90 AF 8C E6 35 98 46 54 41 48 C1 86 BE DD 11 81 5E B5 E3 32 E2 00 60 B7 82 52 E3 FC 15 E0 18 BC 5F 93 5E 75 F9 E6 05 12 4E 3E 40 6F 65 A6 A3 E3 57 EC B2 8F 76 25 12 76 76 8C E9 88 6E 1C 26 03 55 EA A8 8A 02 3D 31 E6 E3 17 D3 BE 41 2C D0 05 F6 70 9B 34 9A 40 A6 A6 48 D8 65 A2 39 5D 8A 32 28 90 06 0D 29 9E 24 6E C4 92 87 D1 CB 2B E2 97 BA A0 EF 16 63 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 B2 DE B3 6A F2 64 C3 43 AA 9A CB BA 2B 22 24 BD C6 8A EA D0 37 8B 61 E0 C6 BB 62 68 A8 2D 22 79 F8 AD 39 6E 20 F6 D2 DD DD 39 E8 D2 BF 1A 58 E5 D3 99 D6 6F 72 1B 02 6D 9E B5 10 D0 C9 BC 37 27 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 03 12 00 05 01 00 00 00 01 05 08 00 05 01 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 7B 4F 8E 6D C9 26 F0 8A BB 27 B3 74 BC 55 50 95 DF 07 D6 A0
|
||||
TEA encrypt: AB C7 B2 DB 00 02 76 E4 B8 DD 00 00 04 53 00 00 00 01 00 00 15 85 00 00 01 95 5B 96 CB 95 CF 1C A6 94 C4 B7 79 07 9A BB 15 5D 5E 8D 70 00 00 00 00 00 00 00 00 00 00 00 00 00 1B 12 55 CB 00 00 00 00 00 00 00 00 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 4E EB C9 19 82 AB 72 4E 9E 6A C9 A5 22 50 96 5D
|
||||
TEA encrypt: 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B
|
||||
TEA encrypt: 01 12 00 38 6E 42 D2 18 7A 9A D1 C0 E9 56 D3 64 16 4A 0D 46 40 EF 27 B9 79 25 2D 06 E0 28 C5 5B E5 77 3D 55 2D DC DE 13 ED 46 1E 90 2B B8 C9 13 60 39 53 53 01 A3 C1 A1 FC 44 07 E2 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 9C 8B 87 A0 A6 42 5B E4 3E C2 D2 50 80 22 19 E3 60 5F 90 FA DF 4F 33 F5 26 24 9A 6C 0F F2 08 A4 91 42 C0 73 C6 D3 7F D9 FA F6 9E D4 9E B1 B7 64 51 B5 45 F3 5F D3 5E C1 7A C6 3D 19 5D 44 E3 75 EB 76 D3 A5 8B D8 0E 4B B2 7C 32 96 4C FF 52 18 81 A0 85 19 3D 4B A2 B4 3B 78 CD AA CE 9D E3 8D D5 B9 D3 6E ED B0 0F 02 96 57 3D DD C9 D4 8D 8B CC FA 1B 83 78 89 7C E1 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 23 6E 7B 0C 0E 31 31 E9 E1 5C 48 C4 4D 55 CF 2B 20 91 EE 24 CA D9 2D 9C 75 C5 D9 08 6A AE BB 61 DB 16 27 E0 AE A8 96 07 57 01 FC 24 E2 52 3F 69 AE DD BB 34 F4 85 B8 6D E6 B8 22 2C 79 52 BD A5 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 03 12 00 05 01 00 00 00 01 05 08 00 05 01 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 F4 96 24 B8 52 17 7B B8 F6 09 3C 4D 9E BC 86 F1 0A 68 B1 59
|
||||
Packet sent: 02 37 13 08 36 31 03 76 E4 B8 DD 03 00 00 00 01 01 01 00 00 68 20 00 00 00 00 00 01 01 03 00 19 02 6D 28 41 D2 A5 6F D2 FC 3E 2A 1F 03 75 DE 6E 28 8F A8 19 3E 5F 16 49 D3 00 00 00 10 EF 4A 36 6A 16 A8 E6 3D 2E EA BD 1F 98 C1 3C DA E8 C2 34 2F E3 2B 37 00 72 21 83 B7 11 D8 C9 9C 3E D2 16 75 72 AE E4 F2 E7 24 0D 87 7E FB 7D 83 64 22 6E 1F 97 01 44 36 9E A6 A8 68 4F 9F 81 F5 B3 F3 14 8C 7A 4D 79 FD 9C 03 DD B6 46 97 62 4E 39 8C 45 0A 43 8F 57 C8 11 28 EC 0D AF 87 B9 72 7A D9 F8 D3 99 C4 96 7B 26 B5 0B 3E 7A 61 2B 13 27 B4 14 A2 EE DC DB 5B 0E B3 9E 3C 92 1C 97 2E 48 10 4C 04 F0 FC 20 DF 77 BF 1A BC 77 81 3D EA 03 83 2D F5 14 61 C7 8A DA AC 72 C4 EF 47 75 48 8B 8A 9E 94 06 64 FB 12 C7 31 4D 64 89 11 D3 B8 60 AB BB 50 8C F1 EE B2 5B C7 B9 DB A3 7D F0 1A 17 75 0D 9F 9E 7B 79 0B 83 A0 89 53 4A C4 C7 8D 51 E4 1E 4A D0 73 D0 F7 01 03 C8 A7 10 6F A2 98 B1 33 78 E9 7F 02 96 80 00 E7 07 7F 3B DA CC C8 C7 F6 AD C3 D9 98 5B B6 75 C0 9F 6D 53 94 4A 18 78 C4 C3 A0 B3 E0 F3 C2 61 89 CC 15 A4 57 8B 7A B9 1B DE 48 4E 2F 83 25 46 45 2B 5C 6E 36 38 2E 92 5A A9 99 45 1D AA 97 64 F1 46 2A 1F 23 9F DD 9F 5E 9F 03 9F E0 0D A5 7F D6 12 A5 DD 2F FA 42 9C 4B A0 8B DD 31 95 BD 14 CD 0D 79 9D 1E 78 E5 07 E4 8C A2 53 59 9E A4 0F 37 B3 98 A3 C6 B4 08 FC 9E C7 F6 90 DF 31 8A 6E EA 98 4B 6D C9 6B 4D A2 92 D6 B7 6E 0D BD 82 04 5A 94 4F 1D 1E 8C CB 52 76 A0 95 63 27 15 70 E1 65 7D 1E 1A A3 14 E3 28 16 29 37 29 40 B2 82 9E 32 3C E6 62 88 95 E3 F2 4C F2 0C 7F 31 3D 70 88 A5 88 C2 A3 1F DB 82 E9 7F 16 56 EF 8C 64 86 B3 56 5E DB AC 5F 51 89 57 7E 62 17 20 A8 C2 CC F3 6E 38 3A 8B 35 EE F6 D0 3A FD 48 E7 D1 22 58 F4 8C EF E1 EC 61 F3 A6 6C 81 A9 1E 29 D2 8B 06 A3 78 24 10 F4 74 81 DF 44 C9 FA A0 64 A4 3F 35 D5 1E 56 C6 E0 3F 19 77 AB C1 2F C4 5E 69 5A E8 F1 8D 2F 92 B6 F1 BC 97 A4 65 A6 87 3B D6 A5 D1 EF 27 84 04 2D 6F D7 B8 05 05 B2 B5 97 7B 66 A9 B1 5E 53 63 96 FD B5 A4 03
|
||||
TEA decrypted: 01 DB C5 C7 48 9C 83 25 8A C4 9C 57 B1 57 28 22 B6 E3 4C 76 B9 91 67 D8 1B C2 45 70 21 59 F5 C0 A2 32 D0 9A E6 CD 20 C1 F7 AE 1F 8A 1E D7 6A 29 9C 5A 10 95 43 14 CB 3F AE 58 6F 9D 34 03 54 66 DE 32 8D 88 43 2E 95 F3 80 F7 B8 F3 7F 73 AC 37 E4 8C 8B 22 57 83 54 79 E9 E5 82 8E A7 17 C8 D8 69 67 CD 55 7F EF 07 EB D0 78 D5 55 AC 5A EC E1 FD 29 30 2D 73 D5 8E 10 12 49 A7 DB 0E B4 65 96 A3 8F A2 09 08 46 32 C2 E0 D6 C7 58 4B A1 82 B3 48 47 2D 41 37 FD FB E0 87 A3 18 DF F4 80 7F D5 44 73 A3 67 79 AC 22 86 99 A4 33 00 AE C9 AD 0E F2 5B 45 00 AA A0 B1 35 BE F2 5B 53 61 CD 97 46 B0 BB 35 13 BB 37 64 60 8F 96 84 A3 82 D0 27 9A 87 D3 43 3C 7C 51 EF 58 8C 7D 8E 9B F6 ED B0 66 36 1E 43 0B 86 49 DE E3 E1 4E 59 1C 3C A2 14 15
|
||||
TEA decrypted: 01 00 1E 00 10 53 6D 21 50 5A 42 76 74 7D 2D 7A 2E 3C 2D 2A 57 00 06 00 78 ED A3 A3 19 F1 99 59 44 47 79 93 39 00 23 3B 50 9C 2C 25 B8 EC AE 1B 2E 1F A4 0F 70 EE B5 74 80 5D B4 FB 58 0E 92 73 9F 6D BC 4A 65 59 52 FC 1F 38 07 16 A0 67 30 E4 E6 0B F4 AC 98 50 2C B3 51 2D 9E 79 5E B0 EB 15 F5 90 2C 1C 49 74 64 BA 42 8B 3D 9D B1 8F 9B B3 24 D5 7E 4D 93 19 62 58 13 3A FF 41 0C 0B BF AB AD 9A C6 C9 79 C7 A1 1D 8E 2E A3 D9 E6 A9 38 E2 F8 01 10 00 3C 00 01 00 38 ED 3A 44 E9 3F 24 3D F6 71 0F 50 2E 6B 7B 69 C6 02 AD BA 4C 0B AF CF 8E 1C 96 A8 08 A6 A6 DE 18 46 94 12 02 6A 8B CD 67 CB 4D 18 BB 2D F2 06 44 B8 1D 19 C8 14 4C A1 37 01 15 00 10 69 B7 6B EB 4D C0 6D E5 7C FB E4 6B 5D 6C 86 9A
|
||||
TEA encrypt: 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B
|
||||
TEA encrypt: 01 12 00 38 6E 42 D2 18 7A 9A D1 C0 E9 56 D3 64 16 4A 0D 46 40 EF 27 B9 79 25 2D 06 E0 28 C5 5B E5 77 3D 55 2D DC DE 13 ED 46 1E 90 2B B8 C9 13 60 39 53 53 01 A3 C1 A1 FC 44 07 E2 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 ED A3 A3 19 F1 99 59 44 47 79 93 39 00 23 3B 50 9C 2C 25 B8 EC AE 1B 2E 1F A4 0F 70 EE B5 74 80 5D B4 FB 58 0E 92 73 9F 6D BC 4A 65 59 52 FC 1F 38 07 16 A0 67 30 E4 E6 0B F4 AC 98 50 2C B3 51 2D 9E 79 5E B0 EB 15 F5 90 2C 1C 49 74 64 BA 42 8B 3D 9D B1 8F 9B B3 24 D5 7E 4D 93 19 62 58 13 3A FF 41 0C 0B BF AB AD 9A C6 C9 79 C7 A1 1D 8E 2E A3 D9 E6 A9 38 E2 F8 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 A1 2F CE 46 45 62 54 0A 21 9C 32 EA A9 B9 4E FC 90 86 1B 97 3D A9 3B 45 20 02 89 63 7D 14 B2 E4 E4 DF ED 5C 3F 82 63 B1 E6 23 61 65 C5 E2 32 11 69 4D 1E 8E 80 81 BF 76 4F 46 03 32 45 39 C9 2E 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 01 10 00 3C 00 01 00 38 ED 3A 44 E9 3F 24 3D F6 71 0F 50 2E 6B 7B 69 C6 02 AD BA 4C 0B AF CF 8E 1C 96 A8 08 A6 A6 DE 18 46 94 12 02 6A 8B CD 67 CB 4D 18 BB 2D F2 06 44 B8 1D 19 C8 14 4C A1 37 03 12 00 05 01 00 00 00 01 05 08 00 05 01 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 08 4D 8B 2A EE 77 E3 28 25 DB CF 94 F3 DF 1C 3F E0 88 0B E1
|
||||
Packet sent: 02 37 13 08 36 31 04 76 E4 B8 DD 03 00 00 00 01 01 01 00 00 68 20 00 00 00 00 00 01 01 03 00 19 02 6D 28 41 D2 A5 6F D2 FC 3E 2A 1F 03 75 DE 6E 28 8F A8 19 3E 5F 16 49 D3 00 00 00 10 EF 4A 36 6A 16 A8 E6 3D 2E EA BD 1F 98 C1 3C DA 10 54 F4 51 F3 3A 48 6E 76 ED BD 89 E3 0A AA 23 4D 82 81 7E C8 2A 36 22 D1 4E 2D 15 90 16 41 DA DD 9C C3 D3 22 4A 25 84 26 4B C0 68 71 03 90 99 E4 73 10 0D 82 38 1E 1A 5D 4E 99 0E 58 C2 C7 AD 31 0E C6 AA DC 0F 29 D7 38 E1 14 27 64 41 FC 50 4B 4B 84 31 F9 DE 20 7D 83 67 EA F2 69 89 D3 07 0C 62 9A E2 2C 59 58 CA A7 27 A1 7F 92 C6 6D DA 73 F6 7F F1 1E EF 94 20 81 A0 5B 5C 82 78 27 DE 81 FB D2 B5 4F 05 90 F4 60 7B F0 07 D2 9D 36 09 28 4A 6A 83 F3 52 08 2E C2 53 20 71 D8 F1 CD 57 7A ED 7C 6F 57 F5 89 50 A2 68 DD A6 32 0A 4A 3E F8 61 93 90 A7 B8 37 F4 C6 25 AF 76 04 E4 08 AD F1 3E 76 9F 14 25 24 6A C0 B3 21 54 70 37 55 70 C1 30 4B 50 4A E3 76 4B A3 93 D0 D3 46 67 51 92 2D D0 85 CB 6A F0 AC 16 F0 2B 41 3A 1A 29 E1 90 8F A3 8B 65 A1 61 54 6F 71 06 D2 8E CF 28 70 9E 4B 35 7A 56 C9 58 16 68 E5 44 3E EA 69 A3 0C C5 3C BD FC 7A 5A D4 28 9D 81 67 C1 A1 03 79 28 04 5D 66 B3 E3 A3 69 48 E0 4E 79 A7 3F AD F3 5F BB 2D 1C 3F FE A4 30 BE 7D 36 54 B1 B3 BB A4 F5 C4 A8 04 8B 68 DE 04 E8 FC FF DA 16 39 8B 7D F5 2B 25 B8 2E A5 08 2A FE 53 52 74 F5 99 B7 BF 34 C5 10 E1 A1 B4 DF 2C CA 2C E3 99 D1 97 88 95 D2 DF E6 1B 3F 28 5B B0 8F 66 F2 55 E7 7B 52 49 DE 7F FE B0 17 E1 C3 97 0A 38 00 4F 0A EA EF 5A 15 DE 09 47 AB C0 D5 B2 BF 08 28 37 2B 07 CA BF 7B A8 F7 3D 34 DD 12 52 C4 94 B2 B8 D7 C6 7E 99 FC 10 52 3D AE 31 93 01 51 2B C7 AC BE 06 76 7C 93 9B 50 E6 B3 42 A5 B8 B3 C1 7D 5C 65 73 81 53 D6 D6 1C 42 DA DB D4 78 D2 DA 76 A1 7D 5A 87 5A FB 9A C6 D6 B0 99 58 E2 F2 42 05 E0 7B A9 BD BA C7 D8 06 23 9D EE 2A E7 43 CC 96 CC 79 D0 18 40 36 4E 4B 3A BD F5 9D B9 E3 A0 06 7F AE F3 E0 D2 F9 87 30 2F 5C E0 D1 4E A9 81 A0 5B 63 39 FB FC 98 33 F7 06 32 27 B4 E4 BE BB 26 A4 92 72 BD 5C 12 2A F8 D5 89 A6 F9 8B 4D 19 C2 EC FB 99 ED F7 E9 5C 6E 25 49 F6 D5 48 23 08 C4 19 48 33 E6 73 F2 BD AD 37 95 CE 80 E1 7E 06 E9 A4 F6 1C F0 53 CE CF 03
|
||||
TEA decrypted: 20 D0 B5 46 30 25 73 7B 26 C5 7A A3 4B CA 3F CB 02 0C 7C 09 3F 90 F0 47 B4 A5 F9 3D 7A DF 53 2B 80 9D 9C F6 ED 77 88 CD A3 42 FF 7B 39 EB 05 D0 D6 18 C4 5E 7F 58 A9 2A 94 C8 FA 11 33 68 9A AC D0 5C 9D CE D4 10 59 AF 59 7F 49 A5 56 D9 35 07 36 25 31 DC 4F 64 FD A6 78 D9 31 DA 26 30 BE 4B 8D D3 92 0D B2 C7 FC 50 68 E6 D0 64 87 E9 8D 22 10 68 32 E2 50 9F 19 0A 5C C4 DB 04 A2 6B A5 D1 40 E5 67 B1 88 13 04 20 8F 92 F1 CF 8D C8 B1 BB 54 4D 1E A2 FA 7E 7B 65 67 8F 58 0D 97 88 92 69 D3 6C B6 67 70 B4 D8 54 A4 0B 01 B2 3A 88 89 32 C0 91 E1 10 16 0F 8B 61 D7 D6 8D D1 32 34 23 3A C6 79 95 79 E4 1C 0D BA CE DF A3 76 23 0F C5 9D AE 63 24 6D 79 76 4F BB F8 FE A7 DE 3D 0E 84 9E 28 5A 8F F7 9D BA FD F1 22 61 E3 20 93 AA FA 9D C6 69 13 A4 52 98 6D ED E6 9D 84 35 A8 50 90 5E 3A F8 28 36 ED C0 C1 40 A8 E4 FD 78 26 E2 52 F5 EB 89 C5 42 D9 AB A4 24 87 BD AB 07 F3 C5 F1 1A B0 87 78 20 85 3E B4 D9 D1 2E 01 5D 3A DB F0 56 AB 12 B1 37 98 FE EA 88 4C EB 5B 1B 29 0A 99 A5 54 CE F6 6A F7 12 5A EE 18 B4 4E 03 5E 36 33 29 6C E9 4F F7 FD F0 76 AE 0B 37 74 06 07 F5 E7 FC 1B AA C7 BA 4F 02 96 DA 83 B6 D0 33 08 71 EE 19 31 57 8C 57 F3 BA F2 CE F2 B7 73 77 E9 5B A3 A4 4D F9 80 2B 59 87 20 A2 FF AB 56 C5 D6 9F 5F 8C CA 13 3F CE 6B 95 42 B9 E1 A2 AE E8 FB E1 B3 A0 AA 80 8A C2 D6 CD FE 52 D4 2A 89 4B 36 8F 7B 0C FF 63 74 83 1C 2E C5 25 B7 F7 D3 D6 B9 71 00 8E 2C 69 88 23 5E 70 98 E7 A6 86 76 1D 6B E3 26 65 7C AC 40 CF 9E A8 A5 D4 3E 41 38 1A 27 06 4B 68 88 11 B3 D3 3C 70 88 AB 6F 50 FC F3 DC D7 C3 82 20 62 1B 3E 90 29 6E 0A 2A 42 26 EA 0E B2 7D 3D D6 25 C6 CE B0 BB 5F 09 09 10 56 EE DA EC 2A 95 53 BD ED 02 89 60 E5 25 0A 21 05 34 26 05 CF BE C5 EB 56 08 9A 83 D8 19 77 11 F5 6D 81 92 C6 F2 B9 06 4C D4 E4 10 78 1D 94 3E 41 72 9A 7B 26 3B FF 06 34 11 F8 8C FE 18 E1 95 BB A6 B1 52 60 EF EA 39 A6 B3 F9 48 63 6B 34 7C 69 4A 9E B5 FD A3 AE DD C0 51 8F 46 BB CC C9 E5 96 D4 3F 72 01 CA C1 92 D6 E9 28 44 15 6D D5 22 2E 7B 4E B2 42 A8 BC 13 18 C3 9A 4E B7 C0 A7 A8 F5 99 FB 07 27 48 00 90 B3 61 BE A2 60 41 24 14 B0 68 0C FD 59 22 2B CB 1D 3F 42 F8 9A 95 A5 05 D6 FF 63 E2 3E 51
|
||||
TEA decrypted: 00 01 09 00 70 00 01 19 43 F9 12 75 3F E9 C9 9C 79 33 02 E6 42 1D 35 00 38 6A EA FA 99 C2 BE CA 5A B1 8E 83 12 28 B2 CD 0D 6F F8 21 0A CA 62 8A BE AE 8B 01 9D 16 D4 7C 7E E7 FA 0C 83 16 5D 76 05 2C 74 88 C8 1C EB 99 B3 03 F8 66 E0 B0 A5 0C 63 00 20 B9 55 18 2D CB F3 19 1B 90 4D B6 D9 98 28 17 BE E2 5E 05 13 A2 03 93 20 62 52 B3 E1 45 C3 48 DD 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 01 07 01 D3 00 01 00 16 00 00 00 01 00 00 00 64 00 00 0D C6 00 09 3A 80 00 00 00 3C 00 02 27 50 57 6D 6A 7D 2B 34 29 64 23 3C 41 3E 34 6B 00 88 00 04 5D 5E 8D 71 1B 12 55 CB 00 00 00 00 00 78 4C 2C DD A9 01 1B DB BC 1D 74 C8 F2 5D 0C 3D 10 DF 68 9F 72 BE 2B CD C8 3E F1 00 7B FD DC 71 12 E6 3C EE C4 FE 7B 25 E2 72 0F 06 52 21 6D 44 B4 E7 61 0D A8 8E F3 3D E4 DD FE F5 12 84 0A EA A6 08 29 83 37 0B D5 F8 91 69 EB B5 D5 39 99 47 4C 42 E9 7A 40 A9 0B 0C 97 A7 E6 FA 78 88 DD C8 6F 5A 0D D2 31 E1 DC B3 73 8E 5A 9A 66 0E C5 80 A8 74 A8 E8 B4 D1 50 B2 C0 68 2B 74 3C 2D 3F 3B 34 3A 57 50 65 73 4D 69 4B 00 78 00 01 5D 5E 8D 71 00 70 52 5A 52 54 29 56 A0 32 31 61 06 C2 E4 4D 09 5B 81 28 F2 D0 7B 2B 3A F4 4F 54 CD 9A 3E E6 FC 80 F9 DC 1A 43 8A 8A 8B 09 89 3A C2 8B 41 68 A1 E8 07 98 19 9D 2E 56 98 0B 96 D8 0C D3 16 0A 37 76 65 D4 3C 47 9C 27 65 20 F3 DD 86 B9 F4 31 57 00 53 10 50 82 3F DF 74 08 01 50 83 0C DB 15 6D 68 23 CB 14 93 28 4A 0B CB 19 CC 90 B4 5F D4 63 C7 00 83 01 7E 4E 50 35 33 75 65 5D 27 23 44 50 4D 4B 50 2B 00 70 00 01 5D 5E 8D 71 00 68 7B AE 3D 10 36 2B EB 2C 78 42 03 09 C4 F6 D5 9D 54 11 D3 1B F6 1C 69 D5 00 CD 8B 36 02 35 2E F5 29 64 72 90 38 F2 AE 99 AE EE 23 CA 1C EC 3C 9A 1C C0 C2 B3 4B EE 26 C4 95 4D EF 14 B5 C3 E0 C2 0C 52 CF 49 6A 57 5E D2 33 1F D2 62 9A 00 40 6E 13 6E E9 A6 C5 00 DB 93 2D 21 58 22 DC AA DD E1 CE EE E0 7B A4 1E 01 21 6B 7E 4B 47 68 47 66 66 4E 33 7B 4D 74 23 3F 68 01 08 00 29 00 01 00 25 00 1D 02 5B 14 28 E0 B9 91 E2 80 A2 CC 80 CF 89 E2 80 A2 CC 81 E0 B9 91 29 02 13 80 02 00 05 00 04 00 00 00 01 01 15 00 10 CA E0 70 A0 99 E1 14 4E 74 20 46 74 9F 36 14 C0
|
||||
TEA encrypt: 00 07 00 88 00 04 5D 5E 8D 71 1B 12 55 CB 00 00 00 00 00 78 4C 2C DD A9 01 1B DB BC 1D 74 C8 F2 5D 0C 3D 10 DF 68 9F 72 BE 2B CD C8 3E F1 00 7B FD DC 71 12 E6 3C EE C4 FE 7B 25 E2 72 0F 06 52 21 6D 44 B4 E7 61 0D A8 8E F3 3D E4 DD FE F5 12 84 0A EA A6 08 29 83 37 0B D5 F8 91 69 EB B5 D5 39 99 47 4C 42 E9 7A 40 A9 0B 0C 97 A7 E6 FA 78 88 DD C8 6F 5A 0D D2 31 E1 DC B3 73 8E 5A 9A 66 0E C5 80 A8 74 A8 E8 B4 D1 50 B2 C0 00 0C 00 16 00 02 00 00 00 00 00 00 00 00 00 00 3D 97 B4 F0 1F 40 00 00 00 00 00 15 00 30 00 01 01 92 A5 D2 59 00 10 54 2D CF 9B 60 BF BB EC 0D D4 81 CE 36 87 DE 35 02 AE 6D ED DC 00 10 06 A9 12 97 B7 F8 76 25 AF AF D3 EA B4 C8 BC E7 00 36 00 12 00 02 00 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 00 1F 00 22 00 01 1A 68 73 66 E4 BA 79 92 CC C2 D4 EC 14 7C 8B AF 43 B0 62 FB 65 58 A9 EB 37 55 1D 26 13 A8 E5 3D 01 05 00 88 00 01 01 02 00 40 02 01 03 3C 01 03 00 00 C2 D9 3F A5 A0 1B 6C 03 A2 EF AB CB 42 92 44 8E 15 97 28 1F DE B6 E9 0A 5C 53 01 CE A2 CC 95 3F E0 CB 30 3F 5C 67 09 22 83 CC 8A 80 8F D6 26 F5 EF EC 24 15 95 8E CE 99 00 40 02 02 03 3C 01 03 00 00 A1 4D 57 52 9E 5B 1F BB 48 75 09 67 F8 C0 64 F6 9B 2A 44 61 78 29 C1 26 9C 3C 59 0E DF 9B D1 59 97 0B 0C 2B 09 27 C6 7C 20 63 11 02 E1 4E A4 DE E2 59 CF A7 A1 47 0A B6 01 0B 00 85 00 02 B9 ED EF D7 CD E5 47 96 7A B5 28 34 CA 93 6B 5C BB 10 00 00 00 00 00 00 00 02 00 63 3E 00 63 02 04 03 06 02 00 04 00 52 D9 00 00 00 00 A9 58 3E 6D 6D 49 AA F6 A6 D9 33 0A E7 7E 36 84 03 01 00 00 68 20 15 8B 00 00 01 02 00 00 03 00 07 DF 00 0A 00 0C 00 01 00 04 00 03 00 04 20 5C 00 46 FA 5E 5A 2D 7A 2F 2F BB 87 BB C3 BD 65 12 B6 C9 37 45 FD 2D D2 60 A9 64 E4 32 85 22 6E B0 8B 68 00 00 00 00 00 2D 00 06 00 01 C0 A8 89 01
|
||||
Packet sent: 02 37 13 08 28 04 34 76 E4 B8 DD 02 00 00 00 01 2E 01 00 00 68 52 00 30 00 3A 00 38 6A EA FA 99 C2 BE CA 5A B1 8E 83 12 28 B2 CD 0D 6F F8 21 0A CA 62 8A BE AE 8B 01 9D 16 D4 7C 7E E7 FA 0C 83 16 5D 76 05 2C 74 88 C8 1C EB 99 B3 03 F8 66 E0 B0 A5 0C 63 89 7E 03 26 34 DF 29 49 11 71 16 8E 8E 51 A4 9A B1 7F 0D D6 2A AD E7 69 43 69 9D C1 88 C0 CC 1B D9 4F 14 C0 CE 5B 0D F2 AA F6 72 7D 6E 50 93 B9 D0 D7 D8 B8 E3 AF E9 68 33 66 02 68 BD C1 43 D4 95 22 CE B9 16 0D 3B 7A D1 B4 CE 35 78 9F 67 8D 41 60 05 4F 89 6C B8 F5 BD CC 41 B8 5E 48 A1 28 8F 66 BC 4B 76 3A 8D 83 2E 1C A5 B5 26 69 EE 21 95 E5 1A 2F E7 DD CB BA 7F 87 F3 F5 69 A5 D7 E8 21 A7 E8 A2 FF E1 BB 7F 8D 89 91 5A D3 8D 72 9E D3 70 AB D4 F7 7E B2 5C C8 1E 5F FF F5 BC 9B 84 7F 3F 16 E1 6B 4C CD 6C D6 CD A2 58 C5 94 54 E9 1F CB 8A 43 D5 AE 9E C5 75 86 0C 3D 0F 8A 7D 72 DA AE 2D 66 81 DE E3 E1 16 40 BE 63 F6 99 C7 5C 7A 72 5A DD 35 41 69 76 3E 10 1C 7B DE C4 43 F4 EC 7C C5 98 ED 5E 06 0D B7 AF C9 7C F8 27 93 76 22 44 9A 32 F6 86 C3 84 EE AE C3 6B CE F4 FA 34 DA EA 68 D6 D0 39 8B 5B 8D 10 0D 9D BA 9C A3 F8 5A 86 56 A8 F6 5C 6A E4 31 FC 6E F8 95 49 4F 4D 49 E3 7F 74 75 8A DA 5D 7C C0 1F 03 9C 1C 69 1B 18 A0 63 B3 24 C4 AF 8C 64 2A 8A A0 E6 2E C3 3D 10 9E 08 EF 53 A4 11 2B 33 BA E8 92 BB 4B 25 B8 F2 79 12 0F F4 4C DB 0C BE BD 78 25 3C 8A 2B 66 B8 A7 34 8D F5 C9 D0 7E BE 35 E9 3F 3E 02 D3 43 AA 18 45 A7 00 B2 06 BF 5E 21 FA F5 28 A5 47 6A 0C AB 20 78 A5 EF 93 68 B7 7F DC 90 B1 F6 46 60 8A 16 BF F3 4B A2 2D 00 F0 72 68 CC 31 27 CE 84 4E 7B 4D ED 06 1C 3E ED F5 D0 EB DE 1F CC C2 CA 4C 98 76 E3 86 06 62 7D 04 07 84 A5 50 EF 6C 53 BD DA 80 1F 23 E3 1D CC F4 B2 33 74 A1 A2 C0 49 AB E4 9E 76 B7 4F B7 CD 9B 77 B5 DB 09 69 A1 F4 42 E3 88 D1 38 1A D2 92 B0 50 82 C6 97 BC A7 ED 99 5F F5 DD 21 B6 FF FB 3B 4D 2A 3B 73 67 92 BB CA 48 F8 D5 3C A8 DF B5 8B F3 17 21 47 42 E9 2F DB 53 77 CD 7C DA DE F3 76 EA A4 34 FD AD 58 E6 98 5A A4 D7 8B 6E 08 11 DE 5C 14 D9 A0 13 E0 8A 0C 4E 15 E8 09 59 F7 1A AF 0E 99 D9 22 73 81 63 21 54 D9 5C 29 D2 DB C0 59 72 D3 28 C6 27 B2 5C E0 A7 BF 13 02 38 8B 71 E1 75 A9 47 5C 66 A1 5B 03
|
||||
TEA decrypted: 00 00 0D 00 06 00 01 00 00 00 00 00 1F 00 22 00 01 A7 15 4D B7 2C 4E 36 31 5C A2 36 D4 2A 57 7A E9 E6 17 63 32 17 BD AA 14 21 82 BE F4 80 97 40 22 00 14 00 04 00 01 00 3C 01 0C 00 73 00 01 AE 21 31 3D 20 97 FE 61 C3 34 4F BA 8C DF D3 AC 76 E4 B8 DD 1B 12 55 CB B3 A5 5D 5E 8D 72 00 00 00 B4 03 3D 97 B4 F0 3D 97 B4 AA 00 00 00 07 00 30 C2 FB 5F 26 E7 98 02 F1 94 8F A4 88 03 F1 31 71 56 C9 7F DB 4E ED 5E DB AF 0D 0E 2E 9A C3 66 43 57 36 3E 60 80 8B 1A 9D 89 0A 2A 92 EF D7 5E 83 08 02 04 08 08 08 08 08 04 00 05 01 3A 3C 0A 22 01 0E 00 56 00 01 00 52 13 80 42 00 00 02 02 00 00 18 28 16 1D 6D 33 45 6D EE E7 AB 20 FF A2 69 CB 77 AA AE 5C AA 64 DD 5D 9B 00 20 A5 77 50 C4 8B 2F 5F 1C 4D CE 2D EC 48 A3 E4 EC 8D 05 3E E6 71 9C D7 6F 7F A5 59 B0 44 0D 95 DA 00 0C 00 00 00 01 00 00 00 00 00 00 00 40 00 2F 00 2A 00 01 8F FE 4F BB B2 63 C7 69 C3 F1 3C DC A1 E8 77 A3 DD 97 FA 00 36 04 40 EF 11 7A 31 02 4E 10 13 94 02 28 00 00 00 00 00 00 01 0D 00 2C 00 01 00 28 7C 2B 95 F9 A3 87 C0 B6 4D D0 C0 40 26 B7 EA 2B D9 B5 A9 A3 29 FD 38 E7 E4 80 68 70 AB 62 52 21 56 1B AF 3D 8D 01 58 16 01 05 00 32 00 01 02 02 00 15 02 00 01 03 10 AC 4B 56 16 B8 EB 07 2E 2F E7 EA F5 07 33 7C 3B 00 15 02 00 02 03 10 ED 62 2E 2A AF B1 3A ED C5 0B 98 D5 3F E2 48 11
|
||||
TEA encrypt: 01 00 0A00 01 00 01 00 04 00 00 00 00
|
||||
Packet sent: 02 37 13 00 EC 83 E4 76 E4 B8 DD 02 00 00 00 01 01 01 00 00 68 20 A8 FE BA F9 5B 03 20 0E 85 1F 3E D9 41 75 33 F1 93 72 D9 BF F7 06 67 0E 03
|
||||
TEA encrypt: 33 00 05 00 08 74 2E 71 71 2E 63 6F 6D 00 0A 71 75 6E 2E 71 71 2E 63 6F 6D 00 0C 71 7A 6F 6E 65 2E 71 71 2E 63 6F 6D 00 0C 6A 75 62 61 6F 2E 71 71 2E 63 6F 6D 00 09 6B 65 2E 71 71 2E 63 6F 6D
|
||||
Packet sent: 02 37 13 00 1D 77 21 76 E4 B8 DD 02 00 00 00 01 01 01 00 00 68 20 DA 9D 02 8E 4D A3 C7 37 73 BA 44 F9 BB 49 0E D0 13 87 D2 38 29 2D 6F 75 55 58 35 06 46 A3 31 50 8E 15 28 8A AB A4 EE B1 B7 96 8C 8A 23 F3 A4 18 D5 CB 50 34 04 C2 60 22 4B 4F 72 7D DC D1 EF 2C 28 84 07 C4 CF A1 1D 79 78 8D 90 47 50 E5 E5 ED 03
|
||||
TEA decrypted: 33 00 00 0A 5A 52 65 77 55 51 4C 6A 30 52 00 2C 53 78 44 6F 53 73 6E 61 56 66 36 76 4A 69 65 32 6A 76 76 56 49 51 2D 66 46 2D 62 46 6B 76 55 45 6D 78 4C 51 6E 47 69 4B 38 4A 59 5F 00 05 00 08 74 2E 71 71 2E 63 6F 6D 00 2C 6C 4A 41 4D 71 31 38 64 45 48 4F 53 45 74 35 49 75 52 58 42 66 49 45 37 75 46 79 52 71 5A 2A 6F 6D 30 65 77 57 6C 43 67 76 77 45 5F 00 0A 71 75 6E 2E 71 71 2E 63 6F 6D 00 2C 51 71 38 6C 71 73 51 6D 47 30 6F 6A 64 6D 35 57 4C 6F 44 63 62 78 36 38 36 51 56 36 7A 43 48 38 43 68 79 44 47 68 49 64 34 6B 41 5F 00 0C 71 7A 6F 6E 65 2E 71 71 2E 63 6F 6D 00 2C 49 76 31 30 69 67 31 6B 33 43 4F 64 31 74 42 6B 6D 71 64 49 32 38 72 45 66 6D 6F 5A 6F 65 41 31 48 42 77 4D 57 48 78 35 35 36 73 5F 00 0C 6A 75 62 61 6F 2E 71 71 2E 63 6F 6D 00 2C 67 6F 39 7A 49 58 74 71 74 71 67 7A 56 6B 6A 37 47 51 73 6F 41 62 30 6F 4D 67 6F 6C 2A 6F 53 52 41 79 67 33 34 4A 59 68 75 6E 34 5F 00 09 6B 65 2E 71 71 2E 63 6F 6D 00 2C 6C 51 6C 31 69 6A 59 68 69 67 62 72 51 57 46 39 62 51 6F 48 74 68 32 73 37 42 43 38 39 6A 52 71 72 6D 4F 48 52 35 66 53 75 44 6B 5F
|
||||
TEA encrypt: 88 76 E4 B8 DD 00
|
||||
Packet sent: 02 37 13 00 5C B3 0F 76 E4 B8 DD 02 00 00 00 01 01 01 00 00 68 20 DD F0 A1 34 7C 49 67 B7 EB 22 C4 65 48 0F 69 C6 03
|
||||
TEA decrypted: 88 76 E4 B8 DD 00 00 00 03 00 15 02 13 00 00 00 29 00 33 E5 B0 9A E6 9C AA E5 BC 80 E9 80 9A E4 BC 9A E5 91 98 EF BC 8C E7 AB 8B E5 8D B3 E7 82 B9 E5 87 BB E4 BA 86 E8 A7 A3 E4 BC 9A E5 91 98 E7 89 B9 E6 9D 83 00 0A E7 AD 89 E7 BA A7 3A 20 32 31 00 13 51 51 E6 B4 BB E8 B7 83 E5 A4 A9 E6 95 B0 3A 20 35 33 31 00 1C E5 8D 87 E7 BA A7 E5 89 A9 E4 BD 99 E6 B4 BB E8 B7 83 E5 A4 A9 E6 95 B0 3A 20 34 31 00 1C E4 BC 9A E5 91 98 E6 88 90 E9 95 BF E9 98 B6 E6 AE B5 3A 20 56 49 50 24 56 49 50 24 00 10 E7 AD 89 E7 BA A7 3A 20 24 4C 45 56 45 4C 24 20 00 31 E7 AD 89 E7 BA A7 3A 20 24 4C 45 56 45 4C 24 EF BC 8C 51 51 E4 BC 9A E5 91 98 E5 8A A0 E9 80 9F E5 8D 87 E7 BA A7 51 51 E7 AD 89 E7 BA A7 E4 B8 AD
|
||||
|
||||
|
||||
mirai
|
||||
TEA decrypted: D2 FF 53 90 44 72 12 24 99 11 6F 49 BB 2B 2B 78 1B 96 AD 72 BB F1 B4 DA 7A FA F7 BF 23 5C 01 A1 C9 71 80 C5 F8 8D 6D 64 8F E1 AC AE 95 A8 7A AA 22 B2 C1 79 69 FF B9 64 CF 50 BB 3A BD 9C F5 50 AA 1C 2C F5 F7 7A 9B 5F E4 34 99 A2 27 B2 BC A3 F7 61 ED B4 09 73 CD D1 0B 1D A7 9A CB 57 EC 30 79 56 B8 C1 01 FF 79 B5 27 9F 67 32 C9 9A C1 22 FE 16 99 78 D8 93 D0 90
|
||||
TEA encrypt: 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 01 00 00 03 09 00 0C 00 01 3D 97 B4 F2 01 6F A1 58 22 01 00 36 00 12 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 14 00 1D 01 03 00 19 02 6D 28 41 D2 A5 6F D2 FC 3E 2A 1F 0 ,.3 75 DE 6E 28 8F A8 19 3E 5F 16 49 D3
|
||||
packet sent: 02 37 13 08 25 31 02 76 E4 B8 DD 03 00 00 00 01 2E 01 00 00 68 52 00 00 00 00 A8 F2 14 5F 58 12 60 AF 07 63 97 D6 76 B2 1A 3B DF 18 86 D0 60 19 3D 82 B7 82 89 81 B6 EA A6 E1 B1 31 C1 2F 24 1D A6 86 90 FE 54 E5 1D 6F F4 86 F4 01 CE 32 A0 C1 2C AD BA A3 28 53 A3 59 A9 07 72 96 7F D0 96 C2 5C 0E EC E6 A4 9D 7C C3 5F 7B 1C B5 9A ED F6 DE 5E 2F 9A B1 09 10 0B 80 6B C0 F8 C6 32 37 2F 41 9A B7 BA 8D C1 B6 01 F7 8D 50 E3 57 A6 33 C5 80 29 40 3C 30 84 08 5C 40 F7 C6 03
|
||||
TEA decrypted: F3 77 B0 EC 44 8E 39 B6 0B BF 8F 19 80 3C B3 AD 70 F8 80 D7 34 B9 EE 3A A1 5A 31 D0 19 70 1F 09 5D 41 76 6C 4E 47 E2 A5 81 CC 06 CF AD D4 07 74 59 EA 6C BC 55 00 F3 A9 B5 21 9B 1D FC 00 B4 05 13 26 01 F9 2F C7 16 E3 4F 17 CF 7A 86 63 88 2A 0C 89 6E E2 90 F4 72 DF 91 A5 13 17 7E 30 90 0F 7A BA 43 37 DD 46 17 46
|
||||
TEA encrypt: 13 94 07 50 00 02 76 E4 B8 DD 00 00 04 53 00 00 00 01 00 00 15 85 00 00 01 95 5B 96 CB 95 CF 1C A6 94 C4 B7 79 07 9A BB 15 5D 5E 8C 5B 00 00 00 00 00 00 00 00 00 00 00 00 00 1B 12 55 CB 00 00 00 00 00 00 00 00 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 8A 4B 77 4E E3 65 65 05 89 C3 82 8D 73 AA FC E8
|
||||
TEA encrypt: 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B
|
||||
TEA encrypt: 01 12 00 38 3D E7 6E BB FC C4 A9 7E 1F AF 38 7D ED 3A 5F 9F 29 9C EA 88 BC E2 E9 99 79 76 C2 DC A7 C4 97 5F 94 EB 71 4D A6 E3 8E 6A B5 FD 2A D4 C6 9E C8 BA D2 ED CC D6 59 B3 5F C1 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 B6 AC C8 A4 11 59 5A 15 B4 65 5F DF ED 82 1D 4A F4 07 F9 3E B5 33 65 D8 04 C3 52 F9 58 02 6F 81 FF 96 5A 97 D8 2F 83 C7 6D 53 EA 30 67 CA C2 62 00 E5 83 67 31 C9 07 BE DC 94 17 A3 4E C7 44 D4 57 5C FA 37 ED B6 AF AD BA 01 93 2F 85 20 5D C1 B1 CA 78 33 38 F5 0B 37 EF 6B 7C 5D 66 D1 10 E5 46 67 74 86 A0 F4 3A CD 10 96 7D DC B8 79 5D 97 37 C3 FF E9 98 94 3C 4E 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 5A 0C 99 46 D3 7B 41 88 C5 46 2B B6 66 EA FD BD 90 8D C6 4D 6E 94 A6 30 B0 83 64 1B 70 56 67 84 53 62 79 BD 34 F7 A5 22 BC B5 96 65 46 0F 1A 54 8B 62 A3 B0 D5 C3 66 7B 27 71 1C B4 C5 11 EA 00 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 03 12 00 05 01 00 00 00 01 05 08 00 05 10 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 C1 57 54 04 89 B0 32 3C CE 59 15 3C DF 64 E8 79 BD 0C 0B 42
|
||||
packet sent: 02 37 13 08 36 31 03 76 E4 B8 DD 03 00 00 00 01 01 01 00 00 68 20 00 00 00 00 00 01 01 03 00 19 02 6D 28 41 D2 A5 6F D2 FC 3E 2A 1F 03 75 DE 6E 28 8F A8 19 3E 5F 16 49 D3 00 00 00 10 EF 4A 36 6A 16 A8 E6 3D 2E EA BD 1F 98 C1 3C DA 87 45 98 A8 AB FA F2 ED 86 95 5F 04 89 67 74 11 F6 61 AF D5 77 92 BE DA 1B 95 97 EA 46 29 E0 A7 57 DD 07 57 75 20 67 FB 09 BA A9 54 84 75 CE 1D FF 2B 7B 56 88 A8 43 DF 57 24 2A 08 4E 9A 81 1E 36 C6 F8 DB 95 44 E2 11 89 39 77 A6 DD D4 35 65 2A E7 02 73 B6 DC EA 76 27 91 04 E4 CF C4 47 F6 00 48 4F 63 C2 4B 37 CD 5A DF 34 6F 2F 14 6B 6B 39 AB 79 D5 47 C8 18 DC B9 3C 5A 36 15 89 D7 D5 FD EF 41 F0 68 42 A9 22 FA D5 90 B3 1B BE D6 4F 44 5D 70 4D BE 8E 7C 5F D5 1A 5D 11 C9 F9 F6 44 20 08 39 04 56 83 30 11 2F AE 81 85 55 A8 AA 99 68 E7 51 15 13 EF 7D E4 3F 0D E3 2B E3 52 A1 84 74 68 36 AF 17 01 49 5B 81 93 19 C8 77 9C 4C 3F C2 00 AD CB EF AC E1 20 85 57 11 36 96 94 42 2C 0D 2A 29 AA 0B 72 39 87 1E EA 36 D7 23 E2 40 07 99 DC CA 6A 9B DE 25 5A E5 05 C6 32 9C 98 8F D2 CD E0 D3 7D E1 E4 17 0D A1 DA 5B CC 53 F6 14 98 CF B2 23 EB 61 35 22 65 C2 A6 8D AC BA 4E D1 0D B1 58 BC ED 35 FC A7 DE A6 1A 2C AF 7B 06 DB 74 4E 81 E0 CE 05 EB 4A AB 9C 96 CC 96 F4 28 E7 B8 F5 95 9E 8D 6E 81 B0 6B 38 ED 29 BC 41 DE B0 3C 8E 4F 64 4B CD 5C F7 D8 24 95 81 BA F7 C0 44 F5 05 31 60 A3 B4 A9 FB D7 D5 E2 AC 8D F2 34 2D 6E 30 84 C3 0F DB 9D 4E 87 34 AE 23 11 47 50 B1 90 F1 9D 9E 9C BD 96 45 3C 60 68 7F 19 F0 F4 13 B2 8F 9A 4F C7 1B 82 C5 A3 DF 5D CF A6 E9 EA 17 46 57 69 81 52 D5 F2 82 B5 51 DF 39 35 39 70 BB 73 9A AA 0C B8 EF 1D DA 43 2A 6D 73 3E FD 6A CC 7C 60 E4 DF 0A A8 B0 B5 A2 E8 72 DC 7A 8F 87 F2 16 06 F6 0D 30 6A 12 F4 29 62 97 EB D8 41 5B 34 23 E0 CB 12 41 37 6D AD D7 34 24 38 C6 69 5E 94 11 D1 C1 48 68 64 B4 3B 5A 07 A9 BC 06 A0 15 6F EA A8 D4 48 14 5D 37 D7 1B 6E AE 51 1E ED 2C 07 86 D5 5D 3F 95 1E AE 25 F7 19 ED 68 E6 E5 C1 93 10 03
|
||||
TEA decrypted: 7B 77 D9 8C C0 93 52 8B 44 D5 FB B2 F7 2C 0B 86 C3 9B 8D 6D A2 53 5C C5 C5 B2 68 11 7D BF B7 02 55 0E 28 38 A9 B5 13 B4 9E 97 B4 6A 26 81 BE F6 A2 9E 5E F2 D5 E3 7E 7A 69 BB 3B 89 0C B5 7D 1C 11 E0 EF AA 4E 77 D5 ED A0 43 C3 E8 0E 73 5D FD 35 6D FE 2F B0 49 4F 02 9C 6F 13 5B 60 CE 52 A9 8C EC 42 57 2D 5A 47 7B 2E 8C EC 02 63 60 6E 20 1D D6 A7 15 89 27 92 0F 03 64 57 3A E8 20 6F 30 10 BF B4 A0 C1 95 BF 6C E4 25 74 30 81 9A C9 EB B2 AB 6F D4 98 FE 59 6C 0D 32 29 B3 91 68 F9 D2 96 B1 50 3F C3 CB 84 C3 E2 A2 D6 3B D5 3A E8 EA 10 52 4C 05 A9 B8 33 18 DA 52 EC B9 75 74 F5 BB 51 E8 FB D6 9B 17 CC A4 B4 FF C1 2B 41 CA 6A E0 E6 64 FF 06 C5 56 9C 8F E0 EF 45 52 53 69 A3 C4 26 42 4E 49 26 60 3D C5 03 90 61 CC 7B D0 CA 00 1A 2A B5 F6 37 90 A4 FF 15 6D 32 1A EC CA D7 5F
|
||||
TEA decrypted: 21 0B EB 52 24 0A C0 42 7A 15 D7 4A C9 3B C7 F5 F4 F0 CC 68 A4 AF 37 39 5E FF 83 C4 A1 C7 A1 4B 20 2A F4 D5 62 D9 5F 1A 45 39 35 AF 7B 7E 7B 2F DE 29 05 55 CA 0F F7 12 40 50 64 CB 2F 93 AB F8 0C 7B 40 52 8C 4A 4E 8F 81 8C F2 33 57 E2 8E C3 71 78 17 03 B2 86 9C E6 F3 C9 DC C7 14 99 F4 9D D4 43 56 B3 79 29 80 14 77 7D 99 A1 35 B8 60 A2 A7 B0 70 31 81 25 87 73 06 41 00 91 D1 B1 A1 EB FC 28 2E 55 DA 63 2D 31 D1 48 E3 DB 6F 78 66 A5 4A 4C 7F 46 2B DE 7B 16 0E B1 C4 59 9D 02 15 45 8C C5 89 69 B5 BF D6 81 EA 66 52 02 0E 13 7F 7F EA 87 0C D4 B2 5E EF 76 2C 79 36 E1 1A AF B8 B9 CC 76 E7 91 E7 AE 2D F2 6E 3F 4B 05 0E 33 9F 56 04 18 CE 6B 23 6B 32 F6 25 48 DD 77 1B DB ED E8 E4 69 94 DD A3 74 08 0C 77 86 00 25 F2 9D 4A 34
|
||||
TEA encrypt: 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B
|
||||
TEA encrypt: 01 12 00 38 3D E7 6E BB FC C4 A9 7E 1F AF 38 7D ED 3A 5F 9F 29 9C EA 88 BC E2 E9 99 79 76 C2 DC A7 C4 97 5F 94 EB 71 4D A6 E3 8E 6A B5 FD 2A D4 C6 9E C8 BA D2 ED CC D6 59 B3 5F C1 03 0F 00 11 00 0F 44 45 53 4B 54 4F 50 2D 4D 31 37 4A 52 45 55 00 05 00 06 00 02 76 E4 B8 DD 00 06 00 78 78 BC 24 30 D3 21 F7 8D 36 0D 1C 79 4E 75 5B 17 D1 54 A2 95 B8 E5 89 04 FC E1 CA 76 B0 01 8F 0C 9E 1C 98 04 2D D3 BA FE A0 7E 15 49 A3 04 46 E4 FE 37 E4 C2 09 D0 DA 89 3E E8 20 85 8F A9 D2 A2 A7 DF 7D 52 F1 9F 93 60 3C 58 63 D7 9E C3 6E 01 EF D5 32 98 FE 36 41 B3 E3 BB 22 AD C5 BF 2D 9F A1 91 D1 E6 11 94 5E 21 C9 98 C4 AE D8 A2 85 5F D7 2B D8 7D 93 1E BB EB 00 15 00 30 00 01 01 27 9B C7 F5 00 10 65 03 FD 8B 00 00 00 00 00 00 00 00 00 00 00 00 02 90 49 55 33 00 10 15 74 C4 89 85 7A 19 F5 5E A9 C9 A3 5E 8A 5A 9B 00 1A 00 40 2E C9 53 D6 3F 21 E6 6C 50 F4 20 6E 9D 71 7E 3F 2B 22 02 8B 80 AD 08 54 3A 9C DB 74 C0 F3 AE A3 1C FB 53 82 5B 75 7B 4E 6A C1 FC E8 85 51 42 3C EE 5C 73 DD 9A 13 95 A2 14 5A B7 F4 AE ED C8 6B 00 18 00 16 00 01 00 00 04 53 00 00 00 01 00 00 15 85 76 E4 B8 DD 00 00 00 00 01 03 00 14 00 01 00 10 60 C9 5D A7 45 70 04 7F 21 7D 84 50 5C 66 A5 C6 01 10 00 3C 00 01 00 38 D3 00 ED E1 26 79 8E 7A 24 6A C8 1D C3 77 66 E9 38 5A 74 65 E0 9A B9 3D F2 79 55 C8 30 EA 56 1C 4E 80 BF 92 28 5D C4 D9 47 CE 1D 50 38 6B 01 54 B8 33 87 C0 4A 17 74 76 03 12 00 05 01 00 00 00 01 05 08 00 05 10 00 00 00 00 03 13 00 19 01 01 02 00 10 04 EA 78 D1 A4 FF CD CC 7C B8 D4 12 7D BB 03 AA 00 00 00 00 01 02 00 62 00 01 04 EB B7 C1 86 F9 08 96 ED 56 84 AB 50 85 2E 48 00 38 E9 AA 2B 4D 26 4C 76 18 FE 59 D5 A9 82 6A 0C 04 B4 49 50 D7 9B B1 FE 5D 97 54 8D 82 F3 22 C2 48 B9 C9 22 69 CA 78 AD 3E 2D E9 C9 DF A8 9E 7D 8C 8D 6B DF 4C D7 34 D0 D3 00 14 8B 30 9B F0 F0 01 5E 66 B2 40 08 B6 91 07 9B 6E 00 FA B6 8C
|
||||
packet sent: 02 37 13 08 36 31 04 76 E4 B8 DD 03 00 00 00 01 01 01 00 00 68 20 00 00 00 00 00 01 01 03 00 19 02 6D 28 41 D2 A5 6F D2 FC 3E 2A 1F 03 75 DE 6E 28 8F A8 19 3E 5F 16 49 D3 00 00 00 10 EF 4A 36 6A 16 A8 E6 3D 2E EA BD 1F 98 C1 3C DA 66 89 53 B3 E3 C3 81 2F 78 64 6E E9 04 73 47 F1 8D BB F5 5A 4C BF 85 89 E3 7D 87 68 98 20 7B D5 C6 E4 82 85 19 BF F9 27 8A B8 42 22 18 36 92 9D 0C 73 83 87 C3 A1 22 17 8D 3C 3A 86 3D F3 FF 9C A8 FB BC C0 02 D4 DC FE 55 45 BC 76 42 A6 13 87 82 25 3A 80 1D 78 A9 81 1E 2C B9 5D 72 EA CD CE EC D6 7A 12 4B 75 29 D7 D8 A2 88 52 CA 71 B6 9D F7 9A 0D 07 63 BD 29 C0 D8 0C E7 C8 2A FB F5 29 B3 84 86 07 99 0A 36 DE D3 CE 69 2C EC D6 B9 C1 5E ED 96 D4 98 CB 7C F2 70 22 C4 15 D5 B2 63 9D 98 E1 78 3F 70 43 48 50 A8 D1 FB E7 EC C4 D0 A7 8E FA 19 41 4F FB 95 75 A2 AA 9D E2 FE 8C 5D 08 60 8A C7 4B E1 53 62 72 0B 6C 6B 2F D8 38 B8 41 CA DD 09 E7 E1 32 F1 EE A8 73 99 14 EC F4 B9 E2 9F 8A 6D A8 2F AB FE 2B 8E 0D C7 07 02 FF C9 66 2D 67 0C 15 64 BE F1 C3 7F B2 60 E4 5A EB C3 25 49 02 52 6B 77 49 3E 58 15 69 E0 13 B7 53 F0 09 9F 31 D8 3C 88 9B 43 1C 0E DE 09 A1 35 8C 23 BC 3C 6C 6C 76 0F 69 99 12 CE 37 5B B8 E4 3F 16 C0 70 1E D0 03 1C 5E FD D6 7D 9A 20 25 4D E0 E1 91 CE 84 19 D5 5F 70 1A DC 1E 4C 7E 29 03 B7 DE 71 21 34 C0 0C 27 27 82 74 8F 91 54 F9 1C 53 B7 3E E3 A3 29 E9 FE 5B A8 CE FA D0 41 24 59 DD 17 38 A0 0E 63 12 96 0A 10 8F 96 20 26 C5 95 58 CE 67 A5 F6 34 37 F3 AD CE 2B 2B B3 4B 25 5E 17 98 95 60 C0 5E 26 FE 36 4F 2E 21 65 0F C6 AB BB C6 6A 7A 24 BE 92 3E 9E 83 56 FE D5 AA F4 25 6A 83 19 86 C1 04 84 36 20 B7 29 CA 42 AC 29 E9 A2 14 95 4C 6F 0F E5 17 D4 C8 0D 27 87 8A 8F E8 7D 44 EE 1C CE 98 3A 5D 73 FE 79 C1 44 67 FD DE 22 A3 73 85 57 37 06 F7 14 C1 53 F8 DE 0B 91 36 81 CD DE E8 51 8B 28 5F 24 54 F4 47 D3 40 51 E3 59 BB D2 EC 58 1B 4B CE 98 AC 4F 99 1A 85 1C 09 D1 17 16 98 B7 3A 97 CA AD FD 04 7B 63 04 51 66 31 BE 85 A4 CF 61 58 7D EA AD C0 62 84 83 35 94 8D 08 47 85 7C 55 E0 DD 0E 33 59 17 71 9A 9E F1 1A 9C 63 05 A7 9D FC B2 36 44 0D 18 21 B4 6F 66 6E 45 B3 04 91 5A B1 34 30 EC 6F 98 2C 02 C6 16 46 55 1B 03
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user