Difference between revisions of "Piñata Vision barcode/Name bits"

From PinataIsland.info, the Viva Piñata wiki
Jump to: navigation, search
(Added data and location for name length field)
(Add links for two more longer-named cards. Add information about name data, and decoded names for (obfuscation set C) GoodVariants/Blackariants.)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
:''To do: Work on correctly decoding GoodVariants names.''
 
 
 
== Name data ==
 
== Name data ==
  
 
Based on released GoodVariants and Blackariants cards, encoded names are 3 to 9 characters long, the longest (and only 9-character name) being [[:Image:Chewnicorn-TroubleInParadise-Black-Francesca-PV.jpg|Francesca]].
 
Based on released GoodVariants and Blackariants cards, encoded names are 3 to 9 characters long, the longest (and only 9-character name) being [[:Image:Chewnicorn-TroubleInParadise-Black-Francesca-PV.jpg|Francesca]].
  
Other cards with longer names include [[:Image:Tusk-Killer_Instinct-PV.jpg|Uncle Tusk]] and [[:Image:Pengum-TroubleInParadise-TeamMember-14-PV.jpg|Fiddy Pence]].
+
Other cards with longer names include [[:Image:Tusk-Killer_Instinct-PV.jpg|Uncle Tusk]], [[:Image:Pengum-TroubleInParadise-TeamMember-14-PV.jpg|Fiddy Pence]], [[:Image:Custacean-TroubleInParadise-TGS08-PV.jpg|Maximum Carnage]], and [[:Image:Geckie-TroubleInParadise-TGS08-PV.jpg|Geckiesaurus Rex]].
  
Until any encoded evidence of much longer names are found, the name length data appears to be a 4-bit field (0-15, with the possibility that 0 indicates the absence of a variable-length name field to follow).
+
Based on the above names, the name length data is possibly a 5-bit field (0-31, with the likelihood that 0 indicates the absence of a variable-length name field to follow).
 +
 
 +
