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
f6bab792
Commit
f6bab792
authored
Aug 17, 2019
by
liujiahua123123
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
3f5fdfb3
7e4e94a9
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
18 additions
and
12 deletions
+18
-12
mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt
mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt
+2
-2
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientPacket.kt
...ava/net/mamoe/mirai/network/packet/client/ClientPacket.kt
+5
-2
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientPasswordSubmissionPacket.kt
...i/network/packet/client/ClientPasswordSubmissionPacket.kt
+4
-3
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientServerRedirectionPacket.kt
...ai/network/packet/client/ClientServerRedirectionPacket.kt
+3
-1
mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt
mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt
+4
-4
No files found.
mirai-core/src/main/java/net/mamoe/mirai/network/Robot.kt
View file @
f6bab792
...
...
@@ -10,8 +10,8 @@ import io.netty.channel.socket.SocketChannel
import
io.netty.channel.socket.nio.NioSocketChannel
import
io.netty.handler.codec.bytes.ByteArrayDecoder
import
io.netty.handler.codec.bytes.ByteArrayEncoder
import
net.mamoe.mirai.network.packet.client.Client0825ResponsePacket
import
net.mamoe.mirai.network.packet.client.ClientPacket
import
net.mamoe.mirai.network.packet.client.ClientServerRedirectionPacket
import
net.mamoe.mirai.network.packet.client.writeHex
import
net.mamoe.mirai.network.packet.server.Server0825Packet
import
net.mamoe.mirai.network.packet.server.ServerPacket
...
...
@@ -33,7 +33,7 @@ class Robot(val number: Int) {
packet
.
decode
()
if
(
packet
is
Server0825Packet
)
{
connect
(
packet
.
serverIP
)
sendPacket
(
Client
0825Response
Packet
(
packet
.
serverIP
,
number
))
sendPacket
(
Client
ServerRedirection
Packet
(
packet
.
serverIP
,
number
))
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/ClientPacket.kt
View file @
f6bab792
...
...
@@ -7,6 +7,7 @@ import net.mamoe.mirai.network.packet.PacketId
import
net.mamoe.mirai.util.ByteArrayDataOutputStream
import
net.mamoe.mirai.util.TEACryptor
import
net.mamoe.mirai.util.hexToBytes
import
net.mamoe.mirai.util.toHexString
import
java.io.DataOutputStream
import
java.io.IOException
import
java.security.MessageDigest
...
...
@@ -86,7 +87,7 @@ fun DataOutputStream.writeTLV0006(qq: Int, password: String, loginTime: ByteArra
it
.
writeHex
(
"00 00 01"
)
val
md5_1
=
md5
(
password
);
val
md5_2
=
md5
(
md5_1
+
"00 00 00 00"
.
hexToBytes
()
+
qq
.
toByte
s
())
val
md5_2
=
md5
(
md5_1
+
"00 00 00 00"
.
hexToBytes
()
+
qq
.
toByte
Array
())
it
.
write
(
md5_1
)
it
.
write
(
loginTime
)
//todo FIXED 12(maybe 11???) bytes??? check that
it
.
writeByte
(
0
);
...
...
@@ -99,13 +100,15 @@ fun DataOutputStream.writeTLV0006(qq: Int, password: String, loginTime: ByteArra
}
}
private
fun
Int
.
toByte
s
():
ByteArray
=
byteArrayOf
(
private
fun
Int
.
toByte
Array
():
ByteArray
=
byteArrayOf
(
//todo 检查这方法对不对, 这其实就是从 DataInputStream copy来的
(
this
.
ushr
(
24
)
and
0
xFF
).
toByte
(),
(
this
.
ushr
(
16
)
and
0
xFF
).
toByte
(),
(
this
.
ushr
(
8
)
and
0
xFF
).
toByte
(),
(
this
.
ushr
(
0
)
and
0
xFF
).
toByte
()
)
private
fun
Int
.
toHexString
(
separator
:
String
=
" "
):
String
=
this
.
toByteArray
().
toHexString
(
separator
);
private
fun
md5
(
str
:
String
):
ByteArray
=
MessageDigest
.
getInstance
(
"MD5"
).
digest
(
str
.
toByteArray
())
private
fun
md5
(
byteArray
:
ByteArray
):
ByteArray
=
MessageDigest
.
getInstance
(
"MD5"
).
digest
(
byteArray
)
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/Client
0836_622
Packet.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/Client
PasswordSubmission
Packet.kt
View file @
f6bab792
...
...
@@ -10,14 +10,15 @@ import java.io.IOException
import
java.net.InetAddress
/**
* Password submission (0836_622)
*
* @author Him188moe @ Mirai Project
*/
@PacketId
(
"08 36"
)
@PacketId
(
"08 36
31 03
"
)
@ExperimentalUnsignedTypes
class
Client
0836_622Packet
(
private
val
qq
:
Int
,
private
val
password
:
String
,
private
val
loginTime
:
ByteArray
,
private
val
loginIP
:
ByteArray
,
private
val
tgtgtKey
:
ByteArray
,
private
val
seq
:
String
,
private
val
token0825
:
ByteArray
)
:
ClientPacket
()
{
class
Client
PasswordSubmissionPacket
(
private
val
qq
:
Int
,
private
val
password
:
String
,
private
val
loginTime
:
ByteArray
,
private
val
loginIP
:
ByteArray
,
private
val
tgtgtKey
:
ByteArray
,
private
val
token0825
:
ByteArray
)
:
ClientPacket
()
{
@ExperimentalUnsignedTypes
override
fun
encode
()
{
this
.
writeHex
(
seq
)
this
.
writeQQ
(
qq
)
this
.
writeHex
(
Protocol
.
_0836_622_fix1
)
this
.
writeHex
(
Protocol
.
publicKey
)
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/Client
0825Response
Packet.kt
→
mirai-core/src/main/java/net/mamoe/mirai/network/packet/client/Client
ServerRedirection
Packet.kt
View file @
f6bab792
...
...
@@ -7,11 +7,13 @@ import net.mamoe.mirai.util.hexToBytes
import
java.io.IOException
/**
* Server redirection (0825 response)
*
* @author Him188moe @ Mirai Project
*/
@ExperimentalUnsignedTypes
@PacketId
(
"08 25 31 02"
)
class
Client
0825Response
Packet
(
private
val
serverIP
:
String
,
private
val
qq
:
Int
)
:
ClientPacket
()
{
class
Client
ServerRedirection
Packet
(
private
val
serverIP
:
String
,
private
val
qq
:
Int
)
:
ClientPacket
()
{
@ExperimentalUnsignedTypes
override
fun
encode
()
{
this
.
writeQQ
(
qq
)
...
...
mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt
View file @
f6bab792
...
...
@@ -10,7 +10,7 @@ import java.util.zip.CRC32
* @author Him188moe @ Mirai Project
*/
object
Utils
{
fun
toHexString
(
byteArray
:
ByteArray
,
separator
:
String
=
"
,
"
):
String
=
byteArray
.
joinToString
(
separator
)
{
fun
toHexString
(
byteArray
:
ByteArray
,
separator
:
String
=
"
"
):
String
=
byteArray
.
joinToString
(
separator
)
{
var
ret
=
it
.
toString
(
16
).
toUpperCase
();
if
(
ret
.
length
==
1
)
{
ret
=
"0$ret"
;
...
...
@@ -19,7 +19,7 @@ object Utils {
}
@ExperimentalUnsignedTypes
fun
toHexString
(
byteArray
:
UByteArray
,
separator
:
String
=
"
,
"
):
String
=
byteArray
.
joinToString
(
separator
)
{
fun
toHexString
(
byteArray
:
UByteArray
,
separator
:
String
=
"
"
):
String
=
byteArray
.
joinToString
(
separator
)
{
var
ret
=
it
.
toString
(
16
).
toUpperCase
();
if
(
ret
.
length
==
1
)
{
ret
=
"0$ret"
;
...
...
@@ -28,9 +28,9 @@ object Utils {
}
}
fun
ByteArray
.
toHexString
(
separator
:
String
=
"
,
"
):
String
=
Utils
.
toHexString
(
this
,
separator
)
fun
ByteArray
.
toHexString
(
separator
:
String
=
" "
):
String
=
Utils
.
toHexString
(
this
,
separator
)
@ExperimentalUnsignedTypes
fun
UByteArray
.
toHexString
(
separator
:
String
=
"
,
"
):
String
=
Utils
.
toHexString
(
this
,
separator
)
fun
UByteArray
.
toHexString
(
separator
:
String
=
" "
):
String
=
Utils
.
toHexString
(
this
,
separator
)
fun
Byte
.
toHexString
():
String
=
this
.
toString
(
16
)
...
...
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