Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Mirai
Commits
e697da8c
Commit
e697da8c
authored
Sep 01, 2019
by
liujiahua123123
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
836e9c2b
0dbcd18c
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
385 additions
and
405 deletions
+385
-405
mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java
mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java
+1
-1
mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt
.../main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt
+5
-15
mirai-core/src/main/java/net/mamoe/mirai/network/packet/AccountInfo.kt
...c/main/java/net/mamoe/mirai/network/packet/AccountInfo.kt
+1
-6
mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt
.../main/java/net/mamoe/mirai/network/packet/ClientPacket.kt
+1
-3
mirai-core/src/main/java/net/mamoe/mirai/network/packet/Heartbeat.kt
...src/main/java/net/mamoe/mirai/network/packet/Heartbeat.kt
+1
-4
mirai-core/src/main/java/net/mamoe/mirai/network/packet/MessageEvent.kt
.../main/java/net/mamoe/mirai/network/packet/MessageEvent.kt
+1
-9
mirai-core/src/main/java/net/mamoe/mirai/network/packet/PacketUtil.java
.../main/java/net/mamoe/mirai/network/packet/PacketUtil.java
+0
-23
mirai-core/src/main/java/net/mamoe/mirai/network/packet/SKey.kt
...core/src/main/java/net/mamoe/mirai/network/packet/SKey.kt
+70
-0
mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerEvent.kt
...c/main/java/net/mamoe/mirai/network/packet/ServerEvent.kt
+1
-3
mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerPacket.kt
.../main/java/net/mamoe/mirai/network/packet/ServerPacket.kt
+6
-16
mirai-core/src/main/java/net/mamoe/mirai/network/packet/Session.kt
...e/src/main/java/net/mamoe/mirai/network/packet/Session.kt
+121
-0
mirai-core/src/main/java/net/mamoe/mirai/network/packet/Touch.kt
...ore/src/main/java/net/mamoe/mirai/network/packet/Touch.kt
+133
-0
mirai-core/src/main/java/net/mamoe/mirai/network/packet/UnknownServerPacket.kt
...ava/net/mamoe/mirai/network/packet/UnknownServerPacket.kt
+12
-0
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientSendMessagePacket.kt
...oe/mirai/network/packet/client/ClientSendMessagePacket.kt
+0
-11
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/login/ClientServerRedirectionPacket.kt
...work/packet/client/login/ClientServerRedirectionPacket.kt
+0
-43
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/session/ClientSKeyRequestPacket.kt
.../network/packet/client/session/ClientSKeyRequestPacket.kt
+0
-25
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/touch/ClientTouchPacket.kt
...oe/mirai/network/packet/client/touch/ClientTouchPacket.kt
+0
-102
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/touch/RefreshSKey.kt
...et/mamoe/mirai/network/packet/client/touch/RefreshSKey.kt
+0
-22
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginPacket.kt
...net/mamoe/mirai/network/packet/login/ClientLoginPacket.kt
+3
-88
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginStatusPacket.kt
...moe/mirai/network/packet/login/ClientLoginStatusPacket.kt
+2
-3
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginVerificationCodePacket.kt
...network/packet/login/ClientLoginVerificationCodePacket.kt
+2
-6
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseFailedPacket.kt
...i/network/packet/login/ServerLoginResponseFailedPacket.kt
+2
-2
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponsePasswordVerifiedPacket.kt
...packet/login/ServerLoginResponsePasswordVerifiedPacket.kt
+5
-5
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseResendPacket.kt
...i/network/packet/login/ServerLoginResponseResendPacket.kt
+4
-4
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseVerificationCodePacket.kt
...packet/login/ServerLoginResponseVerificationCodePacket.kt
+4
-4
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginSuccessPacket.kt
...oe/mirai/network/packet/login/ServerLoginSuccessPacket.kt
+2
-2
mirai-core/src/main/java/net/mamoe/mirai/network/packet/verification/ServerVerificationCodePacket.kt
...twork/packet/verification/ServerVerificationCodePacket.kt
+4
-4
mirai-core/src/main/java/net/mamoe/mirai/util/DebugLogger.kt
mirai-core/src/main/java/net/mamoe/mirai/util/DebugLogger.kt
+2
-2
mirai-core/src/test/java/PacketTest.kt
mirai-core/src/test/java/PacketTest.kt
+2
-2
No files found.
mirai-core/src/main/java/net/mamoe/mirai/MiraiServer.java
View file @
e697da8c
...
@@ -5,7 +5,7 @@ import net.mamoe.mirai.event.MiraiEventManager;
...
@@ -5,7 +5,7 @@ import net.mamoe.mirai.event.MiraiEventManager;
import
net.mamoe.mirai.event.events.server.ServerDisableEvent
;
import
net.mamoe.mirai.event.events.server.ServerDisableEvent
;
import
net.mamoe.mirai.event.events.server.ServerEnableEvent
;
import
net.mamoe.mirai.event.events.server.ServerEnableEvent
;
import
net.mamoe.mirai.network.RobotNetworkHandler
;
import
net.mamoe.mirai.network.RobotNetworkHandler
;
import
net.mamoe.mirai.network.packet.
client.touch.
ClientTouchPacket
;
import
net.mamoe.mirai.network.packet.ClientTouchPacket
;
import
net.mamoe.mirai.task.MiraiTaskManager
;
import
net.mamoe.mirai.task.MiraiTaskManager
;
import
net.mamoe.mirai.utils.LoggerTextFormat
;
import
net.mamoe.mirai.utils.LoggerTextFormat
;
import
net.mamoe.mirai.utils.MiraiLogger
;
import
net.mamoe.mirai.utils.MiraiLogger
;
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt
View file @
e697da8c
package
net.mamoe.mirai.network
package
net.mamoe.mirai.network
import
net.mamoe.mirai.MiraiServer
import
net.mamoe.mirai.MiraiServer
import
net.mamoe.mirai.network.packet.client.ClientPacket
import
net.mamoe.mirai.network.packet.*
import
net.mamoe.mirai.network.packet.client.login.*
import
net.mamoe.mirai.network.packet.login.*
import
net.mamoe.mirai.network.packet.client.session.*
import
net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacket
import
net.mamoe.mirai.network.packet.client.touch.ClientHeartbeatPacket
import
net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacketEncrypted
import
net.mamoe.mirai.network.packet.client.touch.ClientRefreshSKeyRequestPacket
import
net.mamoe.mirai.network.packet.client.touch.ServerHeartbeatResponsePacket
import
net.mamoe.mirai.network.packet.client.writeHex
import
net.mamoe.mirai.network.packet.client.writeRandom
import
net.mamoe.mirai.network.packet.server.ServerPacket
import
net.mamoe.mirai.network.packet.server.event.*
import
net.mamoe.mirai.network.packet.server.login.*
import
net.mamoe.mirai.network.packet.server.security.*
import
net.mamoe.mirai.network.packet.server.touch.ServerTouchResponsePacket
import
net.mamoe.mirai.network.packet.server.touch.ServerTouchResponsePacketEncrypted
import
net.mamoe.mirai.task.MiraiThreadPool
import
net.mamoe.mirai.task.MiraiThreadPool
import
net.mamoe.mirai.util.*
import
net.mamoe.mirai.util.*
import
net.mamoe.mirai.utils.MiraiLogger
import
net.mamoe.mirai.utils.MiraiLogger
...
@@ -216,7 +206,7 @@ class RobotNetworkHandler(val number: Int, private val password: String) {
...
@@ -216,7 +206,7 @@ class RobotNetworkHandler(val number: Int, private val password: String) {
this
.
cookies
=
"uin=o"
+
this
.
number
+
";skey="
+
this
.
sKey
+
";"
this
.
cookies
=
"uin=o"
+
this
.
number
+
";skey="
+
this
.
sKey
+
";"
MiraiThreadPool
.
getInstance
().
scheduleWithFixedDelay
({
MiraiThreadPool
.
getInstance
().
scheduleWithFixedDelay
({
sendPacket
(
Client
RefreshSKey
RequestPacket
(
this
.
number
,
this
.
sessionKey
))
sendPacket
(
Client
SKeyRefreshment
RequestPacket
(
this
.
number
,
this
.
sessionKey
))
},
1800000
,
1800000
,
TimeUnit
.
MILLISECONDS
)
},
1800000
,
1800000
,
TimeUnit
.
MILLISECONDS
)
this
.
gtk
=
getGTK
(
sKey
)
this
.
gtk
=
getGTK
(
sKey
)
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
client/session/
AccountInfo.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/AccountInfo.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet
.client.session
package
net.mamoe.mirai.network.packet
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.client.*
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.TEACryptor
import
java.io.DataInputStream
import
java.io.DataInputStream
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
client/
ClientPacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet
.client
package
net.mamoe.mirai.network.packet
import
lombok.Getter
import
lombok.Getter
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.Packet
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.util.*
import
net.mamoe.mirai.util.*
import
java.io.DataOutputStream
import
java.io.DataOutputStream
import
java.io.IOException
import
java.io.IOException
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
client/touch/ClientH
eat.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
Heartb
eat.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet
.client.touch
package
net.mamoe.mirai.network.packet
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.client.*
import
net.mamoe.mirai.network.packet.server.ServerPacket
import
java.io.DataInputStream
import
java.io.DataInputStream
import
java.io.IOException
import
java.io.IOException
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/event/
MessageEvent.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/MessageEvent.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet
.server.event
package
net.mamoe.mirai.network.packet
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.client.ClientPacket
import
net.mamoe.mirai.network.packet.client.encryptAndWrite
import
net.mamoe.mirai.network.packet.client.writeHex
import
net.mamoe.mirai.network.packet.client.writeQQ
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.TEACryptor
import
net.mamoe.mirai.util.toUHexString
import
net.mamoe.mirai.util.toUHexString
import
java.io.DataInputStream
import
java.io.DataInputStream
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/PacketUtil.java
deleted
100644 → 0
View file @
836e9c2b
package
net.mamoe.mirai.network.packet
;
/**
* @author Him188moe
*/
public
final
class
PacketUtil
{
/**
* 易语言返回的 string(valueof
*/
public
static
int
getGTK
(
String
sKey
)
{
int
init
=
5381
;
int
i
=
0
;
int
length
=
sKey
.
length
();
while
(
i
++
<
length
)
{
init
+=
init
<<
5
+
sKey
.
charAt
(
i
);
}
return
init
&
2147483647
;
}
}
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/security/ServerSKeyResponsePacket
.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
SKey
.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet
.server.security
package
net.mamoe.mirai.network.packet
import
net.mamoe.mirai.network.packet.server.ServerPacket
import
net.mamoe.mirai.network.Protocol
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.TEACryptor
import
java.io.DataInputStream
import
java.io.DataInputStream
/**
* @author Him188moe
*/
@ExperimentalUnsignedTypes
@PacketId
(
"00 1D"
)
class
ClientSKeyRequestPacket
(
private
val
qq
:
Int
,
private
val
sessionKey
:
ByteArray
)
:
ClientPacket
()
{
override
fun
encode
()
{
this
.
writeRandom
(
2
)
//part of packet id
this
.
writeQQ
(
qq
)
this
.
writeHex
(
Protocol
.
_fixVer
)
this
.
encryptAndWrite
(
sessionKey
)
{
it
.
writeHex
(
"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"
)
}
}
}
/**
* @author Him188moe
*/
@PacketId
(
"00 1D"
)
@ExperimentalUnsignedTypes
class
ClientSKeyRefreshmentRequestPacket
(
private
val
qq
:
Int
,
private
val
sessionKey
:
ByteArray
)
:
ClientPacket
()
{
override
fun
encode
()
{
this
.
writeRandom
(
2
)
//part of packet id
this
.
writeQQ
(
qq
)
this
.
encryptAndWrite
(
sessionKey
)
{
it
.
writeHex
(
"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"
)
}
}
}
/**
/**
* @author Him188moe
* @author Him188moe
*/
*/
...
@@ -17,6 +54,9 @@ class ServerSKeyResponsePacket(input: DataInputStream) : ServerPacket(input) {
...
@@ -17,6 +54,9 @@ class ServerSKeyResponsePacket(input: DataInputStream) : ServerPacket(input) {
}
}
}
}
/**
* @author Him188moe
*/
class
ServerSKeyResponsePacketEncrypted
(
inputStream
:
DataInputStream
)
:
ServerPacket
(
inputStream
)
{
class
ServerSKeyResponsePacketEncrypted
(
inputStream
:
DataInputStream
)
:
ServerPacket
(
inputStream
)
{
override
fun
decode
()
{
override
fun
decode
()
{
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/event/ServerEventPacke
t.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
ServerEven
t.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet
.server.event
package
net.mamoe.mirai.network.packet
import
net.mamoe.mirai.network.packet.server.ServerPacket
import
net.mamoe.mirai.network.packet.server.goto
import
net.mamoe.mirai.utils.MiraiLogger
import
net.mamoe.mirai.utils.MiraiLogger
import
java.io.ByteArrayOutputStream
import
java.io.ByteArrayOutputStream
import
java.io.DataInputStream
import
java.io.DataInputStream
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/
ServerPacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerPacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.server
package
net.mamoe.mirai.network.packet
import
net.mamoe.mirai.network.packet.Packet
import
net.mamoe.mirai.network.packet.login.*
import
net.mamoe.mirai.network.packet.client.session.ServerAccountInfoResponsePacketEncrypted
import
net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacketEncrypted
import
net.mamoe.mirai.network.packet.client.toHexString
import
net.mamoe.mirai.network.packet.client.touch.ServerHeartbeatResponsePacket
import
net.mamoe.mirai.network.packet.server.event.ServerMessageEventPacketRawEncoded
import
net.mamoe.mirai.network.packet.server.login.*
import
net.mamoe.mirai.network.packet.server.security.ServerLoginSuccessPacket
import
net.mamoe.mirai.network.packet.server.security.ServerSKeyResponsePacketEncrypted
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.getAllDeclaredFields
import
net.mamoe.mirai.util.getAllDeclaredFields
import
net.mamoe.mirai.util.hexToBytes
import
net.mamoe.mirai.util.hexToBytes
import
net.mamoe.mirai.util.toUHexString
import
net.mamoe.mirai.util.toUHexString
...
@@ -73,9 +64,6 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
...
@@ -73,9 +64,6 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
"08 28 04 34"
->
ServerSessionKeyResponsePacketEncrypted
(
stream
)
"08 28 04 34"
->
ServerSessionKeyResponsePacketEncrypted
(
stream
)
"00 81 EC 78"
->
UnknownPacket
(
stream
)
"00 81 AD 7A"
->
UnknownPacket
(
stream
)
else
->
when
(
idHex
.
substring
(
0
,
5
))
{
else
->
when
(
idHex
.
substring
(
0
,
5
))
{
"00 EC"
->
ServerLoginSuccessPacket
(
stream
)
"00 EC"
->
ServerLoginSuccessPacket
(
stream
)
"00 1D"
->
ServerSKeyResponsePacketEncrypted
(
stream
)
"00 1D"
->
ServerSKeyResponsePacketEncrypted
(
stream
)
...
@@ -88,6 +76,8 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
...
@@ -88,6 +76,8 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
"00 CE"
,
"00 17"
->
ServerMessageEventPacketRawEncoded
(
stream
,
idHex
.
hexToBytes
())
"00 CE"
,
"00 17"
->
ServerMessageEventPacketRawEncoded
(
stream
,
idHex
.
hexToBytes
())
"00 81"
->
UnknownServerPacket
(
stream
)
else
->
throw
IllegalArgumentException
(
idHex
)
else
->
throw
IllegalArgumentException
(
idHex
)
}
}
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/security/ServerSessionKeyResponsePacket
.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
Session
.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet
.server.security
package
net.mamoe.mirai.network.packet
import
net.mamoe.mirai.network.packet.client.writeHex
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.server.ServerPacket
import
net.mamoe.mirai.util.ByteArrayDataOutputStream
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.TEACryptor
import
net.mamoe.mirai.util.getRandomKey
import
net.mamoe.mirai.util.lazyEncode
import
net.mamoe.mirai.util.lazyEncode
import
java.io.DataInputStream
import
java.io.DataInputStream
import
java.net.InetAddress
/**
* @author Him188moe
*/
@ExperimentalUnsignedTypes
@PacketId
(
"08 28 04 34"
)
class
ClientSessionRequestPacket
(
private
val
qq
:
Int
,
private
val
serverIp
:
String
,
private
val
loginIP
:
String
,
private
val
md5_32
:
ByteArray
,
private
val
token38
:
ByteArray
,
private
val
token88
:
ByteArray
,
private
val
encryptionKey
:
ByteArray
,
private
val
tlv0105
:
ByteArray
)
:
ClientPacket
()
{
override
fun
encode
()
{
this
.
writeQQ
(
qq
)
this
.
writeHex
(
"02 00 00 00 01 2E 01 00 00 68 52 00 30 00 3A"
)
this
.
writeHex
(
"00 38"
)
this
.
write
(
token38
)
this
.
write
(
TEACryptor
.
encrypt
(
object
:
ByteArrayDataOutputStream
()
{
override
fun
toByteArray
():
ByteArray
{
this
.
writeHex
(
"00 07 00 88"
)
this
.
write
(
token88
)
this
.
writeHex
(
"00 0C 00 16 00 02 00 00 00 00 00 00 00 00 00 00"
)
this
.
writeIP
(
serverIp
)
this
.
writeHex
(
"1F 40 00 00 00 00 00 15 00 30 00 01"
)
//fix1
this
.
writeHex
(
"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 "
)
this
.
writeHex
(
Protocol
.
_0836fix
)
this
.
writeHex
(
"00 36 00 12 00 02 00 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00"
)
this
.
writeHex
(
Protocol
.
_0825data0
)
this
.
writeHex
(
Protocol
.
_0825data2
)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
"00 00 00 00 00 1F 00 22 00 01"
)
this
.
writeHex
(
"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"
)
//device ID
this
.
write
(
tlv0105
)
this
.
writeHex
(
"01 0B 00 85 00 02"
)
this
.
writeHex
(
"B9 ED EF D7 CD E5 47 96 7A B5 28 34 CA 93 6B 5C"
)
//fix2
this
.
write
(
getRandomKey
(
1
))
this
.
writeHex
(
"10 00 00 00 00 00 00 00 02"
)
//fix3
this
.
writeHex
(
"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"
)
this
.
write
(
md5_32
)
this
.
writeHex
(
"68"
)
this
.
writeHex
(
"00 00 00 00 00 2D 00 06 00 01"
)
this
.
writeIP
(
InetAddress
.
getLocalHost
().
hostAddress
)
return
super
.
toByteArray
()
}
}.
toByteArray
(),
encryptionKey
))
}
}
/**
/**
* Dispose_0828
* Dispose_0828
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/touch/ServerTouchResponsePacket
.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
Touch
.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet
.server.touch
package
net.mamoe.mirai.network.packet
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.server.ServerPacket
import
net.mamoe.mirai.util.*
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.toUHexString
import
java.io.DataInputStream
import
java.io.DataInputStream
import
java.io.IOException
/**
/**
* A packet received when logging in, used to redirect server address
* A packet received when logging in, used to redirect server address
...
@@ -71,4 +67,67 @@ class ServerTouchResponsePacketEncrypted(private val type: ServerTouchResponsePa
...
@@ -71,4 +67,67 @@ class ServerTouchResponsePacketEncrypted(private val type: ServerTouchResponsePa
ServerTouchResponsePacket
.
Type
.
TYPE_08_25_31_01
->
Protocol
.
_0825key
.
hexToBytes
()
ServerTouchResponsePacket
.
Type
.
TYPE_08_25_31_01
->
Protocol
.
_0825key
.
hexToBytes
()
}).
inputStream
()));
}).
inputStream
()));
}
}
}
/**
* The packet to touch server, that is, to start the connection to the server.
*
* @author Him188moe
*/
@ExperimentalUnsignedTypes
@PacketId
(
"08 25 31 01"
)
class
ClientTouchPacket
(
val
qq
:
Int
,
val
serverIp
:
String
)
:
ClientPacket
()
{
@ExperimentalUnsignedTypes
@Throws
(
IOException
::
class
)
override
fun
encode
()
{
this
.
writeQQ
(
qq
)
this
.
writeHex
(
Protocol
.
fixVer
)
this
.
writeHex
(
Protocol
.
_0825key
)
this
.
write
(
TEACryptor
.
CRYPTOR_0825KEY
.
encrypt
(
object
:
ByteArrayDataOutputStream
()
{
@Throws
(
IOException
::
class
)
override
fun
toByteArray
():
ByteArray
{
this
.
writeHex
(
Protocol
.
_0825data0
)
this
.
writeHex
(
Protocol
.
_0825data2
)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
"00 00 00 00 03 09 00 08 00 01"
)
this
.
writeIP
(
serverIp
);
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
().
toUHexString
())
return
super
.
toByteArray
()
}
}.
toByteArray
()))
}
}
/**
* Server redirection (0825 response)
*
* @author Him188moe
*/
@ExperimentalUnsignedTypes
@PacketId
(
"08 25 31 02"
)
class
ClientServerRedirectionPacket
(
private
val
serverIP
:
String
,
private
val
qq
:
Int
)
:
ClientPacket
()
{
@ExperimentalUnsignedTypes
override
fun
encode
()
{
this
.
writeQQ
(
qq
)
this
.
writeHex
(
Protocol
.
fixVer
)
this
.
writeHex
(
Protocol
.
redirectionKey
)
this
.
write
(
TEACryptor
.
encrypt
(
object
:
ByteArrayDataOutputStream
()
{
@Throws
(
IOException
::
class
)
override
fun
toByteArray
():
ByteArray
{
this
.
writeHex
(
Protocol
.
_0825data0
)
this
.
writeHex
(
Protocol
.
_0825data2
)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
"00 01 00 00 03 09 00 0C 00 01"
)
this
.
writeIP
(
serverIP
)
this
.
writeHex
(
"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"
)
this
.
writeHex
(
Protocol
.
publicKey
)
return
super
.
toByteArray
()
}
}.
toByteArray
(),
Protocol
.
redirectionKey
.
hexToBytes
()))
}
}
}
\ No newline at end of file
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/Unknown
Packet.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
UnknownServer
Packet.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet
.server
package
net.mamoe.mirai.network.packet
import
java.io.DataInputStream
import
java.io.DataInputStream
/**
/**
* @author Him188moe
* @author Him188moe
*/
*/
class
UnknownPacket
(
input
:
DataInputStream
)
:
ServerPacket
(
input
)
{
class
Unknown
Server
Packet
(
input
:
DataInputStream
)
:
ServerPacket
(
input
)
{
override
fun
decode
()
{
override
fun
decode
()
{
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientSendMessagePacket.kt
deleted
100644 → 0
View file @
836e9c2b
package
net.mamoe.mirai.network.packet.client
/**
* @author Him188moe
*/
@ExperimentalUnsignedTypes
class
ClientSendMessagePacket
:
ClientPacket
()
{
override
fun
encode
()
{
}
}
\ No newline at end of file
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/login/ClientServerRedirectionPacket.kt
deleted
100644 → 0
View file @
836e9c2b
package
net.mamoe.mirai.network.packet.client.login
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.client.ClientPacket
import
net.mamoe.mirai.network.packet.client.writeHex
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.hexToBytes
import
java.io.IOException
/**
* Server redirection (0825 response)
*
* @author Him188moe
*/
@ExperimentalUnsignedTypes
@PacketId
(
"08 25 31 02"
)
class
ClientServerRedirectionPacket
(
private
val
serverIP
:
String
,
private
val
qq
:
Int
)
:
ClientPacket
()
{
@ExperimentalUnsignedTypes
override
fun
encode
()
{
this
.
writeQQ
(
qq
)
this
.
writeHex
(
Protocol
.
fixVer
)
this
.
writeHex
(
Protocol
.
redirectionKey
)
this
.
write
(
TEACryptor
.
encrypt
(
object
:
ByteArrayDataOutputStream
()
{
@Throws
(
IOException
::
class
)
override
fun
toByteArray
():
ByteArray
{
this
.
writeHex
(
Protocol
.
_0825data0
)
this
.
writeHex
(
Protocol
.
_0825data2
)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
"00 01 00 00 03 09 00 0C 00 01"
)
this
.
writeIP
(
serverIP
)
this
.
writeHex
(
"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"
)
this
.
writeHex
(
Protocol
.
publicKey
)
return
super
.
toByteArray
()
}
}.
toByteArray
(),
Protocol
.
redirectionKey
.
hexToBytes
()))
}
}
\ No newline at end of file
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/session/ClientSKeyRequestPacket.kt
deleted
100644 → 0
View file @
836e9c2b
package
net.mamoe.mirai.network.packet.client.session
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.client.*
/**
* @author Him188moe
*/
@ExperimentalUnsignedTypes
@PacketId
(
"00 1D"
)
class
ClientSKeyRequestPacket
(
private
val
qq
:
Int
,
private
val
sessionKey
:
ByteArray
)
:
ClientPacket
()
{
override
fun
encode
()
{
this
.
writeRandom
(
2
)
//part of packet id
this
.
writeQQ
(
qq
)
this
.
writeHex
(
Protocol
.
_fixVer
)
this
.
encryptAndWrite
(
sessionKey
)
{
it
.
writeHex
(
"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"
)
}
}
}
\ No newline at end of file
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/touch/ClientTouchPacket.kt
deleted
100644 → 0
View file @
836e9c2b
package
net.mamoe.mirai.network.packet.client.touch
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.client.ClientPacket
import
net.mamoe.mirai.network.packet.client.writeHex
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.toUHexString
import
java.io.IOException
/**
* The packet to touch server, that is, to start the connection to the server.
*
* @author Him188moe
*/
@ExperimentalUnsignedTypes
@PacketId
(
"08 25 31 01"
)
class
ClientTouchPacket
(
val
qq
:
Int
,
val
serverIp
:
String
)
:
ClientPacket
()
{
//已经完成测试
@ExperimentalUnsignedTypes
@Throws
(
IOException
::
class
)
override
fun
encode
()
{
//println(this.toUByteArray().toUHexString(" "))
//exitProcess(1)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
Protocol
.
fixVer
)
this
.
writeHex
(
Protocol
.
_0825key
)
this
.
write
(
TEACryptor
.
CRYPTOR_0825KEY
.
encrypt
(
object
:
ByteArrayDataOutputStream
()
{
@Throws
(
IOException
::
class
)
override
fun
toByteArray
():
ByteArray
{
this
.
writeHex
(
Protocol
.
_0825data0
)
this
.
writeHex
(
Protocol
.
_0825data2
)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
"00 00 00 00 03 09 00 08 00 01"
)
//this.writeIP("192.168.1.1");
this
.
writeIP
(
serverIp
);
//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
().
toUHexString
())
return
super
.
toByteArray
()
}
}.
toByteArray
()))
}
}
@ExperimentalUnsignedTypes
fun
main
()
{
val
pk
=
ClientTouchPacket
(
1994701021
,
"123.123.123.123"
)
pk
.
encode
()
pk
.
writeHex
(
Protocol
.
tail
)
//println("pk.toByteArray() = " + pk.toUByteArray().contentToString())
println
(
pk
.
toUByteArray
().
toUHexString
(
" "
))
/*
println(object : ByteArrayDataOutputStream() {
@Throws(IOException::class)
override fun toUByteArray(): UByteArray {
this.writeInt(1994701021)
return super.toUByteArray()
}
}.toUByteArray().toUHexString())*/
/*
println(object : ByteArrayDataOutputStream() {
@Throws(IOException::class)
override fun toUByteArray(): UByteArray {
//this.writeIP("192.168.1.1")
this.writeHex(Protocol._0825data0)
this.writeHex(Protocol._0825data2)
this.writeQQ(1994701021)
this.writeHex("00 00 00 00 03 09 00 08 00 01")
//this.writeIP(Protocol.SERVER_IP.get(2));
this.writeIP("192.168.1.1")
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)
return super.toUByteArray()
}
}.toUByteArray().toUHexString(" "))
*/
}
//
//mirai: 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 C0 A8 01 01 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
//epl : 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 C0 A8 01 01 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
//encryption data
//mirai: 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 C0 A8 01 01 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
//epl : 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 C0 A8 01 01 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
//mirai: 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 C3 47 F0 25 A1 8E 74 EF 1E 0B 32 5B 20 8A FA 3B 0B 52 8F 86 E6 04 F1 D6 F8 63 75 60 8C 0C 7D 06 D1 E0 22 F8 49 EF AF 61 EE 7E 69 72 EB 10 08 30 69 50 1C 84 A9 C2 16 D7 52 B9 1C 79 CA 5A CF FD BC AE D8 A6 BB DC 21 6E 79 26 E1 A2 23 11 AA B0 9A 49 39 72 ED 61 12 B6 88 4D A2 56 23 E9 92 11 92 27 4A 70 00 C9 01 7B 03
//epl : 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 F0 1B 0A 8D 98 99 A9 78 B3 82 69 91 B1 8C FD 64 AC C1 DF B5 A1 A6 4C AC B6 CC A3 B2 11 51 15 00 A4 01 75 7C 61 83 C1 89 3E 93 42 A1 AF D4 1B B3 81 4E 52 67 C1 15 42 5D 28 00 3D 1E 40 28 B1 C9 CE 08 15 F3 2B B5 5A 88 59 4E F4 9A 15 CB 77 BE 56 86 16 CD 4F CD F6 14 D2 A6 B0 7B F1 22 B9 DD 64 98 5C 93 AE 6F 6C 43 03
\ No newline at end of file
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/touch/RefreshSKey.kt
deleted
100644 → 0
View file @
836e9c2b
package
net.mamoe.mirai.network.packet.client.touch
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.client.*
/**
* @author Him188moe
*/
@PacketId
(
"00 1D"
)
@ExperimentalUnsignedTypes
class
ClientRefreshSKeyRequestPacket
(
private
val
qq
:
Int
,
private
val
sessionKey
:
ByteArray
)
:
ClientPacket
()
{
override
fun
encode
()
{
this
.
writeRandom
(
2
)
//part of packet id
this
.
writeQQ
(
qq
)
this
.
encryptAndWrite
(
sessionKey
)
{
it
.
writeHex
(
"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"
)
}
}
}
\ No newline at end of file
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
client/
login/ClientLoginPacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginPacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.
client.
login
package
net.mamoe.mirai.network.packet.login
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.*
import
net.mamoe.mirai.network.packet.client.*
import
net.mamoe.mirai.util.*
import
net.mamoe.mirai.util.*
import
java.io.DataOutputStream
import
java.io.DataOutputStream
import
java.net.InetAddress
import
kotlin.system.exitProcess
/**
/**
* Password submission (0836_622)
* Password submission (0836_622)
...
@@ -40,38 +37,8 @@ class ClientPasswordSubmissionPacket(
...
@@ -40,38 +37,8 @@ class ClientPasswordSubmissionPacket(
}
}
}
}
@UseExperimental
(
ExperimentalUnsignedTypes
::
class
)
fun
main
()
{
println
(
InetAddress
.
getLocalHost
().
hostName
)
exitProcess
(
0
)
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"
)
@PacketId
(
"08 36 31 04"
)
@ExperimentalUnsignedTypes
//todo 测试出来这个包长度有问题
@ExperimentalUnsignedTypes
class
ClientLoginResendPacket3104
(
qq
:
Int
,
password
:
String
,
loginTime
:
Int
,
loginIP
:
String
,
tgtgtKey
:
ByteArray
,
token0825
:
ByteArray
,
token00BA
:
ByteArray
,
tlv_0006_encr
:
ByteArray
?
=
null
)
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
)
:
ClientLoginResendPacket
(
qq
,
password
,
loginTime
,
loginIP
,
tgtgtKey
,
token0825
,
token00BA
,
tlv_0006_encr
)
...
@@ -116,58 +83,6 @@ open class ClientLoginResendPacket internal constructor(
...
@@ -116,58 +83,6 @@ open class ClientLoginResendPacket internal constructor(
}
}
@ExperimentalUnsignedTypes
@PacketId
(
"08 28 04 34"
)
class
ClientSessionRequestPacket
(
private
val
qq
:
Int
,
private
val
serverIp
:
String
,
private
val
loginIP
:
String
,
private
val
md5_32
:
ByteArray
,
private
val
token38
:
ByteArray
,
private
val
token88
:
ByteArray
,
private
val
encryptionKey
:
ByteArray
,
private
val
tlv0105
:
ByteArray
)
:
ClientPacket
()
{
override
fun
encode
()
{
this
.
writeQQ
(
qq
)
this
.
writeHex
(
"02 00 00 00 01 2E 01 00 00 68 52 00 30 00 3A"
)
this
.
writeHex
(
"00 38"
)
this
.
write
(
token38
)
this
.
write
(
TEACryptor
.
encrypt
(
object
:
ByteArrayDataOutputStream
()
{
override
fun
toByteArray
():
ByteArray
{
this
.
writeHex
(
"00 07 00 88"
)
this
.
write
(
token88
)
this
.
writeHex
(
"00 0C 00 16 00 02 00 00 00 00 00 00 00 00 00 00"
)
this
.
writeIP
(
serverIp
)
this
.
writeHex
(
"1F 40 00 00 00 00 00 15 00 30 00 01"
)
//fix1
this
.
writeHex
(
"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 "
)
this
.
writeHex
(
Protocol
.
_0836fix
)
this
.
writeHex
(
"00 36 00 12 00 02 00 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00"
)
this
.
writeHex
(
Protocol
.
_0825data0
)
this
.
writeHex
(
Protocol
.
_0825data2
)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
"00 00 00 00 00 1F 00 22 00 01"
)
this
.
writeHex
(
"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"
)
//device ID
this
.
write
(
tlv0105
)
this
.
writeHex
(
"01 0B 00 85 00 02"
)
this
.
writeHex
(
"B9 ED EF D7 CD E5 47 96 7A B5 28 34 CA 93 6B 5C"
)
//fix2
this
.
write
(
getRandomKey
(
1
))
this
.
writeHex
(
"10 00 00 00 00 00 00 00 02"
)
//fix3
this
.
writeHex
(
"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"
)
this
.
write
(
md5_32
)
this
.
writeHex
(
"68"
)
this
.
writeHex
(
"00 00 00 00 00 2D 00 06 00 01"
)
this
.
writeIP
(
InetAddress
.
getLocalHost
().
hostAddress
)
return
super
.
toByteArray
()
}
}.
toByteArray
(),
encryptionKey
))
}
}
/**
/**
* @author Him188moe
* @author Him188moe
*/
*/
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
client/sessio
n/ClientLoginStatusPacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
logi
n/ClientLoginStatusPacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.
client.sessio
n
package
net.mamoe.mirai.network.packet.
logi
n
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.*
import
net.mamoe.mirai.network.packet.client.*
import
net.mamoe.mirai.util.ClientLoginStatus
import
net.mamoe.mirai.util.ClientLoginStatus
/**
/**
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
client/
login/ClientLoginVerificationCodePacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginVerificationCodePacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.
client.
login
package
net.mamoe.mirai.network.packet.login
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.*
import
net.mamoe.mirai.network.packet.client.ClientPacket
import
net.mamoe.mirai.network.packet.client.writeHex
import
net.mamoe.mirai.network.packet.client.writeQQ
import
net.mamoe.mirai.network.packet.client.writeVarInt
import
net.mamoe.mirai.util.ByteArrayDataOutputStream
import
net.mamoe.mirai.util.ByteArrayDataOutputStream
import
net.mamoe.mirai.util.TEACryptor
import
net.mamoe.mirai.util.TEACryptor
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/
login/ServerLoginResponseFailedPacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseFailedPacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.
server.
login
package
net.mamoe.mirai.network.packet.login
import
net.mamoe.mirai.network.packet.
server.
ServerPacket
import
net.mamoe.mirai.network.packet.ServerPacket
import
java.io.DataInputStream
import
java.io.DataInputStream
/**
/**
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/
login/ServerLoginResponsePasswordVerifiedPacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponsePasswordVerifiedPacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.
server.
login
package
net.mamoe.mirai.network.packet.login
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.
server.
ServerPacket
import
net.mamoe.mirai.network.packet.ServerPacket
import
net.mamoe.mirai.network.packet.
server.
goto
import
net.mamoe.mirai.network.packet.goto
import
net.mamoe.mirai.network.packet.
server.
readNBytes
import
net.mamoe.mirai.network.packet.readNBytes
import
net.mamoe.mirai.network.packet.
server.
readVarString
import
net.mamoe.mirai.network.packet.readVarString
import
net.mamoe.mirai.util.TEACryptor
import
net.mamoe.mirai.util.TEACryptor
import
net.mamoe.mirai.util.TestedSuccessfully
import
net.mamoe.mirai.util.TestedSuccessfully
import
net.mamoe.mirai.util.hexToBytes
import
net.mamoe.mirai.util.hexToBytes
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/
login/ServerLoginResponseResendPacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseResendPacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.
server.
login
package
net.mamoe.mirai.network.packet.login
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.network.packet.
server.
ServerPacket
import
net.mamoe.mirai.network.packet.ServerPacket
import
net.mamoe.mirai.network.packet.
server.
dataInputStream
import
net.mamoe.mirai.network.packet.dataInputStream
import
net.mamoe.mirai.network.packet.
server.
goto
import
net.mamoe.mirai.network.packet.goto
import
net.mamoe.mirai.util.TEACryptor
import
net.mamoe.mirai.util.TEACryptor
import
net.mamoe.mirai.util.TestedSuccessfully
import
net.mamoe.mirai.util.TestedSuccessfully
import
net.mamoe.mirai.util.hexToUBytes
import
net.mamoe.mirai.util.hexToUBytes
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/
login/ServerLoginResponseVerificationCodePacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseVerificationCodePacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.
server.
login
package
net.mamoe.mirai.network.packet.login
import
net.mamoe.mirai.network.packet.
server.
ServerPacket
import
net.mamoe.mirai.network.packet.ServerPacket
import
net.mamoe.mirai.network.packet.
server.
dataInputStream
import
net.mamoe.mirai.network.packet.dataInputStream
import
net.mamoe.mirai.network.packet.
server.
goto
import
net.mamoe.mirai.network.packet.goto
import
net.mamoe.mirai.util.TEACryptor
import
net.mamoe.mirai.util.TEACryptor
import
java.io.DataInputStream
import
java.io.DataInputStream
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/security
/ServerLoginSuccessPacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
login
/ServerLoginSuccessPacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.
server.security
package
net.mamoe.mirai.network.packet.
login
import
net.mamoe.mirai.network.packet.
server.
ServerPacket
import
net.mamoe.mirai.network.packet.ServerPacket
import
java.io.DataInputStream
import
java.io.DataInputStream
/**
/**
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
server/logi
n/ServerVerificationCodePacket.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/
verificatio
n/ServerVerificationCodePacket.kt
View file @
e697da8c
package
net.mamoe.mirai.network.packet.
server.logi
n
package
net.mamoe.mirai.network.packet.
verificatio
n
import
net.mamoe.mirai.network.packet.
server.
ServerPacket
import
net.mamoe.mirai.network.packet.ServerPacket
import
net.mamoe.mirai.network.packet.
server.
dataInputStream
import
net.mamoe.mirai.network.packet.dataInputStream
import
net.mamoe.mirai.network.packet.
server.
goto
import
net.mamoe.mirai.network.packet.goto
import
net.mamoe.mirai.util.TEACryptor
import
net.mamoe.mirai.util.TEACryptor
import
java.io.DataInputStream
import
java.io.DataInputStream
...
...
mirai-core/src/main/java/net/mamoe/mirai/util/DebugLogger.kt
View file @
e697da8c
package
net.mamoe.mirai.util
package
net.mamoe.mirai.util
import
net.mamoe.mirai.network.packet.
client.
ClientPacket
import
net.mamoe.mirai.network.packet.ClientPacket
import
net.mamoe.mirai.network.packet.
server.
ServerPacket
import
net.mamoe.mirai.network.packet.ServerPacket
/**
/**
* @author Him188moe
* @author Him188moe
...
...
mirai-core/src/test/java/PacketTest.kt
View file @
e697da8c
import
net.mamoe.mirai.network.packet.
client.
login.ClientPasswordSubmissionPacket
import
net.mamoe.mirai.network.packet.login.ClientPasswordSubmissionPacket
import
net.mamoe.mirai.util.toUHexString
import
net.mamoe.mirai.util.toUHexString
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
...
@@ -42,6 +42,6 @@ fun main(){
...
@@ -42,6 +42,6 @@ fun main(){
packet.verifyCode.inputStream().transferTo(FileOutputStream(System.getProperty("user.dir") + "/5.png"))
packet.verifyCode.inputStream().transferTo(FileOutputStream(System.getProperty("user.dir") + "/5.png"))
*/
*/
val
packet
=
ClientPasswordSubmissionPacket
(
1994701021
,
"xiaoqqq"
,
131513
,
"123.123.123.123"
,
"tgtgtKey"
.
toByteArray
(),
""
.
toByteArray
())
val
packet
=
ClientPasswordSubmissionPacket
(
1994701021
,
"xiaoqqq"
,
131513
,
"123.123.123.123"
,
"tgtgtKey"
.
toByteArray
(),
""
.
toByteArray
())
packet
.
encodeToByteArray
().
toUByteArray
().
toUHexString
(
" "
)
packet
.
encodeToByteArray
().
toUByteArray
().
toUHexString
(
" "
)
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment