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
145b8566
Commit
145b8566
authored
Aug 17, 2019
by
Him188moe
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
a226dafe
f6bab792
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
49 additions
and
11 deletions
+49
-11
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/Server0825Packet.kt
...net/mamoe/mirai/network/packet/server/Server0825Packet.kt
+11
-7
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/ServerPacket.kt
...ava/net/mamoe/mirai/network/packet/server/ServerPacket.kt
+6
-2
mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt
mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt
+2
-0
mirai-core/src/test/java/NetworkTest.java
mirai-core/src/test/java/NetworkTest.java
+16
-0
mirai-core/src/test/java/PacketTest.kt
mirai-core/src/test/java/PacketTest.kt
+14
-2
No files found.
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/Server0825Packet.kt
View file @
145b8566
...
@@ -11,9 +11,9 @@ import java.io.DataInputStream
...
@@ -11,9 +11,9 @@ import java.io.DataInputStream
class
Server0825Packet
(
private
val
type
:
Type
,
inputStream
:
DataInputStream
)
:
ServerPacket
(
inputStream
)
{
class
Server0825Packet
(
private
val
type
:
Type
,
inputStream
:
DataInputStream
)
:
ServerPacket
(
inputStream
)
{
lateinit
var
serverIP
:
String
;
lateinit
var
serverIP
:
String
;
var
loginTime
:
Long
=
0
;
var
loginTime
:
Int
=
0
lateinit
var
loginIP
:
String
;
lateinit
var
loginIP
:
String
lateinit
var
token
:
ByteArray
;
lateinit
var
token
:
ByteArray
lateinit
var
tgtgtKey
:
ByteArray
lateinit
var
tgtgtKey
:
ByteArray
enum
class
Type
{
enum
class
Type
{
...
@@ -32,15 +32,19 @@ class Server0825Packet(private val type: Type, inputStream: DataInputStream) : S
...
@@ -32,15 +32,19 @@ class Server0825Packet(private val type: Type, inputStream: DataInputStream) : S
when
(
data
.
readByte
().
toInt
())
{
when
(
data
.
readByte
().
toInt
())
{
0
xFE
->
{
0
xFE
->
{
System
.
out
.
println
(
"0xfe"
)
serverIP
=
data
.
readIP
()
serverIP
=
data
.
readIP
()
}
}
0
X00
->
{
0
X00
->
{
data
.
skip
(
16
-
2
)
data
.
skip
(
4
)
token
=
data
.
readNBytes
(
167
-
(
16
-
2
))
token
=
data
.
readNBytes
(
56
)
loginTime
=
data
.
readLong
()
//todo check
data
.
skip
(
28
)
loginTime
=
data
.
readInt
()
loginIP
=
data
.
readIP
()
loginIP
=
data
.
readIP
()
tgtgtKey
=
getRandomKey
(
16
)
;
tgtgtKey
=
getRandomKey
(
16
)
}
}
else
->
{
else
->
{
throw
IllegalStateException
()
throw
IllegalStateException
()
}
}
...
...
mirai-core/src/main/java/net/mamoe/mirai/network/packet/server/ServerPacket.kt
View file @
145b8566
package
net.mamoe.mirai.network.packet.server
package
net.mamoe.mirai.network.packet.server
import
net.mamoe.mirai.network.packet.Packet
import
net.mamoe.mirai.network.packet.Packet
import
net.mamoe.mirai.util.toHexString
import
java.io.DataInputStream
import
java.io.DataInputStream
/**
/**
...
@@ -44,10 +46,12 @@ fun DataInputStream.readUntil(byte: Byte): ByteArray {
...
@@ -44,10 +46,12 @@ fun DataInputStream.readUntil(byte: Byte): ByteArray {
return
buff
return
buff
}
}
@ExperimentalUnsignedTypes
fun
DataInputStream
.
readIP
():
String
{
fun
DataInputStream
.
readIP
():
String
{
var
buff
=
""
var
buff
=
""
for
(
i
in
0
..
12
)
{
//todo: check that
for
(
i
in
0
..
3
)
{
//todo: check t// hat
buff
+=
readByte
().
toInt
()
buff
+=
(
readByte
().
toInt
()).
toString
()
if
(
i
!=
3
)
buff
+=
"."
}
}
return
buff
return
buff
}
}
mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt
View file @
145b8566
...
@@ -34,6 +34,8 @@ fun UByteArray.toHexString(separator: String = " "): String = Utils.toHexString(
...
@@ -34,6 +34,8 @@ fun UByteArray.toHexString(separator: String = " "): String = Utils.toHexString(
fun
Byte
.
toHexString
():
String
=
this
.
toString
(
16
)
fun
Byte
.
toHexString
():
String
=
this
.
toString
(
16
)
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
fun
String
.
hexToBytes
():
ByteArray
=
Protocol
.
hexToBytes
(
this
)
fun
String
.
hexToBytes
():
ByteArray
=
Protocol
.
hexToBytes
(
this
)
@ExperimentalUnsignedTypes
@ExperimentalUnsignedTypes
...
...
mirai-core/src/test/java/NetworkTest.java
View file @
145b8566
...
@@ -19,4 +19,20 @@ public class NetworkTest {
...
@@ -19,4 +19,20 @@ public class NetworkTest {
}
}
public
static
String
bytesToHex
(
byte
[]
bytes
)
{
StringBuffer
sb
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
bytes
.
length
;
i
++)
{
String
hex
=
Integer
.
toHexString
(
bytes
[
i
]
&
0xFF
);
if
(
hex
.
length
()
<
2
){
sb
.
append
(
0
);
}
sb
.
append
(
hex
);
}
return
sb
.
toString
();
}
}
}
mirai-core/src/test/java/PacketTest.kt
View file @
145b8566
import
net.mamoe.mirai.network.packet.client.Client0825ResponsePacket
import
net.mamoe.mirai.network.packet.server.Server0825Packet
import
net.mamoe.mirai.network.packet.server.Server0825Packet
import
net.mamoe.mirai.util.TEACryptor
import
net.mamoe.mirai.util.hexToBytes
import
net.mamoe.mirai.util.hexToUBytes
import
net.mamoe.mirai.util.toHexString
import
java.io.DataInputStream
@ExperimentalUnsignedTypes
fun
main
(){
fun
main
(){
val
v
=
"00 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"
;
val
data
=
"00 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"
v
.
split
(
" "
)
val
s
=
DataInputStream
(
data
.
hexToBytes
().
inputStream
())
val
packet
=
Server0825Packet
(
Server0825Packet
.
Type
.
TYPE_08_25_31_01
,
s
)
packet
.
decode
()
System
.
out
.
println
(
packet
.
token
.
toUByteArray
().
toHexString
(
" "
))
System
.
out
.
println
(
packet
.
loginTime
)
System
.
out
.
println
(
packet
.
loginIP
)
}
}
\ 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