Strona 1 z 2

Conky i Gmail informacja o poczcie i szyfrowanie haseł

: 14 kwietnia 2009, 19:39
autor: dowoszek
Witam.
Mam pytanie odnośnie skryptu z poniższego poradnika:
http://debian.linux.pl/viewtopic.php?p=10149#10149

Co prawda hasła są przesyłane w formie zaszyfrowanej (czy ktoś mógłby to potwierdzić, bo nie bardzo orientuję się w tym kodzie), ale przechowywane na dysku są w formie zwykłego tekstu. Czy dałoby się to jakoś zmienić? Ewentualnie czy moglibyście polecić programik (możliwie najprostszy), który sprawdzałby dostępność nowej poczty na koncie Gmail i jednocześnie był w pełni zabezpieczony (może coś korzystającego z KWallet, albo gnomowego odpowiednika)? Potrzebna mi wyłącznie informacja, że "są nowe wiadomości" (reszta jest mi obojętne, wręcz zbędna), i obsługa wielu kont.

: 14 kwietnia 2009, 21:54
autor: sigo
Jak widać, w skrypcie, poczta pobierana jest z kanału atom, poprzez protokół https - zaszyfrowany - HyperText Transfer Protocol Secure.

Możesz ograniczyć chmody dla pliku z danymi logowania - tak, byś jedynie Ty mógł odczytywać jego zawartość.

Cały mechanizm polega na tym, że użytkownik wysyła niezaszyfrowane hasło, które jest szyfrowane na serwerze gmaila (np. md5), a następnie porównywane z ustawionym, zaszyfrowanym hasłem - jest to algorytm jednostronny.

Do zwiększenia bezpieczeństwa pozostaje użycie innego programu (może ktoś inny podpowie) lub użycie jakiegoś prostego algorytmu, który przed wysłaniem hasła je odszyfruje - jest to dosyć kiepski pomysł.

: 15 kwietnia 2009, 09:49
autor: dowoszek
Czyli generalnie mechanizm przesyłania hasła taki sam jak w przeglądarce, bo logując się bezpośrednio na stronie hasło chyba też jest przesyłane niezaszyfrowane poprzez https?

Chyba przyjdzie mi korzystać do tego celu z... Akregatora? Dziwne tylko, że niby korzysta z kdewallet, a ja nie mam zainstalowanej paczki kwalletmanager?

: 15 kwietnia 2009, 12:32
autor: vtr
Jeżeli chcesz przechowywać hasło w formie niedostępnej to skompiluj poniższy program który działa tak samo jak skrypt i następnie z kodu źródłowego usuń login i hasło. Kompilator g++.

Kod: Zaznacz cały

#include <cstdlib>

using std::system;

int main()
{
  return system("wget --secure-protocol=TLSv1 --timeout=5 -t 1 -q -O - [url]https://LOGIN:HASLO@mail.google.com/mail/feed/atom[/url] --no-check-certificate | grep 'fullcount' | sed -e 's/.*<fullcount>//;s/<\\/fullcount>.*//' 2>/dev/null");
}

: 15 kwietnia 2009, 12:43
autor: dowoszek
vtr, za każdym razem będę musiał wpisywać hasło? Chyba czegoś nie łapię...

: 15 kwietnia 2009, 16:52
autor: sigo
Z tego co zrozumiałem, vtr podrzucił Ci kod, w którym wpisujesz swój login i hasło; następnie program kompilujesz. Zaletą tego rozwiązania jest to, że dane logowania przechowywane są w skompilowanej aplikacji - nie można już ich tak po prostu podejrzeć.

: 15 kwietnia 2009, 17:22
autor: dowoszek
No tak, załapałem. Zmyliło mnie:
vtr pisze:następnie z kodu źródłowego usuń login i hasło
Zacząłem kombinować, że może kod źródłowy odgrywał będzie jeszcze jakąś rolę.

Niegłupie rozwiązanie, a nawet bardzo ciekawe. Zaraz sobie tak zrobię, ciekawe tylko jak to z tym podglądaniem hasła w takiej formie.

Edit:
A jeśli chciałbym, żeby ten programik bezpośrednio mi wypisywał w konsoli? Czy ktoś mógłby mi podpowiedzieć co tu jest źle (oj zapomina się szybko te funkcje)?

Kod: Zaznacz cały

#include <iostream>
#include <stdlib.h>

using namespace std]https://LOGIN1:HASLO1@mail.google.com/mail/feed/atom[/url] --no-check-certificate | grep 'fullcount' | sed -e 's/.*<fullcount>//;s/<\\/fullcount>.*//' 2>/dev/null");

 g2 = system("wget --secure-protocol=TLSv1 --timeout=5 -t 1 -q -O - [url]https://LOGIN2:HASLO2@mail.google.com/mail/feed/atom[/url] --no-check-certificate | grep 'fullcount' | sed -e 's/.*<fullcount>//;s/<\\/fullcount>.*//' 2>/dev/null");

cout << "g1 nieprzeczytanych = " << g1 << endln;
cout << "g2 nieprzeczytanych = " << g2 << endln;

return 0;
}

: 16 kwietnia 2009, 10:20
autor: vtr
Spróbuj coś takiego:

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
system("wget --secure-protocol=TLSv1 --timeout=5 -t 1 -q -O - [url]https://LOGIN1:HASLO1@mail.google.com/mail/feed/atom[/url] --no-check-certificate | grep 'fullcount' | sed -e 's/.*<fullcount>//;s/<\\/fullcount>.*//' 2>/dev/null");

system("wget --secure-protocol=TLSv1 --timeout=5 -t 1 -q -O - [url]https://LOGIN2:HASLO2@mail.google.com/mail/feed/atom[/url] --no-check-certificate | grep 'fullcount' | sed -e 's/.*<fullcount>//;s/<\\/fullcount>.*//' 2>/dev/null");

return 0;
} 
Na temat funkcji system możesz poczytać w:

Kod: Zaznacz cały

man system
Poza tym było jeszcze parę błędów (endln, stdlib.h).

: 16 kwietnia 2009, 20:42
autor: dowoszek
Tak, samo system() działa, ale jak chcę dorzucić opis poprzez "cout" (np. "nowe wiadomości na konto1: ...") to coś się miesza. Wiem, wiem, zaczynam marudzić ;)

: 17 kwietnia 2009, 00:24
autor: vtr
Po pierwsze, wiem że funkcja system działa tak samo, ale chodziło mi o włączany plik nagłówkowy jeżeli program jest napisany w c++ to powinien być plik "cstdlib", jeżeli w c to "stdlib.h". Zwróciłem uwagę bo skoro chcesz używać strumieni cout to sugeruje że program napisany jest w c++ stąd powinno być cstdlib.

Po wtóre, mówiłem żebyś przeczytał podręcznik man (man system) bo tam jest napisane dokładnie co robi funkcja "system" i wtedy wszystko byś rozumiał. Ogólnie mogę powiedzieć że to co wrzucisz jako argument funkcji system to jest wykonywane tak jak byś wpisał to w konsoli. Funkcja ta zwraca status wykonanej operacji.

Zaproponowany przeze mnie program na pewno nie jest najwyższych lotów ale spełnia wymaganą funkcję i jest (był) bardzo prosty do napisania. Jeżeli szukasz czegoś bardziej zaawansowanego to musisz to albo napisać sam albo znaleźć gotowca :)