From the [[#Decoding_name_data|results]] of ([[Piñata_Vision_barcode/Obfuscation_set|obfuscation set]] C) cards that have been decoded so far, it's possible that the name itself may be encoded as (7-bit?) ASCII characters.  Other sets need to be checked to verify if punctuation and spaces are likewise encoded as ASCII.
 +
 
 +
It's uncertain yet if/how accented or multi-byte Unicode characters (e.g., CJK) are encoded.
  
 
== Location of name length bits ==
 
== Location of name length bits ==
Line 21: Line 23:
 
|
 
|
 
<pre>
 
<pre>
egrep "^[0-9A-F ]{33}" barcodes.txt | ./barcodetxt2bitdiff.pl --short --namelen | egrep " [0-9A-F]{31}2" | ./reader.pl --namelen | egrep -v "        0      "
+
% egrep "^[0-9A-F ]{32}2" barcodes.txt | ./barcodetxt2bitdiff.pl --short --namelen | ./reader.pl --namelen | egrep -v "        0      "
 
B._Orchid-Killer_Ins 9 E1E8C94D1D3E907E862310C95B859A62222CE0C6932E80B2                NAMELEN = 1001    9
 
B._Orchid-Killer_Ins 9 E1E8C94D1D3E907E862310C95B859A62222CE0C6932E80B2                NAMELEN = 1001    9
 
Christmas-12.25.2008 7 B18177A5BDFE1C9362BF4624050612F2F64D2CA27C7452174ED8F0B56F061703 NAMELEN = 0111    7
 
Christmas-12.25.2008 7 B18177A5BDFE1C9362BF4624050612F2F64D2CA27C7452174ED8F0B56F061703 NAMELEN = 0111    7
Line 38: Line 40:
 
Good_ladybird      8 CB7E6A360D0FE2D404C9447C4AABE492                                NAMELEN = 1000    8
 
Good_ladybird      8 CB7E6A360D0FE2D404C9447C4AABE492                                NAMELEN = 1000    8
 
</pre>
 
</pre>
 +
|}
 +
 +
== Location of name data ==
 +
 +
Names appear to be encoded starting in row 2, with longer names continuing on to row 3.
 +
 +
== Decoding name data ==
 +
 +
By decoding the name length field, then decoding the following ''namelen'' characters, names can be read from the barcode.  (Results stop at 6 characters, due to the lack of enough similarly-obfuscated longer-name cards.)
 +
 +
{| class="collapsible collapsed"
 +
!Reading name data from obfuscation set C cards
 +
|-
 +
|
 +
<pre>
 +
% egrep "^[0-9A-F ]{32}C" barcodes.txt | ./barcodetxt2bitdiff.pl --short --name | ./reader.pl --names
 +
Black_bear          Maya      D772B9106F1F0425945FD4B86C41E59C                                Namelen =  4 Name = Maya
 +
Black_bluebottle    Henry      C47E77F3EC4596A92754CB15FAFBD6AC                                Namelen =  5 Name = Henry
 +
Black_chameleon    Finlay    D52CDFF36C4596B930B040B6BFBB599C                                Namelen =  6 Name = Finlay
 +
Black_cow          Ellie      C94D6E134D0446CCC1802815F8CAC3AC                                Namelen =  5 Name = Ellie
 +
Black_fox          Rhys      D4FBCA4E0F98F7AE945FD18B2F50D4AC                                Namelen =  4 Name = Rhys
 +
Black_orangebutterfl Benjamin  E471793A7872A38F71B6E394DCDEE3BC                                Namelen =  8 Name = Benjam
 +
Black_pony          Keira      B3F171A0BDFD067335542B15FBEBC7AC                                Namelen =  5 Name = Keira
 +
Black_snailpest    Kieran    A0FE543F350B5F32144263E69C8B58AC                                Namelen =  6 Name = Kieran
 +
Black_unicorn      Francesca  BC8174A07DFE06E31098FCBC0C65C0AC                                Namelen =  9 Name = France
 +
Black_whitebutterfly Summer    877DB9204C1A0415909008F68F9B18BC                                Namelen =  6 Name = Summer
 +
Black_penguin      Daniel    F966D06B27CE517194826266BE9B188C                                Namelen =  6 Name = Daniel
 +
Black_snowtiger    Lydia      E78CA0A4D3D42F6795B02B15FBF9F3AC                                Namelen =  5 Name = Lydia
 +
Black_sandant      Mia        836195952A2BC52BE6769697BF19E6FC                                Namelen =  3 Name = Mia
 +
Good_bat            Mia        E4653B3B3F14538FE676CF169F09E6FC                                Namelen =  3 Name = Mia
 +
Good_chameleon      Amelia    F976D2B826EE4A2136B268A68FBBB0BC                                Namelen =  6 Name = Amelia
 +
Good_hydra          Jayden    D1FBE84E1FC2F7AE308023D28DBA80AC                                Namelen =  6 Name = Jayden
 +
Good_snail          Alice      D0F8DA0E1630F7AEC1926815FC94F7AC                                Namelen =  5 Name = Alice
 +
Good_vulture        Evie      9A586E134D21E62C945FD5B17C41D49C                                Namelen =  4 Name = Evie
 +
Good_armadillo      Ethan      86B393A42F2ECD1897913855FD31E78C                                Namelen =  5 Name = Ethan
 +
</pre>
 +
 
|}
 
|}
 
== Matching names ==
 
== Matching names ==
Line 194: Line 233:
 
</pre>
 
</pre>
  
== Decoded names ==
+
== Process of decoding names ==
  
Drop row 1 from the barcode to focus on row 2.  Change IDs to match the ASCII value of the name's 2nd character  (e.g., Kieran, i = 105 decimal).
+
Assuming the names are encoded as ASCII, change IDs to match the ASCII value of the name's first character  (e.g., Maya, M = 77 decimal).
  
 
<pre>
 
