Skip to content

Commit dd6d578

Browse files
committed
print out unserializable items
1 parent df58627 commit dd6d578

File tree

2 files changed

+23
-17
lines changed

2 files changed

+23
-17
lines changed

internal/item/item.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ package item
22

33
import (
44
"encoding/binary"
5-
"encoding/hex"
65
"encoding/json"
76
"errors"
87
"fmt"
98
"hash/crc32"
109
"io/ioutil"
11-
"log"
1210
"strings"
1311
"sync"
1412

@@ -22,15 +20,15 @@ var (
2220
)
2321

2422
type Item struct {
25-
Level int
26-
Balance string
27-
Manufacturer string
28-
InvData string
29-
Parts []string
30-
Generics []string
31-
Overflow string
32-
Version uint64
33-
Wrapper *pb.OakInventoryItemSaveGameData
23+
Level int `json:"level"`
24+
Balance string `json:"balance"`
25+
Manufacturer string `json:"manufacturer"`
26+
InvData string `json:"inv_data"`
27+
Parts []string `json:"parts"`
28+
Generics []string `json:"generics"`
29+
Overflow string `json:"overflow"`
30+
Version uint64 `json:"version"`
31+
Wrapper *pb.OakInventoryItemSaveGameData `json:"wrapper"`
3432
}
3533

3634
func DecryptSerial(data []byte) ([]byte, error) {
@@ -44,7 +42,6 @@ func DecryptSerial(data []byte) ([]byte, error) {
4442
decrypted := bogoDecrypt(seed, data[5:])
4543
crc := binary.BigEndian.Uint16(decrypted) // first two bytes of decrypted data are crc checksum
4644
combined := append(append(data[:5], 0xFF, 0xFF), decrypted[2:]...) // combined data with checksum replaced with 0xFF to compute checksum
47-
log.Println(hex.EncodeToString(combined))
4845
computedChecksum := crc32.ChecksumIEEE(combined)
4946
check := uint16(((computedChecksum) >> 16) ^ ((computedChecksum & 0xFFFF) >> 0))
5047

@@ -151,6 +148,9 @@ func getBits(k string, v uint64) int {
151148

152149
func getPart(key string, index uint64) string {
153150
data := db.GetData(key)
151+
if int(index) >= len(data.Assets) {
152+
return ""
153+
}
154154
return data.GetPart(index)
155155
}
156156

internal/server/character.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package server
22

33
import (
4+
"encoding/base64"
45
"io/ioutil"
6+
"log"
57
"math"
68
"os"
79
"regexp"
@@ -126,17 +128,21 @@ func getItems(c *gin.Context) {
126128
c.AbortWithStatus(500)
127129
}
128130
_, char := character.Deserialize(f)
129-
items := make([]item.Item, len(char.InventoryItems))
131+
items := make([]item.Item, 0)
130132
for _, data := range char.InventoryItems {
131-
i, err := item.Deserialize(data.ItemSerialNumber)
133+
d := make([]byte, len(data.ItemSerialNumber))
134+
copy(d, data.ItemSerialNumber)
135+
i, err := item.Deserialize(d)
132136
if err != nil {
133-
c.AbortWithStatus(500)
134-
return
137+
log.Println(err)
138+
log.Println(base64.StdEncoding.EncodeToString(data.ItemSerialNumber))
139+
// c.AbortWithStatus(500)
140+
// return
135141
}
136142
i.Wrapper = data
137143
items = append(items, i)
138144
}
139-
c.JSON(200, items)
145+
c.JSON(200, &items)
140146
return
141147
}
142148

0 commit comments

Comments
 (0)