Jump to content

Kaphotics

Helpful Member
  • Posts

    7034
  • Joined

  • Last visited

  • Days Won

    336

Posts posted by Kaphotics

  1. Thank you very much for the comments Kaphotics; I understand what you mean, but trying doesn't do any bad as well, don't you think?

    The link you provided is quite useful and has helped me a lot! I read your comments on SVExchange, the spinda method's very interesting, do you know more about this?

    - Hide

    Spinda method (probably) won't work; we currently believe the spots for X/Y origin are based on the encryption constant not the PID.

  2. Is a new encryption code generated for each trade (much like the save system) or is there one universal code used again and again? I would assume the latter, unless of course the randomly generated decryption code is sent along with each trade...

    The 16byte 'checksum' is believed to be what is used to encrypt and decrypt the packet; however it is not yet known how it does it exactly.

    The 'checksum' has been observed to be 'randomly generated' based off of the contents of the packet header & data, as Zaneris has mentioned. Again, it is unknown how it is generated.

  3. I think what XXASHXX means by Pass is the 30-days free trial. I would assume that if you registered for it, Celebi would appear on your account, but it would end up being deleted a short while after the trial ended, unless you purchased a subscription.

    They'd never delete an account's data if their trial ends, or if their subscription expires. It's best to keep the data in case the user comes back!

  4. To recap what's new due to 1.2:

    EAD header:

    uint magic; //0x0301D0EA // EA D0 01 03

    ushort size; // without EAD header

    ushort unk1; // wondertrade: 0x1111, gts = 0xAFA1

    ushort unk2; // wondertrade: 0x08E2, gts = 0x00E2

    ushort unk3;

    ushort packetId;

    ubyte checksum[16];

    ushort unk4; // 02 01

    ubyte encryptedFlag; // 00 = plaintext (wondertrade), 01 = encrypted (gts)

    Data:

    ubyte data;

    if it's wondertrade:

    byte unk[0x1C];

    byte pkx[0x104]; box & party data

    That's what it used to be.

    Now the only difference is that the 0x120 payload of the unk&pkx is never the same (when comparing different instances) because it is encrypted.

    Image showing a 1.0 packet and a 1.2 packet of the same PKX stored in a box:

    qIOce.jpg

    Thanks RoC -- this is his Xerneas and the first 1.2 dump of it.

    I'm not assuming that both the 0x1C and 0x104 datas are the same between packets; the encryption key for the PKX should be the same -- it's just showing that the packet is encrypted with another layer of protection.

    Speculation:

    The traffic has not been entirely encrypted; the same header, checksum, and payload arrangement exists. So it still is obvious where in the transmission our desired data is... it's just got another layer of protection.

    As for that protection, since both the checksum and the 0x120 data are different for subsequent interactions, I'd imagine that the checksum is what creates that layer. Call it a hunch but I think it's probably used as a encryption/decryption key for the packet the same way the Gen 4/5 checksum was for pkm's. You have your data you want to protect, you checksum it so you can detect modification, then you use your checksum to hide it from prying eyes with some sort of RNG XOR.

    Upon looking at the posted GTS packets... this might be the same kind of encryption layer the GTS uses...

  5. from gen 5 (shouldn't be that much different) from Pokemon ROM Changer

    stat boost/drop codes:

    0,None
    1,Attack
    2,Defense
    3,Special Attack
    4,Special Defense
    5,Speed
    6,Accuracy
    7,Evasion
    8,All

    inflict ailment codes:

    0,None
    1,Paralyze
    2,Sleep
    3,Freeze
    4,Burn
    5,Poison
    6,Confusion
    7,Attract
    8,Capture
    9,Nightmare
    10,Curse
    11,Taunt
    12,Torment
    13,Disable
    14,Yawn
    15,Heal Block
    16,?
    17,Detect
    18,Leech Seed
    19,Embargo
    20,Perish Song
    21,Ingrain
    65535,Special
    

    move categories

    0,DMG
    1,No DMG | Inflict status
    2,No DMG | -targetstat/+userstat
    3,No DMG | heals user
    4,DMG | Inflict status
    5,No DMG | STATUS | +targetstat
    6,DMG | -targetstat
    7,DMG | +userstat
    8,DMG | absorbs dmg & heals
    9,One-hit KO
    10,Effect on the whole field
    11,Effect on one side of the field
    12,Forces target to switch out
    13,Unique effect

    alternatively, from veekun;

    https://github.com/veekun/pokedex/blob/master/pokedex/data/csv/move_meta_ailments.csv

    https://github.com/veekun/pokedex/blob/master/pokedex/data/csv/move_meta_categories.csv

    https://github.com/veekun/pokedex/blob/master/pokedex/data/csv/move_flags.csv

  6. To absolve any confusion:

    ( TID ^ SID >> 4 ) = Trainer Shiny Value

    ( PIDlow^PIDhigh >> 4 ) = PKM Shiny Value

    If both xor'd together = 0, the Pokemon is shiny. It's always been this way; it's just a new fan term for it since it is a bit more abusable.

    The way the games determine if its shiny or not is more or less this:

    (PIDlow^PIDhigh)^(TID^SID)>>3 = 0 -> Shiny [Gen 3-5 origin] (return 0-8191)

    (PIDlow^PIDhigh)^(TID^SID)>>4 = 0 -> Shiny [Gen VI origin] (return 0-4095)

    Without the shifts, pre gen6 the XORs had to return a number 0-7. What we noticed in Gen VI is that shinies exhibited 0-15 results, thus the overall odds were doubled.

    The whole shiny value stuff is a fan simplification since PIDs and Trainer IDs can't be altered by one user, only the OT can be changed (giving a new SIDTID).

    I don't think anyone has bothered checking xor=16, but there shouldn't be a difference between wilds/breeds. They can always roll extra PIDs if it's not shiny (like genV shiny charm or gen45 MM, or g34 everstones... you get the point)

  7. Also, did anybody have a look at this program called "Instacheck" at the smogon forum? They seem to have gotten data called Shiny value from pokemons. I don't think they posted any information or documentation about. Anybody have a clue about this? I see that xfr is credited for the research too

    ( TID ^ SID >> 4 ) = Trainer Shiny Value

    ( PIDlow^PIDhigh >> 4 ) = PKM Shiny Value

    If both xor'd together = 0, the Pokemon is shiny. It's always been this way; it's just a new fan term for it since it is a bit more abusable.

    Nothing new.

  8. But my gamesave is on my Pc... 1MB size without any problems.

    But upon booting the game checks against the save & decryption data stored on the NAND. The next time you save, the previous save file keys will be wiped out. Hence why SD backups of your save are useless unless you can back up/restore your NAND.

×
×
  • Create New...