<pre>
% grep Blackariants barcodes.txt | cut -d" " -f2 | egrep '^[0-9A-F]{15}C' | sort | ./barcodetxt2bitdiff.pl --short
+
% egrep "^[0-9A-F ]{32}C" barcodes.txt | ./barcodetxt2bitdiff.pl --short --name=1
Black_unicorn          114    1098FCBC0C65C0AC        Francesca
+
Black_bear          77 D772B9106F1F0425945FD4B86C41E59C Character 1 = M (Maya)
Black_snailpest        105    144263E69C8B58AC        Kieran
+
Black_bluebottle   72 C47E77F3EC4596A92754CB15FAFBD6AC Character 1 = H (Henry)
Black_bluebottle       101    2754CB15FAFBD6AC        Henry
+
Black_chameleon     70 D52CDFF36C4596B930B040B6BFBB599C Character 1 = F (Finlay)
Black_chameleon         105    30B040B6BFBB599C        Finlay
+
Black_cow          69 C94D6E134D0446CCC1802815F8CAC3AC Character 1 = E (Ellie)
Black_pony             101    35542B15FBEBC7AC        Keira
+
Black_fox          82 D4FBCA4E0F98F7AE945FD18B2F50D4AC Character 1 = R (Rhys)
Black_orangebutterfl    101    71B6E394DCDEE3BC        Benjamin
+
Black_orangebutterfl 66 E471793A7872A38F71B6E394DCDEE3BC Character 1 = B (Benjamin)
Black_whitebutterfly   117    909008F68F9B18BC        Summer
+
Black_pony         75 B3F171A0BDFD067335542B15FBEBC7AC Character 1 = K (Keira)
Black_fox              104    945FD18B2F50D4AC        Rhys
+
Black_snailpest    75 A0FE543F350B5F32144263E69C8B58AC Character 1 = K (Kieran)
Black_bear              97      945FD4B86C41E59C        Maya
+
Black_unicorn      70 BC8174A07DFE06E31098FCBC0C65C0AC Character 1 = F (Francesca)
Black_penguin           97      94826266BE9B188C        Daniel
+
Black_whitebutterfly 83 877DB9204C1A0415909008F68F9B18BC Character 1 = S (Summer)
Black_snowtiger         121    95B02B15FBF9F3AC        Lydia
+
Black_penguin       68 F966D06B27CE517194826266BE9B188C Character 1 = D (Daniel)
Black_cow              108    C1802815F8CAC3AC        Ellie
+
Black_snowtiger     76 E78CA0A4D3D42F6795B02B15FBF9F3AC Character 1 = L (Lydia)
Black_sandant          105    E6769697BF19E6FC        Mia
+
Black_sandant      77 836195952A2BC52BE6769697BF19E6FC Character 1 = M (Mia)
 +
Good_bat            77 E4653B3B3F14538FE676CF169F09E6FC Character 1 = M (Mia)
 +
Good_chameleon      65 F976D2B826EE4A2136B268A68FBBB0BC Character 1 = A (Amelia)
 +
Good_hydra          74 D1FBE84E1FC2F7AE308023D28DBA80AC Character 1 = J (Jayden)
 +
Good_snail          65 D0F8DA0E1630F7AEC1926815FC94F7AC Character 1 = A (Alice)
 +
Good_vulture        69 9A586E134D21E62C945FD5B17C41D49C Character 1 = E (Evie)
 +
Good_armadillo      69 86B393A42F2ECD1897913855FD31E78C Character 1 = E (Ethan)
 
</pre>
 
</pre>
  
The reader script decodes the columns holding character 2 of the name, and the decoded values are a match.
+
Search within barcode row 2 for obfuscated columns that match values for bits 0-7 of each character. (... = omitted results for column matches)
  
 
<pre>
 
<pre>
% ./reader.pl  black_variant_names_c.txt
+
% egrep "^[0-9A-F ]{32}C" barcodes.txt | ./barcodetxt2bitdiff.pl --short --name=1 | sort --key=3.18 | ./bit_diff.pl --row=2 --bits=0..7
Black_unicorn       114 1098FCBC0C65C0AC ID = 01110010  114
+
                                            666655555555544444444443333333333222222222111111111100000
Black_snailpest     105 144263E69C8B58AC ID = 01101001  105
+
Description          VPID Barcode row 2  321087654321098765432109876543210986543210987654321098654
Black_bluebottle   101 2754CB15FAFBD6AC ID = 01100101 101
+
------------------------------------------------------------------------------------------------------
Black_chameleon     105 30B040B6BFBB599C ID = 01101001  105
+
Black_unicorn           70 1098FCBC0C65C0AC 000100010011000111111001011110000001000110010111000000010 0x0046 0b0000000001000110
Black_pony         101 35542B15FBEBC7AC ID = 01100101 101
+
Black_snailpest         75 144263E69C8B58AC 000110001000010011000111110011010011001000101101011000010 0x004b 0b0000000001001011
Black_orangebutterfl 101 71B6E394DCDEE3BC ID = 01100101  101
+
Black_bluebottle         72 2754CB15FAFBD6AC 001011101010100110010110001010111110101111101111010110010 0x0048 0b0000000001001000
Black_whitebutterfly 117 909008F68F9B18BC ID = 01110101  117
+
Good_hydra              74 308023D28DBA80AC 001100010000000001000111101001010001011011101010000000010 0x004a 0b0000000001001010
Black_fox           104 945FD18B2F50D4AC ID = 01101000  104
+
Black_chameleon         70 30B040B6BFBB599C 001100010110000010000001011011010111111011101101011001001 0x0046 0b0000000001000110
Black_bear         97 945FD4B86C41E59C ID = 01100001  97
+
Black_pony               75 35542B15FBEBC7AC 001110101010100001010110001010111110111110101111000111010 0x004b 0b0000000001001011
Black_penguin       97 94826266BE9B188C ID = 01100001  97
+
Good_chameleon          65 36B268A68FBBB0BC 001111010110010011010001010011010001111011101110110000011 0x0041 0b0000000001000001
Black_snowtiger     121 95B02B15FBF9F3AC ID = 01111001 121
+
Black_orangebutterfl     66 71B6E394DCDEE3BC 011100110110110111000111001010011011001101111011100011011 0x0042 0b0000000001000010
Black_cow           108 C1802815F8CAC3AC ID = 01101100 108
+
Black_whitebutterfly     83 909008F68F9B18BC 100100010010000000010001111011010001111001101100011000011 0x0053 0b0000000001010011
Black_sandant       105 E6769697BF19E6FC ID = 01101001 105
+
Black_fox               82 945FD18B2F50D4AC 100110001011111110100011000101100101110101000011010100010 0x0052 0b0000000001010010
</pre>
+
Black_bear               77 945FD4B86C41E59C 100110001011111110101001011100001101000100000111100101001  0x004d 0b0000000001001101
 +
