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
aed18543
Commit
aed18543
authored
Aug 22, 2019
by
Him188moe
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
61138e8c
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
65 additions
and
44 deletions
+65
-44
mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt
mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt
+12
-10
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientPacket.kt
...ava/net/mamoe/mirai/network/packet/client/ClientPacket.kt
+1
-1
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/login/ClientLoginPacket.kt
...oe/mirai/network/packet/client/login/ClientLoginPacket.kt
+17
-14
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/ServerPacket.kt
...ava/net/mamoe/mirai/network/packet/server/ServerPacket.kt
+9
-2
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseResendPacket.kt
...rk/packet/server/login/ServerLoginResponseResendPacket.kt
+2
-2
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseSuccessPacket.kt
...k/packet/server/login/ServerLoginResponseSuccessPacket.kt
+17
-10
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/touch/ServerTouchResponsePacket.kt
.../network/packet/server/touch/ServerTouchResponsePacket.kt
+2
-2
mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt
mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt
+1
-1
mirai-core/src/test/java/HexComparator.java
mirai-core/src/test/java/HexComparator.java
+4
-2
No files found.
mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt
View file @
aed18543
package
net.mamoe.mirai.network
package
net.mamoe.mirai.network
import
io.netty.channel.Channel
import
io.netty.channel.Channel
import
kotlinx.coroutines.GlobalScope
import
kotlinx.coroutines.launch
import
net.mamoe.mirai.network.packet.client.ClientPacket
import
net.mamoe.mirai.network.packet.client.ClientPacket
import
net.mamoe.mirai.network.packet.client.login.*
import
net.mamoe.mirai.network.packet.client.login.*
import
net.mamoe.mirai.network.packet.client.writeHex
import
net.mamoe.mirai.network.packet.client.writeHex
...
@@ -70,9 +68,9 @@ class Robot(val number: Int, private val password: String) {
...
@@ -70,9 +68,9 @@ class Robot(val number: Int, private val password: String) {
}
else
{
//password submission
}
else
{
//password submission
this
.
loginIP
=
packet
.
loginIP
this
.
loginIP
=
packet
.
loginIP
this
.
loginTime
=
packet
.
loginTime
this
.
loginTime
=
packet
.
loginTime
this
.
token0825
=
packet
.
token
this
.
token0825
=
packet
.
token
0825
this
.
tgtgtKey
=
packet
.
tgtgtKey
this
.
tgtgtKey
=
packet
.
tgtgtKey
sendPacket
(
ClientPasswordSubmissionPacket
(
this
.
number
,
this
.
password
,
packet
.
loginTime
,
packet
.
loginIP
,
packet
.
tgtgtKey
,
packet
.
token
))
sendPacket
(
ClientPasswordSubmissionPacket
(
this
.
number
,
this
.
password
,
packet
.
loginTime
,
packet
.
loginIP
,
packet
.
tgtgtKey
,
packet
.
token
0825
))
}
}
}
}
...
@@ -83,7 +81,7 @@ class Robot(val number: Int, private val password: String) {
...
@@ -83,7 +81,7 @@ class Robot(val number: Int, private val password: String) {
}
}
is
ServerLoginResponseVerificationCodePacket
->
{
is
ServerLoginResponseVerificationCodePacket
->
{
//[token00BA]
可能来自这里
//[token00BA]
来源之一: 验证码
this
.
token00BA
=
packet
.
token00BA
this
.
token00BA
=
packet
.
token00BA
if
(
packet
.
unknownBoolean
!=
null
&&
packet
.
unknownBoolean
!!
)
{
if
(
packet
.
unknownBoolean
!=
null
&&
packet
.
unknownBoolean
!!
)
{
this
.
sequence
=
1
this
.
sequence
=
1
...
@@ -97,13 +95,17 @@ class Robot(val number: Int, private val password: String) {
...
@@ -97,13 +95,17 @@ class Robot(val number: Int, private val password: String) {
sendPacket
(
ClientLoginSucceedConfirmationPacket
(
this
.
number
,
this
.
serverIP
,
this
.
loginIP
,
this
.
md5_32
,
packet
.
token38
,
packet
.
token88
,
packet
.
encryptionKey
,
this
.
tlv0105
))
sendPacket
(
ClientLoginSucceedConfirmationPacket
(
this
.
number
,
this
.
serverIP
,
this
.
loginIP
,
this
.
md5_32
,
packet
.
token38
,
packet
.
token88
,
packet
.
encryptionKey
,
this
.
tlv0105
))
}
}
//
这个有可能是客户端发送验证码之后收到的回复验证码是否正确?
//
是ClientPasswordSubmissionPacket之后服务器回复的
is
ServerLoginResponseResendPacket
->
{
is
ServerLoginResponseResendPacket
->
{
if
(
packet
.
token00BA
!=
null
)
{
this
.
token00BA
=
packet
.
token00BA
!!
println
(
token00BA
)
}
if
(
packet
.
flag
==
ServerLoginResponseResendPacket
.
Flag
.
`
08
36
31
03
`
)
{
if
(
packet
.
flag
==
ServerLoginResponseResendPacket
.
Flag
.
`
08
36
31
03
`
)
{
this
.
tgtgtKey
=
packet
.
tgtgtKey
this
.
tgtgtKey
=
packet
.
tgtgtKey
sendPacket
(
ClientLoginResendPacket3104
(
this
.
number
,
this
.
password
,
this
.
loginTime
,
this
.
loginIP
,
this
.
tgtgtKey
!!
,
this
.
token0825
,
this
.
token00BA
))
sendPacket
(
ClientLoginResendPacket3104
(
this
.
number
,
this
.
password
,
this
.
loginTime
,
this
.
loginIP
,
this
.
tgtgtKey
!!
,
this
.
token0825
,
this
.
token00BA
,
packet
.
_0836_tlv0006_encr
))
}
else
{
}
else
{
sendPacket
(
ClientLoginResendPacket3106
(
this
.
number
,
this
.
password
,
this
.
loginTime
,
this
.
loginIP
,
this
.
tgtgtKey
!!
,
this
.
token0825
,
this
.
token00BA
))
sendPacket
(
ClientLoginResendPacket3106
(
this
.
number
,
this
.
password
,
this
.
loginTime
,
this
.
loginIP
,
this
.
tgtgtKey
!!
,
this
.
token0825
,
this
.
token00BA
,
packet
.
_0836_tlv0006_encr
))
}
}
}
}
...
@@ -135,9 +137,9 @@ class Robot(val number: Int, private val password: String) {
...
@@ -135,9 +137,9 @@ class Robot(val number: Int, private val password: String) {
p.socketAddress = this.serverAddress*/
p.socketAddress = this.serverAddress*/
//ctx.writeAndFlush(packet.toByteArray()).sync()
//ctx.writeAndFlush(packet.toByteArray()).sync()
MiraiLogger
info
"Sending: $packet"
MiraiLogger
info
"Sending: $packet"
GlobalScope
.
launch
{
//
GlobalScope.launch {
send
(
packet
.
toByteArray
())
send
(
packet
.
toByteArray
())
}
//
}
//println(channel!!.writeAndFlush(packet.toByteArray()).channel().connect(serverAddress).sync().get())
//println(channel!!.writeAndFlush(packet.toByteArray()).channel().connect(serverAddress).sync().get())
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientPacket.kt
View file @
aed18543
...
@@ -131,7 +131,7 @@ fun DataOutputStream.writeTLV0006(qq: Int, password: String, loginTime: Int, log
...
@@ -131,7 +131,7 @@ fun DataOutputStream.writeTLV0006(qq: Int, password: String, loginTime: Int, log
println
(
md5_1
.
toUByteArray
().
toHexString
())
println
(
md5_1
.
toUByteArray
().
toHexString
())
println
(
md5_2
.
toUByteArray
().
toHexString
())
println
(
md5_2
.
toUByteArray
().
toHexString
())
it
.
write
(
md5_1
)
it
.
write
(
md5_1
)
it
.
write
Shor
t
(
loginTime
)
it
.
write
In
t
(
loginTime
)
it
.
writeByte
(
0
);
it
.
writeByte
(
0
);
it
.
writeZero
(
4
*
3
)
it
.
writeZero
(
4
*
3
)
it
.
writeIP
(
loginIP
)
it
.
writeIP
(
loginIP
)
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/login/ClientLoginPacket.kt
View file @
aed18543
...
@@ -3,10 +3,8 @@ package net.mamoe.mirai.network.packet.client.login
...
@@ -3,10 +3,8 @@ package net.mamoe.mirai.network.packet.client.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.PacketId
import
net.mamoe.mirai.network.packet.client.*
import
net.mamoe.mirai.network.packet.client.*
import
net.mamoe.mirai.util.ByteArrayDataOutputStream
import
net.mamoe.mirai.util.*
import
net.mamoe.mirai.util.TEACryptor
import
java.io.DataOutputStream
import
net.mamoe.mirai.util.getRandomKey
import
net.mamoe.mirai.util.hexToBytes
import
java.net.InetAddress
import
java.net.InetAddress
/**
/**
...
@@ -33,22 +31,23 @@ class ClientPasswordSubmissionPacket(
...
@@ -33,22 +31,23 @@ class ClientPasswordSubmissionPacket(
this
.
writeHex
(
Protocol
.
_0836key1
)
this
.
writeHex
(
Protocol
.
_0836key1
)
this
.
encryptAndWrite
(
Protocol
.
shareKey
.
hexToBytes
())
{
this
.
encryptAndWrite
(
Protocol
.
shareKey
.
hexToBytes
())
{
writePart1
(
qq
,
password
,
loginTime
,
loginIP
,
tgtgtKey
,
token0825
)
it
.
writePart1
(
qq
,
password
,
loginTime
,
loginIP
,
tgtgtKey
,
token0825
)
writePart2
()
it
.
writePart2
()
println
(
it
.
toByteArray
().
toUHexString
())
}
}
}
}
}
}
@PacketId
(
"08 36 31 04"
)
@PacketId
(
"08 36 31 04"
)
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
class
ClientLoginResendPacket3104
(
qq
:
Int
,
password
:
String
,
loginTime
:
Int
,
loginIP
:
String
,
tgtgtKey
:
ByteArray
,
token0825
:
ByteArray
,
token00BA
:
ByteArray
)
:
ClientLoginResendPacket
(
qq
,
password
,
loginTime
,
loginIP
,
tgtgtKey
,
token0825
,
token00BA
)
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"
)
@PacketId
(
"08 36 31 06"
)
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
class
ClientLoginResendPacket3106
(
qq
:
Int
,
password
:
String
,
loginTime
:
Int
,
loginIP
:
String
,
tgtgtKey
:
ByteArray
,
token0825
:
ByteArray
,
token00BA
:
ByteArray
)
:
ClientLoginResendPacket
(
qq
,
password
,
loginTime
,
loginIP
,
tgtgtKey
,
token0825
,
token00BA
)
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
@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
)
:
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
()
{
override
fun
encode
()
{
this
.
writeQQ
(
qq
)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
Protocol
.
_0836_622_fix1
)
this
.
writeHex
(
Protocol
.
_0836_622_fix1
)
...
@@ -58,7 +57,7 @@ open class ClientLoginResendPacket internal constructor(val qq: Int, val passwor
...
@@ -58,7 +57,7 @@ open class ClientLoginResendPacket internal constructor(val qq: Int, val passwor
this
.
write
(
TEACryptor
.
encrypt
(
object
:
ByteArrayDataOutputStream
()
{
this
.
write
(
TEACryptor
.
encrypt
(
object
:
ByteArrayDataOutputStream
()
{
override
fun
toByteArray
():
ByteArray
{
override
fun
toByteArray
():
ByteArray
{
writePart1
(
qq
,
password
,
loginTime
,
loginIP
,
tgtgtKey
,
token0825
)
writePart1
(
qq
,
password
,
loginTime
,
loginIP
,
tgtgtKey
,
token0825
,
tlv_0006_encr
)
this
.
writeHex
(
"01 10"
)
//tag
this
.
writeHex
(
"01 10"
)
//tag
this
.
writeHex
(
"00 3C"
)
//length
this
.
writeHex
(
"00 3C"
)
//length
...
@@ -133,9 +132,9 @@ class ClientLoginSucceedConfirmationPacket(
...
@@ -133,9 +132,9 @@ class ClientLoginSucceedConfirmationPacket(
* @author Him188moe
* @author Him188moe
*/
*/
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
private
fun
ClientPacket
.
writePart1
(
qq
:
Int
,
password
:
String
,
loginTime
:
Int
,
loginIP
:
String
,
tgtgtKey
:
ByteArray
,
token0825
:
ByteArray
)
{
private
fun
DataOutputStream
.
writePart1
(
qq
:
Int
,
password
:
String
,
loginTime
:
Int
,
loginIP
:
String
,
tgtgtKey
:
ByteArray
,
token0825
:
ByteArray
,
tlv_0006_encr
:
ByteArray
?
=
null
)
{
this
.
writeInt
(
System
.
currentTimeMillis
().
toInt
())
//
this.writeInt(System.currentTimeMillis().toInt())
this
.
writeHex
(
"01 12"
)
//tag
this
.
writeHex
(
"01 12"
)
//tag
this
.
writeHex
(
"00 38"
)
//length
this
.
writeHex
(
"00 38"
)
//length
this
.
write
(
token0825
)
//length
this
.
write
(
token0825
)
//length
...
@@ -149,7 +148,11 @@ private fun ClientPacket.writePart1(qq: Int, password: String, loginTime: Int, l
...
@@ -149,7 +148,11 @@ private fun ClientPacket.writePart1(qq: Int, password: String, loginTime: Int, l
this
.
writeQQ
(
qq
)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
"00 06"
)
//tag
this
.
writeHex
(
"00 06"
)
//tag
this
.
writeHex
(
"00 78"
)
//length
this
.
writeHex
(
"00 78"
)
//length
if
(
tlv_0006_encr
!=
null
)
{
this
.
write
(
tlv_0006_encr
)
}
else
{
this
.
writeTLV0006
(
qq
,
password
,
loginTime
,
loginIP
,
tgtgtKey
)
this
.
writeTLV0006
(
qq
,
password
,
loginTime
,
loginIP
,
tgtgtKey
)
}
//fix
//fix
this
.
writeHex
(
Protocol
.
_0836_622_fix2
)
this
.
writeHex
(
Protocol
.
_0836_622_fix2
)
this
.
writeHex
(
"00 1A"
)
//tag
this
.
writeHex
(
"00 1A"
)
//tag
...
@@ -169,7 +172,7 @@ private fun ClientPacket.writePart1(qq: Int, password: String, loginTime: Int, l
...
@@ -169,7 +172,7 @@ private fun ClientPacket.writePart1(qq: Int, password: String, loginTime: Int, l
}
}
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
private
fun
ClientPacket
.
writePart2
()
{
private
fun
DataOutputStream
.
writePart2
()
{
this
.
writeHex
(
"03 12"
)
//tag
this
.
writeHex
(
"03 12"
)
//tag
this
.
writeHex
(
"00 05"
)
//length
this
.
writeHex
(
"00 05"
)
//length
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/ServerPacket.kt
View file @
aed18543
...
@@ -32,7 +32,9 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
...
@@ -32,7 +32,9 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
when
(
bytes
.
size
)
{
when
(
bytes
.
size
)
{
271
,
207
->
return
ServerLoginResponseResendPacketEncrypted
(
stream
,
when
(
idBytes
)
{
271
,
207
->
return
ServerLoginResponseResendPacketEncrypted
(
stream
,
when
(
idBytes
)
{
"08 36 31 03"
->
ServerLoginResponseResendPacket
.
Flag
.
`
08
36
31
03
`
"08 36 31 03"
->
ServerLoginResponseResendPacket
.
Flag
.
`
08
36
31
03
`
else
->
ServerLoginResponseResendPacket
.
Flag
.
OTHER
else
->
{
println
(
"flag=$idBytes"
);
ServerLoginResponseResendPacket
.
Flag
.
OTHER
}
})
})
871
->
return
ServerLoginResponseVerificationCodePacket
(
stream
,
bytes
.
size
)
871
->
return
ServerLoginResponseVerificationCodePacket
(
stream
,
bytes
.
size
)
}
}
...
@@ -48,7 +50,12 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
...
@@ -48,7 +50,12 @@ abstract class ServerPacket(val input: DataInputStream) : Packet {
263
->
ServerLoginResponseFailedPacket
.
State
.
UNKNOWN_QQ_NUMBER
263
->
ServerLoginResponseFailedPacket
.
State
.
UNKNOWN_QQ_NUMBER
551
,
487
->
ServerLoginResponseFailedPacket
.
State
.
DEVICE_LOCK
551
,
487
->
ServerLoginResponseFailedPacket
.
State
.
DEVICE_LOCK
359
->
ServerLoginResponseFailedPacket
.
State
.
TAKEN_BACK
359
->
ServerLoginResponseFailedPacket
.
State
.
TAKEN_BACK
else
->
throw
IllegalStateException
()
//unknown
63
->
throw
IllegalArgumentException
(
bytes
.
size
.
toString
())
351
->
throw
IllegalArgumentException
(
bytes
.
size
.
toString
())
else
->
throw
IllegalArgumentException
(
bytes
.
size
.
toString
())
},
stream
)
},
stream
)
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseResendPacket.kt
View file @
aed18543
...
@@ -18,7 +18,7 @@ class ServerLoginResponseResendPacket(input: DataInputStream, val flag: Flag) :
...
@@ -18,7 +18,7 @@ class ServerLoginResponseResendPacket(input: DataInputStream, val flag: Flag) :
}
}
lateinit
var
_0836_tlv0006_encr
:
ByteArray
;
lateinit
var
_0836_tlv0006_encr
:
ByteArray
;
lateinit
var
token
:
ByteArray
var
token00BA
:
ByteArray
?
=
null
lateinit
var
tgtgtKey
:
ByteArray
lateinit
var
tgtgtKey
:
ByteArray
override
fun
decode
()
{
override
fun
decode
()
{
...
@@ -29,7 +29,7 @@ class ServerLoginResponseResendPacket(input: DataInputStream, val flag: Flag) :
...
@@ -29,7 +29,7 @@ class ServerLoginResponseResendPacket(input: DataInputStream, val flag: Flag) :
when
(
flag
)
{
when
(
flag
)
{
Flag
.
`
08
36
31
03
`
->
{
Flag
.
`
08
36
31
03
`
->
{
token
=
this
.
input
.
goto
(
153
).
readNBytes
(
56
)
token
00BA
=
this
.
input
.
goto
(
153
).
readNBytes
(
56
)
}
}
Flag
.
OTHER
->
{
Flag
.
OTHER
->
{
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/login/ServerLoginResponseSuccessPacket.kt
View file @
aed18543
package
net.mamoe.mirai.network.packet.server.login
package
net.mamoe.mirai.network.packet.server.login
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.Protocol
import
net.mamoe.mirai.network.packet.server.*
import
net.mamoe.mirai.network.packet.server.ServerPacket
import
net.mamoe.mirai.network.packet.server.goto
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.TEACryptor
import
net.mamoe.mirai.util.hexToBytes
import
net.mamoe.mirai.util.hexToBytes
import
net.mamoe.mirai.util.toHexString
import
net.mamoe.mirai.util.toHexString
...
@@ -103,9 +106,9 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream, val packetDataLen
...
@@ -103,9 +106,9 @@ class ServerLoginResponseSuccessPacket(input: DataInputStream, val packetDataLen
else
->
throw
IllegalStateException
()
else
->
throw
IllegalStateException
()
}
}
this
.
_0828_rec_decr_key
=
this
.
input
.
readNBytes
(
171
+
msgLength
,
16
)
this
.
_0828_rec_decr_key
=
this
.
input
.
readNBytes
(
171
+
msgLength
,
16
)
this
.
token88
=
this
.
input
.
readNBytes
(
189
+
msgLength
,
136
)
this
.
token88
=
this
.
input
.
readNBytes
(
189
+
msgLength
,
136
)
val
nickLength
=
this
.
input
.
goto
(
624
+
msgLength
).
readByte
().
toInt
()
val
nickLength
=
this
.
input
.
goto
(
624
+
msgLength
).
readByte
().
toInt
()
this
.
nick
=
this
.
input
.
readVarString
(
nickLength
)
this
.
nick
=
this
.
input
.
readVarString
(
nickLength
)
...
@@ -123,8 +126,12 @@ class ServerLoginResponseSuccessPacketEncrypted(input: DataInputStream, val leng
...
@@ -123,8 +126,12 @@ class ServerLoginResponseSuccessPacketEncrypted(input: DataInputStream, val leng
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
fun
decrypt
(
tgtgtKey
:
ByteArray
):
ServerLoginResponseSuccessPacket
{
//todo test
fun
decrypt
(
tgtgtKey
:
ByteArray
):
ServerLoginResponseSuccessPacket
{
//todo test
this
.
input
.
skip
(
7
)
input
.
skip
(
7
)
return
ServerLoginResponseSuccessPacket
(
TEACryptor
.
decrypt
(
TEACryptor
.
decrypt
(
this
.
input
.
readAllBytes
().
let
{
it
.
copyOfRange
(
0
,
it
.
size
-
1
)
},
Protocol
.
shareKey
.
hexToBytes
()),
tgtgtKey
).
dataInputStream
(),
length
);
var
bytes
=
input
.
readAllBytes
();
bytes
=
bytes
.
copyOfRange
(
0
,
bytes
.
size
-
1
);
println
(
bytes
.
toUByteArray
().
toHexString
())
return
ServerLoginResponseSuccessPacket
(
DataInputStream
(
TEACryptor
.
decrypt
(
bytes
,
Protocol
.
shareKey
.
hexToBytes
()).
inputStream
()),
length
);
//TeaDecrypt(取文本中间(data, 43, 取文本长度(data) - 45), m_0828_rec_decr_key)
//TeaDecrypt(取文本中间(data, 43, 取文本长度(data) - 45), m_0828_rec_decr_key)
}
}
}
}
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/touch/ServerTouchResponsePacket.kt
View file @
aed18543
...
@@ -22,7 +22,7 @@ class ServerTouchResponsePacket(inputStream: DataInputStream) : ServerPacket(inp
...
@@ -22,7 +22,7 @@ class ServerTouchResponsePacket(inputStream: DataInputStream) : ServerPacket(inp
var
loginTime
:
Int
=
0
var
loginTime
:
Int
=
0
lateinit
var
loginIP
:
String
lateinit
var
loginIP
:
String
lateinit
var
token
:
ByteArray
lateinit
var
token
0825
:
ByteArray
lateinit
var
tgtgtKey
:
ByteArray
lateinit
var
tgtgtKey
:
ByteArray
enum
class
Type
{
enum
class
Type
{
...
@@ -39,7 +39,7 @@ class ServerTouchResponsePacket(inputStream: DataInputStream) : ServerPacket(inp
...
@@ -39,7 +39,7 @@ class ServerTouchResponsePacket(inputStream: DataInputStream) : ServerPacket(inp
}
}
0
x00
->
{
0
x00
->
{
input
.
skip
(
4
)
input
.
skip
(
4
)
token
=
input
.
readNBytes
(
56
)
token
0825
=
input
.
readNBytes
(
56
)
input
.
skip
(
6
)
input
.
skip
(
6
)
loginTime
=
input
.
readInt
()
loginTime
=
input
.
readInt
()
...
...
mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt
View file @
aed18543
...
@@ -67,7 +67,7 @@ fun lazyEncode(t: (ByteArrayDataOutputStream) -> Unit): ByteArray = ByteArrayDat
...
@@ -67,7 +67,7 @@ fun lazyEncode(t: (ByteArrayDataOutputStream) -> Unit): ByteArray = ByteArrayDat
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
fun
getRandomKey
(
length
:
Int
):
ByteArray
{
fun
getRandomKey
(
length
:
Int
):
ByteArray
{
val
bytes
=
LinkedList
<
Byte
>();
val
bytes
=
LinkedList
<
Byte
>();
for
(
i
in
0
..
length
)
bytes
.
add
((
Math
.
random
()
*
255
).
toByte
())
repeat
(
length
)
{
bytes
.
add
((
Math
.
random
()
*
255
).
toByte
())
}
return
bytes
.
toByteArray
();
return
bytes
.
toByteArray
();
}
}
...
...
mirai-core/src/test/java/HexComparator.java
View file @
aed18543
...
@@ -172,9 +172,11 @@ public class HexComparator {
...
@@ -172,9 +172,11 @@ public class HexComparator {
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
HexComparator
.
compare
(
System
.
out
.
println
(
HexComparator
.
compare
(
"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 B4 AF 5C C0 01 12 00 38 9B 7C 43 9E FE 4D E8 AB BD A0 25 92 F6 F5 62 F4 9E D6 98 96 87 95 C0 96 47 B7 13 F5 B8 A1 13 46 FE 50 A3 8A 2C 65 95 D5 EF 1F F2 93 95 66 BA 92 39 49 1B 3C BB D5 6F AB 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 5C BB 33 F1 0A 1C BF DF CD 74 CB 03 0B E6 5D 5C 9B EC 02 3D 0D 1E 68 1F 24 82 4C C8 E4 15 38 58 46 23 C8 3F 95 50 4E 15 4B B2 A1 E2 E4 C2 59 A2 59 5A 9F 11 EF 3D 7F 41 D9 01 CB 48 61 37 6D E0 67 AB B8 29 29 43 D8 3E E1 2E E3 58 FB 0D AA DE 8D D8 F1 47 51 29 C7 CE 91 97 4D 1A B6 F7 F5 4D DA 0A 63 9F 81 4D 68 E2 C8 CE 22 2A E7 3A 50 41 92 A1 11 18 DB 9A 82 78 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 1A B3 88 3C 6E 39 D0 88 49 AC 2C 89 8E C6 CF 1D 56 BB 01 54 62 5F 87 40 B3 6C E0 E3 84 7C FD 15 1D E0 B6 39 A5 8E 9F FF 36 40 F1 E8 26 0E EB 39 03 C9 0F A2 D7 BD FA 67 91 82 E8 BE 74 2D 93 AF 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 9E 12 A9 12 02 D7 77 E7 C1 61 10 F7 C5 AA F6 4E 12 CA BF D9 B2 33 05 C4 EF 23 E6 0B 90 23 7A FC EF 31 06 1A 3B 03\n\n"
//mirai
"01 12 00 38 4A 89 FA EE 24 BC B5 EC 6D DD A7 EE 9E 89 2C 00 4F BF 05 F3 98 46 5A 52 9E 8A 2A 14 96 ED F3 98 06 42 72 50 D0 5A CA 85 E1 68 2F 28 D3 84 0E 92 98 3E 3C 82 3F 59 5C A8 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 75 2A 22 99 DD A6 EE 95 9E 7F 11 F0 C7 93 FB E7 51 C5 72 22 FF DE 73 DC 5D 13 0E C0 7D 84 CF 18 4B 6B 10 E5 04 A4 40 79 45 6E 54 69 E5 8E FE 59 7A FF 68 E4 BB 5B 90 DE 07 1D A9 D6 64 5A 25 5E 2C 2F FB CF CA 37 57 05 F9 36 B5 58 BC E0 4D 1B 8A 7F A1 54 00 86 9C 30 47 C6 2E D1 42 E1 F8 4F 7F 5D 7E 80 BB EA 84 AF EA 98 47 9A F6 93 6D 35 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 19 B6 E2 4C 38 36 3F 8F E9 CD 18 54 93 F5 52 A7 2E 04 6C ED 58 39 92 5B 17 B6 F7 C0 45 07 49 0B A0 AF 35 E0 E2 49 98 29 B2 FB A7 7E D6 0F 96 BB FB FD C1 56 77 E0 3A 3E 32 E8 E7 CB 78 B2 9A D0 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 79 FE 6A 47 E3 97 C4 5A 0D 38 BA CB 7F 47 47 D3 4F 63 30 53\n\n"
,
,
"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 EC CD 3D 2F 35 55 4C 8E B3 2C D9 55 E1 CE 71 DD 16 9C BB 24 E9 2C A6 98 77 A4 49 AB 2B EF 30 80 09 EB E3 04 4E AD D5 F4 E9 F3 55 54 D8 AC 9B F2 D6 78 25 F1 DF AF E2 7C 95 85 CB CF D6 FD 32 CE F5 4B 20 EA B8 D1 2D 77 69 75 40 6C 88 F0 6D 47 48 C6 5A 61 53 53 A3 58 A8 2E C2 F6 E2 44 E1 C2 8B 62 57 E2 8C 72 3C F7 5E EC 7E 48 BD 55 B4 83 38 0C D6 0A 1D 82 CA B5 CC 94 F8 53 E4 00 44 21 5E 26 39 1C EF 1E 5B 6C 94 F0 22 B9 FD 31 35 CF 8B B4 51 00 3A 0C FC 48 93 59 65 B6 C5 79 20 7B F3 3F 4F EA 1F 31 73 5F 93 0B 90 22 16 E1 02 30 DC 44 FC 87 D3 53 E4 E9 30 4A 92 E2 5B 6E EE 88 7B AC 03 17 67 89 DF 91 E4 9D 27 FF CA 04 D3 53 D9 39 52 47 63 F4 24 49 F1 1C 38 9F 01 6D DC AE 62 5A 37 7A 97 2B FA 0F AD DC 11 51 19 95 89 B9 9D DB C0 FD 3E 78 FF C0 1C 93 44 10 17 29 C1 7F F5 8B 31 E2 10 C4 F9 71 66 F5 05 D2 2A 9C EB 98 4D B7 71 5C F6 B6 7C 82 12 82 DF D6 40 0E C0 35 8F E7 22 D0 95 B4 27 42 DA CF CD 96 C1 06 6E 71 CD B7 A8 D5 0C 6D B1 09 F3 79 CB F6 DD 28 AF BC 0B 21 6F 82 37 B6 18 3D 88 CD 7E C6 FE 50 0D CE 3D 7E BB 5B B1 02 B0 B8 EE 90 59 C1 81 E8 D3 9C 6C ED C7 C5 45 F2 4B A3 40 A6 21 57 A0 0C 94 57 A3 7C 92 7C 6B 62 34 1A B1 AD EA 82 A0 55 E5 49 0D 08 E7 B3 B6 3D 0C 14 EF E9 D6 6D 0B C5 31 2B 07 23 41 1B 03 E6 5B B7 86 A7 7F 62 D8 ED 12 40 1B 8F 28 8F D1 FE 41 73 52 9D 25 08 94 B4 B6 6B B1 AB A4 50 87 9C 87 D2 1C C6 23 BD 28 50 6E 4C 20 2A 24 08 0C 08 E5 2E 7C 50 9C C8 34 D5 BD 81 D9 20 90 AB 4E FA 7F 5F B0 BB 18 54 33 65 CA 53 2E A0 6C 42 30 BD 8F EF E6 82 D9 21 1F C6 63 1C D3 57 D0 89 39 7C B7 71 EC DB 46 26 6E 5A F8 75 12 03 64 4C 94 D1 6B 7A 79 CE 28 8E 95 F4 00 CF 95 8A A0 DA 44 4A A5 5D 73 E5 F9 6C 83 2E E1 6E 03\n"
//e
"01 12 00 38 B5 E3 C5 4F F9 91 D1 10 B2 A0 CE 2B 5C C3 F3 6E 1F 0C 01 F5 89 13 50 A1 5F 9C C9 BD 58 09 C3 84 3D C0 1E EA 12 3F A3 F2 47 D0 77 19 8A 24 92 87 8B AD AD 16 97 7A 66 AD 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 4A AE 12 18 80 AC FE D3 7E 37 CA D8 9C 93 99 68 09 2B A8 FA B1 92 4A EB 8F 6E 69 EA F9 59 25 CA 39 90 69 A5 A7 15 73 97 52 9A B7 85 16 04 8E A8 CF 97 84 CD 13 67 A1 A9 C2 41 99 E7 74 96 C0 FC F9 5E 46 06 18 71 FF 85 7E EE 8A 62 05 90 F3 83 E2 97 10 5E 3C FE 70 F6 0B 92 2D B8 C7 A2 EE FE DD EE EF 8C 5E 86 EB D9 01 66 DB F1 31 DD 27 44 83 7F E4 5E 93 9C C6 05 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 EB E2 37 37 17 6D DB 96 38 C8 F3 67 12 50 80 9A C5 5E CB 8C 45 55 9F E4 7D 4F 4F F3 D2 8E BA AD 4A 0B F3 3B 99 B9 A5 CD 76 D7 4A 4B 69 9D 9F 21 36 A0 0F 94 CB 69 44 7A 87 39 27 23 F6 4A 66 D1 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 12 C9 35 A8 26 70 AA 5A F7 F8 0B E6 6A FC 85 19 00 D4 CE EC "
));
));
System
.
out
.
println
(
HexComparator
.
compare
(
System
.
out
.
println
(
HexComparator
.
compare
(
...
...
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