Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    39

    [C/C++] Digest realm Android

    Buongiorno
    Accedo a un server programmato in C con autenticazione Digest codifica MD5, da i client con windows ottengo il popup di autenticazione, da android non funziona non appare il popup, sapete come posso modificare il prog in C per far digerire ad android l'autenticazione.

    Contrariamente il Basic realm authentication (401) android lo vede, però il base64 è inaffidabile essendo una codifica nota a tutti.

    Grazie ciao

  2. #2
    Stiamo parlando di server HTTP/CGI che non dialoga con il browser di default di Android? Puoi postare una sessione HTTP di esempio, per vedere se il server C agisce correttamente? Provando con vari browser (Firefox, Chrome, Opera, ...) funziona o dà gli stessi problemi di Android?

    ---edit---
    Leggendo in giro pare che il browser di Android non implementi perfettamente lo schema digest.
    Inoltre, tieni presente che comunque non è il massimo dal punto di vista della sicurezza (tutto il resto del traffico passa comunque in chiaro), per cui una soluzione decisamente più sicura sarebbe passare su HTTPS.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    39
    Grazie per la risposta, ho letto anch'io prima di scrivere qui che ci sono problemi con android, ma erano post del 2008 - 2009, pensavo che magari ci fosse qualche soluzione difficile da trovare.

    Si uso solo protocollo HTTP, purtroppo non posso usare HTTPS è un processore ARM da 20MHZ con 512K di memoria una SD card da 4 Gb dalla quale carico le pagine web e file js abbinato a una scheda di rete, non ho le risorse per utilizzare quel protocollo. Diciamo che è questo piccolo server a mandare tutto al client, il processore programmato in C con qualche libreria e poi compilato si limita a gestire i pacchetti POST e GET inviati dal js ajax e le sue periferiche digitali.

    Certo con firefox e Crome funziona correttamente quando chiamo l'host da android il digest viene ignorato e mi passa subito in login error.


    questa è la risposta del server quando da browser digiti http://192.168.2.177/circuit.htm

    client << F("HTTP/1.0 401 Authorization Required");
    client << F("WWW-Authenticate: Digest realm=\" Quadro elettrico login \"");
    //client << F("qop=\"auth,auth-int\"");
    //client << F("nonce =\"dcd98b7102dd2f0e8b11d0f600bfb0c093\"");
    //client << F("opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"") ;
    client << F(401, DEC);
    client << F(" OK\r\n");

    esempio con firefox inserendo ... user "admin" ... pass "admin" il client rispinde

    Host: 192.168.2.177
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Authorization: Digest username="admin", realm=" Quadro elettrico login ", nonce="", uri="/circuit.htm", response="cdcd79c55612e085717302e815a27db9"
    Cache-Control: max-age=0, max-age=0


    esempio con android, ma qui non mi viene concesso l'inserimento

    Host: 192.168.2.177
    Connection: keep-alive
    Referer: http://192.168.2.177/circuit.htm
    User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.3; it-it; Sensation_Z710e Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
    Accept-Encoding: gzip,deflate
    Accept-Language: it-IT, en-US
    Accept-Charset: utf-8, iso-8859-1, utf-16, *;q=0.7

    Ma già che siamo in tema, non capisco una cosa:
    Sapendo che tutto viaggia in chiaro ... Il base64 se viene intercettato lo converto e riesco a risalire alle 2 parole user e pass, ma se intercetto una stringa di 32 caratteri generata da un MD5 non riesco a risalire con facilità a user e pass.
    Ora mi chiedo qualcuno potrebbe prendere questo hash e inviarlo al server senza passare dalle 2 parole originali? perchè in fondo è questo che il server riconosce dall'header la stringa generata dall'MD5. In tal caso cosa posso usare per dare un minimo di protezione ai dati principali che non sia troppo oneroso per quel piccolo MCU

    Immagina di vedere una telecamera IP (non è quello che ho io, lavoro su cose un po' più belle), ha un login ed è capace di dialogare in http ma è poco potente

    Grazie ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    39
    Guardo 20 volte al giorno il forum da 5 giorni in attesa di un segno, posso fare un UP?
    Quindi niente, nessuno mi può aiutare? sono fermo da un mese nel mio progetto, faccio prove su prove, modifiche su modifiche, ma ottengo poco e nulla, mi basta anche " guarda non lo so mi dispiace" almeno non mi sento solo

    ciao

  5. #5
    Up assolutamente lecito, non rispondevo proprio per il motivo che hai detto:
    guarda non lo so mi dispiace
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    39

    [risolto]

    Non servirà mai a nessuno, ma giusto per correttezza posto la domanda giusta che il server deve fare verso un client android

    client << F("HTTP/1.1 401 Authorization Required\r\n");
    client << F("WWW-Authenticate: Digest realm=\"test\", nonce=\"IVjZjc3Yg\", algorithm=\"MD5\", qop=\"auth-int\", opaque=\"000000\"\r\n");

    Il nonce che può essere variato nel tempo era la causa, ancora ora stento a capire come va usato al meglio, ma già per me è sufficiente così.

    Dopo molteplici ricerche e prove ho prelevato parti di esempi eseguiti in tutti i linguaggi possibili e immaginabili, adeguati poi al mio prog C++.
    In effetti esisteva un bug sul Digest realm che in Android 4.0.3 sono stati corretti.
    Ora funziona!!

    saluti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.