Good_vulture            69 945FD5B17C41D49C 100110001011111110101011011000101111000100000111010100001 0x0045 0b0000000001000101
 +
Black_penguin           68 94826266BE9B188C 100110010000010011000100110011010111101001101100011000000 0x0044 0b0000000001000100
 +
Black_snowtiger         76 95B02B15FBF9F3AC 100110110110000001010110001010111110111111100111110011010 0x004c 0b0000000001001100
 +
Good_armadillo          69 97913855FD31E78C 100111110010001001110000101010111111010011000111100111000 0x0045 0b0000000001000101
 +
Black_cow               69 C1802815F8CAC3AC 110000110000000001010000001010111110001100101011000011010 0x0045 0b0000000001000101
 +
Good_snail              65 C1926815FC94F7AC 110000110010010011010000001010111111001001010011110111010 0x0041 0b0000000001000001
 +
Black_sandant           77 E6769697BF19E6FC 111011001110110100101101001011110111110001100111100110111  0x004d 0b0000000001001101
 +
Good_bat                77 E676CF169F09E6FC 111011001110110110011110001011010011110000100111100110111 0x004d 0b0000000001001101
 +
 
 +
ID bit 0 to match 0100011010110011111
 +
  ...
  
Repeating the same process to look for columns matching ASCII values for the following 3 characters, we can read name data from the barcode. It looks like the name field has an (undiscovered) length "byte," since the name data does not appear to be zero-terminated.
+
ID bit  1 to match 1101110111000000000
 +
  ...
  
<pre>
+
(and so on...)
% ./reader.pl --names black_variant_names_character5_c.txt
 
Black_unicorn      99 1098FCBC0C65C0AC Francesca Name = ranc
 
Black_snailpest    97 144263E69C8B58AC Kieran  Name = iera
 
Black_bluebottle    121 2754CB15FAFBD6AC Henry  Name = enry
 
Black_chameleon    97 30B040B6BFBB599C Finlay  Name = inla
 
Black_pony          97 35542B15FBEBC7AC Keira  Name = eira
 
Black_orangebutterfl 97 71B6E394DCDEE3BC Benjamin Name = enja
 
Black_whitebutterfly 101 909008F68F9B18BC Summer  Name = umme
 
Black_fox          0 945FD18B2F50D4AC Rhys    Name = hysb
 
Black_bear          0 945FD4B86C41E59C Maya    Name = ayaf
 
Black_penguin      101 94826266BE9B188C Daniel  Name = anie
 
Black_snowtiger    97 95B02B15FBF9F3AC Lydia  Name = ydia
 
Black_cow          101 C1802815F8CAC3AC Ellie    Name = llie
 
Black_sandant      0 E6769697BF19E6FC Mia    Name = iag}
 
 
</pre>
 
</pre>
  
Unfortunately, the good (other) variants don't appear to keep their name data in the same location.  One possibility is that the GoodVariants cards have additional data located before the name data, which shifts the underlying name data in the structure.
+
This process can be repeated to look for columns matching (ASCII) values for each succeeding character, although the diminishing number of longer-name cards start to make it difficult or impossible to correctly identify relevant columns.
  
 +
E.g., obfuscation set C only has 2 cards so far that have names of 7 or more characters:
 
