diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/UploadImage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/UploadImage.kt
index ce8cdb8af..a7cffe76c 100644
--- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/UploadImage.kt
+++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/action/UploadImage.kt
@@ -382,7 +382,8 @@ object FriendImagePacket : SessionPacketFactory<FriendImageResponse>() {
         // 上传图片, 成功获取ID
         //00 00 00 08 00 00
         // [01 0D]
-        // 12 [06] 98 01 01 A0 01 00
+        // 12 06
+        // 98 01 01 A0 01 00
         // 08 01 //packet type 01=上传图片; 02=下载图片
         // 12 [86 02]
         //   08 00
@@ -404,7 +405,11 @@ object FriendImagePacket : SessionPacketFactory<FriendImageResponse>() {
         // 20 01
 
         // 上传图片, 图片过大
-        //00 00 00 09 00 00 00 1D 12 07 98 01 01 A0 01 C7 01 08 01 12 19 08 00 18 C7 01 22 12 66 69 6C 65 20 73 69 7A 65 20 6F 76 65 72 20 6D 61 78
+        //00 00 00 09 00 00
+        // [00 1D]
+        // 12 [07] 98 01 01 A0 01 C7 01
+        // 08 01
+        // 12 19 08 00 18 C7 01 22 12 66 69 6C 65 20 73 69 7A 65 20 6F 76 65 72 20 6D 61 78
         discardExact(3) // 00 00 00
         if (readUByte().toUInt() == 0x09u) {
             return FriendImageOverFileSizeMax
@@ -413,11 +418,32 @@ object FriendImagePacket : SessionPacketFactory<FriendImageResponse>() {
 
         discardExact(2) //全长 (有 offset)
 
-        discardExact(1); discardExact(readUVarInt().toInt()) // 12 06 98 01 01 A0 01 00
+        discardExact(1); discardExact(readUVarInt().toInt()) // 12 [06] 98 01 01 A0 01 00
 
         check(readUByte().toUInt() == 0x08u)
         return when (val flag = readUByte().toUInt()) {
             0x01u -> {
+                //00 00 00 08 00 00
+                // [00 83]
+                // 12 06
+                // 98 01 01
+                // A0 01 00 08 01 12 7D
+                // 08 00
+                // 10 9B A4 D4 9A 0A
+                // 18 00
+                // 28 01
+                // 32 1B
+                // 0A [10] 81 9B B9 33 52 BD CE 88 A9 BA 3B 1C A4 A8 8B EF
+                // 10 00
+                // 18 8E 4B
+                // 20 40
+                // 28 40
+                // 52 25 2F 63 36 62 38 37 61 39 63 2D 37 30 64 36 2D 34 61 38 38 2D 61 39 33 36 2D 36 34 31 33 65 37 39 62 33 66 64 34
+                // 5A 25 2F 63 36 62 38 37 61 39 63 2D 37 30 64 36 2D 34 61 38 38 2D 61 39 33 36 2D 36 34 31 33 65 37 39 62 33 66 64 34
+                // 60 00
+                // 68 80 80 08
+                // 20 01
+
                 try {
                     while (readUByte().toUInt() != 0x4Au) readUVarLong()
                     val uKey = readBytes(readUVarInt().toInt())//128
@@ -614,5 +640,45 @@ object GroupImagePacket : SessionPacketFactory<GroupImageResponse>() {
     // 下载图片
     // 00 00 00 05 00 00
     // [02 46]
-    // 12 03 98 01 02 08 9B A4 D4 9A 0A 10 02 22 BB 04 08 92 A8 B2 D3 0A 12 10 EB 1A 34 01 8F 1E B4 73 39 34 F0 65 68 80 A7 52 18 00 48 BD EE 92 CD 01 48 BD EE 92 E5 01 48 B4 C3 A9 E8 06 48 BA F6 D7 5C 48 EF BC A4 DC 07 50 50 50 50 50 50 50 50 50 50 5A 0D 67 63 68 61 74 2E 71 70 69 63 2E 63 6E 62 77 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 32 38 35 39 32 34 32 35 31 34 2D 45 42 31 41 33 34 30 31 38 46 31 45 42 34 37 33 33 39 33 34 46 30 36 35 36 38 38 30 41 37 35 32 2F 31 39 38 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33 6A 75 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 32 38 35 39 32 34 32 35 31 34 2D 45 42 31 41 33 34 30 31 38 46 31 45 42 34 37 33 33 39 33 34 46 30 36 35 36 38 38 30 41 37 35 32 2F 30 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33 72 77 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 32 38 35 39 32 34 32 35 31 34 2D 45 42 31 41 33 34 30 31 38 46 31 45 42 34 37 33 33 39 33 34 46 30 36 35 36 38 38 30 41 37 35 32 2F 37 32 30 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33 78 00 80 01 03 9A 01 77 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 32 38 35 39 32 34 32 35 31 34 2D 45 42 31 41 33 34 30 31 38 46 31 45 42 34 37 33 33 39 33 34 46 30 36 35 36 38 38 30 41 37 35 32 2F 34 30 30 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33 A0 01 00
+    // 12 03
+    // 98 01 02
+    // 08 9B A4 D4 9A 0A 10 02 22 BB 04
+    // 08 92 A8 B2 D3 0A
+    // 12 [10] EB 1A 34 01 8F 1E B4 73 39 34 F0 65 68 80 A7 52
+    // 18 00
+    // 48 BD EE 92 CD 01
+    // 48 BD EE 92 E5 01
+    // 48 B4 C3 A9 E8 06
+    // 48 BA F6 D7 5C
+    // 48 EF BC A4 DC 07
+    // 50 50 50 50 50 50 50 50 50 50
+    // 5A [0D] 67 63 68 61 74 2E 71 70 69 63 2E 63 6E // gchat.qpic.cn
+    // 缩略图 62 [77] 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 32 38 35 39 32 34 32 35 31 34 2D 45 42 31 41 33 34 30 31 38 46 31 45 42 34 37 33 33 39 33 34 46 30 36 35 36 38 38 30 41 37 35 32 2F 31 39 38 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33
+    // 原图 6A [75] 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 32 38 35 39 32 34 32 35 31 34 2D 45 42 31 41 33 34 30 31 38 46 31 45 42 34 37 33 33 39 33 34 46 30 36 35 36 38 38 30 41 37 35 32 2F 30 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33
+    // 普通 72 [77] 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 32 38 35 39 32 34 32 35 31 34 2D 45 42 31 41 33 34 30 31 38 46 31 45 42 34 37 33 33 39 33 34 46 30 36 35 36 38 38 30 41 37 35 32 2F 37 32 30 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33
+    // 78 00
+    // 80 01 03
+    // 9A 01 [77] 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 32 38 35 39 32 34 32 35 31 34 2D 45 42 31 41 33 34 30 31 38 46 31 45 42 34 37 33 33 39 33 34 46 30 36 35 36 38 38 30 41 37 35 32 2F 34 30 30 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33
+    // A0 01 00
+
+    // 00 00 00 05 00 00
+    // [02 46]
+    // 12 03 98 01 02 08 9B A4 D4 9A 0A 10 02 22 BB 04
+    // 08 D1 F1 CE FD 0B
+    // 12 [10] 5F D4 03 6D 59 36 18 FD 49 3D 4C 97 53 02 BA D8
+    // 18 00
+    // 48 BD EE 92 8D 05
+    // 48 BD EE 92 C5 01
+    // 48 B4 C3 A9 E8 06
+    // 48 BA F6 D7 5C
+    // 48 EF BC A4 DC 07
+    // 50 50 50 50 50 50 50 50 50 50
+    // 5A [0D] 67 63 68 61 74 2E 71 70 69 63 2E 63 6E
+    // 62 [77] 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 33 32 31 36 32 32 36 35 31 33 2D 35 46 44 34 30 33 36 44 35 39 33 36 31 38 46 44 34 39 33 44 34 43 39 37 35 33 30 32 42 41 44 38 2F 31 39 38 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33
+    // 6A [75] 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 33 32 31 36 32 32 36 35 31 33 2D 35 46 44 34 30 33 36 44 35 39 33 36 31 38 46 44 34 39 33 44 34 43 39 37 35 33 30 32 42 41 44 38 2F 30 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33
+    // 72 [77] 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 33 32 31 36 32 32 36 35 31 33 2D 35 46 44 34 30 33 36 44 35 39 33 36 31 38 46 44 34 39 33 44 34 43 39 37 35 33 30 32 42 41 44 38 2F 37 32 30 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33
+    // 78 00
+    // 80 01 03
+    // 9A 01 [77] 2F 67 63 68 61 74 70 69 63 5F 6E 65 77 2F 38 31 34 37 37 37 32 33 30 2F 38 31 34 37 37 37 32 33 30 2D 33 32 31 36 32 32 36 35 31 33 2D 35 46 44 34 30 33 36 44 35 39 33 36 31 38 46 44 34 39 33 44 34 43 39 37 35 33 30 32 42 41 44 38 2F 34 30 30 3F 76 75 69 6E 3D 31 30 34 30 34 30 30 32 39 30 26 74 65 72 6D 3D 32 35 35 26 73 72 76 76 65 72 3D 32 36 39 33 33
+    // A0 01 00
 }
\ No newline at end of file
diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/FriendOnlineStatusChanged.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/FriendOnlineStatusChanged.kt
index b9db1ed44..4de8a085c 100644
--- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/FriendOnlineStatusChanged.kt
+++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/protocol/tim/packet/event/FriendOnlineStatusChanged.kt
@@ -14,7 +14,6 @@ import net.mamoe.mirai.network.protocol.tim.packet.KnownPacketId
 import net.mamoe.mirai.network.protocol.tim.packet.PacketId
 import net.mamoe.mirai.network.protocol.tim.packet.SessionPacketFactory
 import net.mamoe.mirai.utils.OnlineStatus
-import net.mamoe.mirai.utils.io.toUHexString
 
 data class FriendStatusChanged(
     val qq: QQ,
@@ -31,7 +30,7 @@ object FriendOnlineStatusChangedPacket : SessionPacketFactory<FriendStatusChange
         val qq = readUInt()
         discardExact(8)
         val statusId = readUByte()
-        val status = OnlineStatus.ofId(statusId) ?: error("Unknown online status id 0x${statusId.toByte().toUHexString()}u")
+        val status = OnlineStatus(statusId)
         return FriendStatusChanged(handler.bot.getQQ(qq), status)
     }