Skip to content

Commit

Permalink
Fix bug that prevented the tool to decrypt unknown maps
Browse files Browse the repository at this point in the history
  • Loading branch information
arbll committed Oct 23, 2017
1 parent 77eee90 commit bd74027
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 10 deletions.
2 changes: 1 addition & 1 deletion dfkey/benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func checkGuessKeyDataWorker(mapsData []MapData, jobs <-chan MapData, results ch
for j := range jobs {
if j.key != "" {
key := GuessKey(j, mapsData)
if len(key) > 0 && hex.EncodeToString(key) == j.key {
if hex.EncodeToString(key) == j.key {
results <- 1
} else {
results <- 0
Expand Down
10 changes: 8 additions & 2 deletions dfkey/mapdata.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,20 @@ func ConnectDB(connectionString string) *sql.DB {

//GetKnownMapsData returns all the known maps
func GetKnownMapsData(db *sql.DB) []MapData {
rows, err := db.Query("SELECT id,mapData,`key`,decryptedData FROM static_maps WHERE `key` IS NOT NULL")
rows, err := db.Query("SELECT id,mapData,`key`,decryptedData FROM static_maps")
if err != nil {
fmt.Printf("Scan: %v", err)
}
var mapsData []MapData
for rows.Next() {
var d MapData
err = rows.Scan(&d.Id, &d.data, &d.key, &d.decryptedData)
var key sql.NullString
var decryptedData sql.NullString
err = rows.Scan(&d.Id, &d.data, &key, &decryptedData)
if decryptedData.Valid && key.Valid {
d.decryptedData = decryptedData.String
d.key = key.String
}
if err != nil {
fmt.Printf("Scan: %v", err)
}
Expand Down
16 changes: 9 additions & 7 deletions dfkey/values.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,15 @@ func getValuesProbabilityAtPosition(mapsData []MapData, position int) map[byte]f
valueCountMap := make(map[byte]int)
valueTotalCount := 0
for _, md := range mapsData {
data := md.decryptedData
for i := position; i < len(data); i += CellSize {
valueTotalCount++
if count, contains := valueCountMap[data[i]]; contains {
valueCountMap[data[i]] = count + 1
} else {
valueCountMap[data[i]] = 1
if md.decryptedData != "" {
data := md.decryptedData
for i := position; i < len(data); i += CellSize {
valueTotalCount++
if count, contains := valueCountMap[data[i]]; contains {
valueCountMap[data[i]] = count + 1
} else {
valueCountMap[data[i]] = 1
}
}
}
}
Expand Down

0 comments on commit bd74027

Please sign in to comment.