<pre>
 
<pre>
./reader.pl --names names_c.txt
+
egrep "^[0-9A-F ]{32}C" barcodes.txt | ./barcodetxt2bitdiff.pl --short --name=7
Black_unicorn      114 1098FCBC0C65C0AC Francesca Name = ranc
+
Black_orangebutterfl 105 E471793A7872A38F71B6E394DCDEE3BC Character 7 = i (Benjamin)
Black_snailpest    105 144263E69C8B58AC Kieran  Name = iera
+
Black_unicorn       115 BC8174A07DFE06E31098FCBC0C65C0AC Character 7 = s (Francesca)
Black_bluebottle    101 2754CB15FAFBD6AC Henry  Name = enry
 
Good_hydra          97 308023D28DBA80AC Jayden  Name = tll`
 
Black_chameleon    105 30B040B6BFBB599C Finlay  Name = inla
 
Black_pony          101 35542B15FBEBC7AC Keira  Name = eira
 
Good_chameleon      109 36B268A68FBBB0BC Amelia  Name = ilhy
 
Black_orangebutterfl 101 71B6E394DCDEE3BC Benjamin Name = enja
 
Black_whitebutterfly 117 909008F68F9B18BC Summer  Name = umme
 
Black_fox          104 945FD18B2F50D4AC Rhys    Name = hysb
 
Black_bear          97 945FD4B86C41E59C Maya    Name = ayaf
 
Good_vulture        118 945FD5B17C41D49C Evie    Name = a}ab
 
Black_penguin       97 94826266BE9B188C Daniel  Name = anie
 
Black_snowtiger    121 95B02B15FBF9F3AC Lydia  Name = ydia
 
Good_armadillo      116 97913855FD31E78C Ethan  Name = yriy
 
Black_cow          108 C1802815F8CAC3AC Ellie  Name = llie
 
Good_snail          108 C1926815FC94F7AC Alice  Name = u`ie
 
Black_sandant      105 E6769697BF19E6FC Mia    Name = iag}
 
Good_bat            105 E676CF169F09E6FC Mia    Name = icgy
 
 
</pre>
 
</pre>

Revision as of 18:53, 17 November 2010

Name data

Based on released GoodVariants and Blackariants cards, encoded names are 3 to 9 characters long, the longest (and only 9-character name) being Francesca.

Other cards with longer names include Uncle Tusk, Fiddy Pence, Maximum Carnage, and Geckiesaurus Rex.

Based on the above names, the name length data is possibly a 5-bit field (0-31, with the likelihood that 0 indicates the absence of a variable-length name field to follow).

From the results of (obfuscation set C) cards that have been decoded so far, it's possible that the name itself may be encoded as (7-bit?) ASCII characters. Other sets need to be checked to verify if punctuation and spaces are likewise encoded as ASCII.

It's uncertain yet if/how accented or multi-byte Unicode characters (e.g., CJK) are encoded.

Location of name length bits

GoodVariants and Blackariants cards encode name length data in row 2, as determined by checking rows 1 and 2 for all obfuscation sets. It's likely that PlaceTag species also have a name length field in row 2, although the lack of specific name data for those cards makes it impossible to verify at this time.

Decoding name length bits

Location of name data

Names appear to be encoded starting in row 2, with longer names continuing on to row 3.

Decoding name data

By decoding the name length field, then decoding the following namelen characters, names can be read from the barcode. (Results stop at 6 characters, due to the lack of enough similarly-obfuscated longer-name cards.)

Matching names

The following cards share pinata names, and belong to the same (row 2) obfuscation set.

Cards that also share matching variant data have nearly identical row 2 barcodes, differing in only a few bits.

Ava

9FBEF59DCF5DD656 8683F11D287FC206	Bunnycomb-TroubleInParadise-BrightPink-(Ava-)PV.jpg (Variant 8)
A2F8D48C480E9EFA 8683F11D2DED9606	Buzzenge-TroubleInParadise-Black-Ava-PV.jpg (Variant 15)

Harley

97B6A3855B66CF88 5168F4494A171D81	Elephanilla-TroubleInParadise-PaleBlue-(Harley-)PV.jpg (Variant 5)
D37649004D560805 5168F44A4A161D91	Dragumfly-TroubleInParadise-PaleBlueRed-(Harley-)PV.jpg (Variant 5)
D1EBE85E5810F7AE 5168F4594AA61BF1	Mothdrop-TroubleInParadise-Black-(Harley-)PV.jpg (Variant 15)

