Come posso determinare quale codifica viene utilizzata? [duplicare]

1

Sto testando una webapp come parte di un programma di bug bug in cui viene codificato il valore di un ticket prodotto per i client.

FYI, il numero del biglietto viene assegnato a un utente per un prodotto con licenza. Webapp ha un campo di inserimento in cui è possibile inserire il numero del biglietto per informazioni sullo stato del prodotto. Il numero del biglietto inserito viene inviato al server e codificato, la pagina si ricarica mentre svuota il campo di input, richiede il numero del ticket al server, lo decodifica e lo rimette sul campo di input per la pagina dei risultati.

Per un numero di biglietto arbitrario: 1111111111111, la stringa codificata ha il seguente aspetto:

2c9VP8uK6VUJlJR4Lmonwk3wy1UGEBgO4VqUYjUqar6kU%3DvK1%2BrOrlrThJWBCPGY5f2vzfJOFMCGd%2FS5%2BaM%2FX%2F6No%3D

O questo (quando decodifica i caratteri URL in esso contenuti):

2c9VP8uK6VUJlJR4Lmonwk3wy1UGEBgO4VqUYjUqar6kU=vK1+rOrlrThJWBCPGY5f2vzfJOFMCGd/S5+aM/X/6No=

Ho sezionato questa stringa codificata come segue:

1.

2c9VP8uK6VUJlJR4Lmonwk3wy1UGEBgO4VqUYjUqar6kU%3D OR 2c9VP8uK6VUJlJR4Lmonwk3wy1UGEBgO4VqUYjUqar6kU=

Sembra che sia un po 'di sale o qualcosa del genere, poiché apparirà prefissato in altri valori codificati come il numero del cliente.

2.

vK1%2BrOrlrThJWBCPGY5f2vzfJOFMCGd%2FS5%2BaM%2FX%2F6No%3D OR vK1+rOrlrThJWBCPGY5f2vzfJOFMCGd/S5+aM/X/6No=

Questa è quella che chiamerei la parte "dinamica" della codifica, poiché varia in base al numero del biglietto.

Durante i test, sono venuto a osservare quanto segue:

  • Non importa se '% 2f' o '% 3D' sono scritti rispettivamente come '/' e '=', poiché il server decodificherà la stringa e restituirà il numero di biglietto specificato in entrambi i casi. Sulla controparte importa se '% 2B' è passato come '+' come il server restituirà il campo di input del numero di ticket vuoto.

  • Il finale '% 3D' è necessario per la decodifica, striping della stringa dalla sua fine% carattere 3D risulterà in un campo di input vuoto.

Sono amico dei decoder onlin senza fortuna.

Scusate se mi sono esteso troppo, ma volevo darvi quante più informazioni possibili non avendo familiarità con i metodi di codifica. Spero che qualcuno possa dare una mano con questo. Grazie in anticipo.

    
posta sonny 02.02.2017 - 23:59
fonte

2 risposte

2

È una coppia di stringhe Base64 con un prefisso di due caratteri:

2c9VP8uK6VUJlJR4Lmonwk3wy1UGEBgO4VqUYjUqar6kU=vK1+rOrlrThJWBCPGY5f2vzfJOFMCGd/S5+aM/X/6No=

È uguale a:

2c
9VP8uK6VUJlJR4Lmonwk3wy1UGEBgO4VqUYjUqar6kU=
vK1+rOrlrThJWBCPGY5f2vzfJOFMCGd/S5+aM/X/6No=

Queste stringhe codificate si espandono ai seguenti dati:

f5 53 fc b8 ae 95 50 99 49 47 82 e6 a2 7c 24 df
0c b5 50 61 01 80 ee 15 a9 46 23 52 a6 ab ea 45 

bc ad 7e ac ea e5 ad 38 49 58 10 8f 19 8e 5f da
fc df 24 e1 4c 08 67 7f 4b 9f 9a 33 f5 ff e8 da 

Entrambi sono 32 byte, che potrebbero indicare dati crittografati, ma sono chiaramente dati con qualche schema, quindi sospetto che non sia in realtà un codice a blocchi.

Il mio primo pensiero è che il prefisso "2c" potrebbe essere 0x2c per qualche tipo di xor crypto, ma non ho ottenuto alcun risultato da questo. Ho anche provato l'addizione e la sottrazione del modulo, e facendo lo stesso tra le due coppie di stringhe, ancora senza risultato.

Sfortunatamente non c'è un modo ovvio per rompere questo senza un numero significativo di coppie di testo cifrato in chiaro per darci più informazioni.

    
risposta data 03.02.2017 - 00:36
fonte
-1

Forse il numero del biglietto è ora trasformato in un numero hash? Come in, ora è un punto in uno spazio numerico randomizzato. La stringa con codifica URL deve essere rispettata poiché non è sicuro che i browser Web o le app lato server siano in grado di analizzare correttamente la stringa.

    
risposta data 03.02.2017 - 00:11
fonte

Leggi altre domande sui tag