Guest User

Untitled

a guest
Apr 4th, 2022
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. The goal, as far as I can tell, is to have a successful appraisal that sees "type=gold" in the decrypted text
  2.  
  3. Requests begin with a 07, and start being read at byte #5
  4. Appraisals begin with a 08, and start being read at byte #5
  5. (I don't think the contents of byte 2, 3, and 4 matter at all)
  6. Both stop reading until either the packet ends or they hit an FF.
  7. (The appraisal packets sent from the game contain a bunch of unused garbage data if you're using a short holder name, everything after the first FF can be ignored)
  8.  
  9. Requesting a certificate will get you an encrypted text back, which when decrypted, is in the form of `authority=CrackerFour/serial=#######/holder=whateveryouput/type=silver`
  10. It's decrypted in 16-byte chunks of characters, so if you compare two encrypted texts, you'll notice they always have the same first 16 bytes (`authority=Cracke`)
  11.  
  12. Appraisal is refused if the authority isn't "CrackerFour", or the type isn't "silver" (or "gold", presumably)
  13. However, appraisal is not refused if there's no type field at all (possibly if there's no authority field either, but that's seemingly impossible to cause), only if the field exists and has an unexpected value
  14. The serial field doesn't have to be only numbers or anything
  15.  
  16. Appraisal/requests don't seem to mind if the same field is defined more than once, or nonsense fields. If defined more than once in a request (like multiple holder), only the last one is kept for the new certificate
  17. However, they are refused if there's an unfinished declaration (like, if there is a forward slash, there needs to be an equals sign after it)
  18.  
  19. When you request a certificate, you can:
  20. Omit the "type" field entirely, but it will be filled in with "undefined" and appraisal will get refused, doesn't seem useful
  21. Modify the "holder" field, but you can't use /, =, or FF in it
  22.  
  23. My current suspicion is that you need to do something like this, by transferring the final 16-byte chunk from a different certificate:
  24. ```
  25. authority=Cracke
  26. rFour/serial=391
  27. 2928/holder=This
  28. istehurn!!/type= -snip-
  29. gold/type=silver <--- "gold" from the tail end of a name
  30. ```
  31. This is the only way I can see to get the string "type=gold", assuming the type=silver right after it wouldn't ruin it.
  32.  
  33. But, transplanting doesn't seem to work all the time.
  34. I don't quite understand what prevents it from working. If I modify one byte of some random input, only the line that byte was on gets corrupted; the ones after it are fine. So that suggests you should be able to copy those future lines somewhere else and they'd still work. But it's not that simple...
  35.  
  36. I'm thinking that perhaps, each line's result is based on the bytes of the previous line. For instance, if I copy the first two lines over and over again, Line #1's will be corrupted but Line #2's will be fine; this is because Line #2 uses the undeciphered bytes of Line #1 to decrypt itself?
  37. But then why does modifying one byte only corrupt that one line? Shouldn't it also corrupt the next one?
  38. And can this "gold/type=silver" transplant work at all?
  39.  
  40. I've been using the Repeater tab in Burp Suite, with a copy of each packet type sent over there, so you don't need the proxy server on to intercept/mess with packets.
  41. And a lot of decoding/encoding from base64 is needed, the Decoder tab is kind of annoying but useful, I also had websites open for encoding/decoding base64, plus encoding hex bytes to base64 ( https://cryptii.com/pipes/hex-to-base64 ) for when I was transplanting groups of 16
Add Comment
Please, Sign In to add comment