Note that the first two cards share the same variant data, and that their row 2 barcodes are nearly identical.

Aimee

9A586E134C0BCD3C D26B28D7670ED64E	Roario-TroubleInParadise-Pink-(Aimee-)PV.jpg (Variant 6)
E17EC6B36C459649 D26B68C6F50ED64E	Tartridge-TroubleInParadise-Black-Aimee-)PV.jpg (Variant 15)

Mia

836195952A2BC52B E6769697BF19E6FC	DesertRaisant-TroubleInParadise-Black-Mia-PV.jpg (Variant 15)
E4653B3B3F14538F E676CF169F09E6FC	Sherbat-TroubleInParadise-Blue-(Mia-)PV.jpg (Variant 2)

James

DEE66A946C1BE2B4 9A9C55CDE256C006	Cocoadile-TroubleInParadise-Pink-James-PV.jpg (Variant 5)
D37248104F172B35 9A9C55CDE356E216	Juicygoose-TroubleInParadise-Purple-James-PV.jpg (Variant 5)

D37248104F172B35 9B636492E839E419	Juicygoose-TroubleInParadise-PaleBlue-(James-)PV.jpg (Variant 6)
D76195943B0B6A2B AB6364927878B019	Fudgehog-TroubleInParadise-Black-James-PV.jpg (Variant 15)

Again, the first two cards share the same variant data, and their row 2 barcodes are nearly identical.

The third card happens to share a matching pinata name, but its row 2 barcode is obfuscated differently. Although name length does seem to be one factor in row 2 obfuscation set selection, another factor (such as variant bits or GoodVariants ID) may jointly determine how row 2 is obfuscated.

Also notable (but unrelated) is that the row 1 barcodes for the two Juicygoose cards are identical. The cards do share the same species ID (and use cost). It's unknown at this point if the matching names have any influence on the row 1 barcode, but the differing variant data appears to be completely unrelated to row 1.

Harrison

F94FD444267E40A1 52AD208D61C7E499	ArcticPretztail-TroubleInParadise-Black-Harrison-PV.jpg (Variant 15)
99AD6E134E553CFC 52AD208DE12FC019	Kittyfloss-TroubleInParadise-Orange-Harrison-PV.jpg (Variant 2)

Dominic

869287B06F67CF08 DE2A7444D91B7EED	Polollybear-TroubleInParadise-Black-(Dominic-)PV.jpg (Variant 15)
EE89F0A4D3E03D27 DC1AE444D95B2EED	Salamango-TroubleInParadise-Pink-(Dominic-)PV.jpg (Variant 5)

Jake

A2FF7406100E5A12 BD69A638992FD482	Cinnamonkey-TroubleInParadise-OrangePink-Jake-PV.jpg (Variant 6)
A2F8D58F59901FDA BD68A6388136D502	Fourheads-TroubleInParadise-Black-Jake-PV.jpg (Variant 15)

Amber

E7B9E1A9B9D52D27 8D16F31B70A46CF5	Mousemallow-TroubleInParadise-Black-(Amber-)PV.jpg (Variant 15)
F86279A0C918644D 8812E33B70542DE5	Swanana-TroubleInParadise-White-Amber-PV.jpg (Variant 3)

Bethany

B3C172A87DF006B3 526C9D234A3758FA	Peckanmix-TroubleInParadise-Black-Bethany-PV.jpg (Variant 15)
D06E24F3EC4B92B9 526C8E731A3752DA	Salamango-TroubleInParadise-Orange-(Bethany-)PV.jpg (Variant 3)

Brooke

DA7FF9E65C2FF2B4 D700F8B09B18C61D	Chocstrich-TroubleInParadise-YellowGreen-(Brooke-)PV.jpg (Variant 8)
A2F8D48E506B0EFA FE92F9F01B58C63D	Jeli-TroubleInParadise-Black-Brooke-PV.jpg (Variant 15)

Joshua

E46168786F7EA38F 339DC922C32ED674	Custacean-TroubleInParadise-Green-Joshua-PV.jpg (Variant 2)
E78CB1EBDDE07D37 27123900C33E8654	Sweetle-TroubleInParadise-Black-(Joshua-)PV.jpg (Variant 15)

Leon

E07B7F521BCC57C0 6078136B46122C81	Buzzlegum-TroubleInParadise-Yellow-(Leon-)PV.jpg (Variant 3)
F97FD4A826AE50C1 627810DB56122581	Cluckles-TroubleInParadise-Black-Leon-PV.jpg (Variant 15)

Oscar

964EFA9F9E5D34B6 A9F37DA3E8732E08	Hootyfruity-TroubleInParadise-Orange-(Oscar-)PV.jpg (Variant 6)
C43AC7B7E9449209 A8D27DA3E8730CA8	Shellybean-TroubleInParadise-Black-Oscar-PV.jpg (Variant 15)

Thomas

BC81EDA03D6E1613 B20530B8D8DF88A3	Pigxie-TroubleInParadise-PaleGreenWhite-Thomas-PV.jpg (Variant 10)
F95FD018275E76C1 B22530B0C8DC80E3	SourLimeoceros-TroubleInParadise-Black-Thomas-PV.jpg (Variant 15)

Non-matching names

The following cards belong to the same (row 2) obfuscation set, but have differing pinata names. However, their names are all the same length, raising the possibility that a) there is a length "byte" for the name field, and b) the row 2 obfuscation set selection involves bits from that field.

Obfuscation set 2, 3-character name

E7BCB0A0D0C52D37 F283E298458F17B2	ArcticBunnycomb-TroubleInParadise-Black-(Leo-)PV.jpg (Variant 15)
C02EFAB3FC45C649 F29EE298258F17B2	Horstachio-TroubleInParadise-Black-(Kai-)PV.jpg (Variant 15)
EE89E1A8D8E56D27 F2D5E29D458F37B2	DesertSyrupent-TroubleInParadise-Black-Ben-PV.jpg (Variant 15)

Obfuscation set 2, 4-character name

E4647B3B3B61538F BD60A638592FD482	Chocstrich-TroubleInParadise-Orange-(Liam-)PV.jpg (Variant 6)
CEEE69162D3BB0A4 BD6456385936DB82	DesertBuzzenge-TroubleInParadise-Black-Kyle-PV.jpg (Variant 15)
D761959578F6492B BD6556381936D202	SourLemmoning-TroubleInParadise-Black-(Luke-)PV.jpg (Variant 15)

Obfuscation set C, 4-character name

D4FBCA4E0F98F7AE 945FD18B2F50D4AC	Pretztail-TroubleInParadise-Black-Rhys-PV.jpg (Variant 15)
D772B9106F1F0425 945FD4B86C41E59C	Fizzlybear-TroubleInParadise-Black-Maya-PV.jpg (Variant 15)
9A586E134D21E62C 945FD5B17C41D49C	Vulchurro-TroubleInParadise-Green-Evie-PV.jpg (Variant 7)

Process of decoding names

Assuming the names are encoded as ASCII, change IDs to match the ASCII value of the name's first character (e.g., Maya, M = 77 decimal).

% egrep "^[0-9A-F ]{32}C" barcodes.txt | ./barcodetxt2bitdiff.pl --short --name=1
Black_bear          	77	D772B9106F1F0425945FD4B86C41E59C	Character 1 = M (Maya)
Black_bluebottle    	72	C47E77F3EC4596A92754CB15FAFBD6AC	Character 1 = H (Henry)
Black_chameleon     	70	D52CDFF36C4596B930B040B6BFBB599C	Character 1 = F (Finlay)
Black_cow           	69	C94D6E134D0446CCC1802815F8CAC3AC	Character 1 = E (Ellie)
Black_fox           	82	D4FBCA4E0F98F7AE945FD18B2F50D4AC	Character 1 = R (Rhys)
Black_orangebutterfl	66	E471793A7872A38F71B6E394DCDEE3BC	Character 1 = B (Benjamin)
Black_pony          	75	B3F171A0BDFD067335542B15FBEBC7AC	Character 1 = K (Keira)
Black_snailpest     	75	A0FE543F350B5F32144263E69C8B58AC	Character 1 = K (Kieran)
Black_unicorn       	70	BC8174A07DFE06E31098FCBC0C65C0AC	Character 1 = F (Francesca)
Black_whitebutterfly	83	877DB9204C1A0415909008F68F9B18BC	Character 1 = S (Summer)
Black_penguin       	68	F966D06B27CE517194826266BE9B188C	Character 1 = D (Daniel)
Black_snowtiger     	76	E78CA0A4D3D42F6795B02B15FBF9F3AC	Character 1 = L (Lydia)
Black_sandant       	77	836195952A2BC52BE6769697BF19E6FC	Character 1 = M (Mia)
Good_bat            	77	E4653B3B3F14538FE676CF169F09E6FC	Character 1 = M (Mia)
Good_chameleon      	65	F976D2B826EE4A2136B268A68FBBB0BC	Character 1 = A (Amelia)
Good_hydra          	74	D1FBE84E1FC2F7AE308023D28DBA80AC	Character 1 = J (Jayden)
Good_snail          	65	D0F8DA0E1630F7AEC1926815FC94F7AC	Character 1 = A (Alice)
Good_vulture        	69	9A586E134D21E62C945FD5B17C41D49C	Character 1 = E (Evie)
Good_armadillo      	69	86B393A42F2ECD1897913855FD31E78C	Character 1 = E (Ethan)

Search within barcode row 2 for obfuscated columns that match values for bits 0-7 of each character. (... = omitted results for column matches)

% egrep "^[0-9A-F ]{32}C" barcodes.txt | ./barcodetxt2bitdiff.pl --short --name=1 | sort --key=3.18 | ./bit_diff.pl --row=2 --bits=0..7
                                             666655555555544444444443333333333222222222111111111100000
 Description           VPID  Barcode row 2   321087654321098765432109876543210986543210987654321098654
------------------------------------------------------------------------------------------------------
Black_unicorn            70 1098FCBC0C65C0AC 000100010011000111111001011110000001000110010111000000010  0x0046 0b0000000001000110
Black_snailpest          75 144263E69C8B58AC 000110001000010011000111110011010011001000101101011000010  0x004b 0b0000000001001011
Black_bluebottle         72 2754CB15FAFBD6AC 001011101010100110010110001010111110101111101111010110010  0x0048 0b0000000001001000
Good_hydra               74 308023D28DBA80AC 001100010000000001000111101001010001011011101010000000010  0x004a 0b0000000001001010
Black_chameleon          70 30B040B6BFBB599C 001100010110000010000001011011010111111011101101011001001  0x0046 0b0000000001000110
Black_pony               75 35542B15FBEBC7AC 001110101010100001010110001010111110111110101111000111010  0x004b 0b0000000001001011
Good_chameleon           65 36B268A68FBBB0BC 001111010110010011010001010011010001111011101110110000011  0x0041 0b0000000001000001
Black_orangebutterfl     66 71B6E394DCDEE3BC 011100110110110111000111001010011011001101111011100011011  0x0042 0b0000000001000010
Black_whitebutterfly     83 909008F68F9B18BC 100100010010000000010001111011010001111001101100011000011  0x0053 0b0000000001010011
Black_fox                82 945FD18B2F50D4AC 100110001011111110100011000101100101110101000011010100010  0x0052 0b0000000001010010
Black_bear               77 945FD4B86C41E59C 100110001011111110101001011100001101000100000111100101001  0x004d 0b0000000001001101
Good_vulture             69 945FD5B17C41D49C 100110001011111110101011011000101111000100000111010100001  0x0045 0b0000000001000101
Black_penguin            68 94826266BE9B188C 100110010000010011000100110011010111101001101100011000000  0x0044 0b0000000001000100
Black_snowtiger          76 95B02B15FBF9F3AC 100110110110000001010110001010111110111111100111110011010  0x004c 0b0000000001001100
Good_armadillo           69 97913855FD31E78C 100111110010001001110000101010111111010011000111100111000  0x0045 0b0000000001000101
Black_cow                69 C1802815F8CAC3AC 110000110000000001010000001010111110001100101011000011010  0x0045 0b0000000001000101
Good_snail               65 C1926815FC94F7AC 110000110010010011010000001010111111001001010011110111010  0x0041 0b0000000001000001
Black_sandant            77 E6769697BF19E6FC 111011001110110100101101001011110111110001100111100110111  0x004d 0b0000000001001101
Good_bat                 77 E676CF169F09E6FC 111011001110110110011110001011010011110000100111100110111  0x004d 0b0000000001001101

ID bit  0 to match 0100011010110011111
  ...

ID bit  1 to match 1101110111000000000
  ...

(and so on...)

This process can be repeated to look for columns matching (ASCII) values for each succeeding character, although the diminishing number of longer-name cards start to make it difficult or impossible to correctly identify relevant columns.

E.g., obfuscation set C only has 2 cards so far that have names of 7 or more characters:

egrep "^[0-9A-F ]{32}C" barcodes.txt | ./barcodetxt2bitdiff.pl --short --name=7
Black_orangebutterfl	105	E471793A7872A38F71B6E394DCDEE3BC	Character 7 = i (Benjamin)
Black_unicorn       	115	BC8174A07DFE06E31098FCBC0C65C0AC	Character 7 = s (Francesca)