• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[Tut] Dlaczego lepiej nie umieszczać haseł w kodzie źródłowym?

Object Storage Arubacloud
+4 głosów
433 wizyt
pytanie zadane 4 stycznia 2017 w Nasze poradniki przez niezalogowany

Hej,

Z racji, że na tym forum powstało już kilka pytań odnośnie umieszczania haseł (np do baz danych: [1]) w samych programach, to postanowiłem napisać kilka zdań o tym dlaczego tego lepiej nie robić i zaproponowałem bezpieczniejsze rozwiązanie.

Art jest dostępny tutaj: http://szymonsiarkiewicz.pl/artykuly/relog/dlaczego-nie-umieszczac-hasel-w-kodzie-zrodlowym/

Wszelkie pytania, uwagi i sugestie są mile widziane, jednakże preferowałbym system komentarzy na blogu ;)

komentarz 4 stycznia 2017 przez Avernis Nałogowiec (27,400 p.)
Coś czuję za chwilę pojawi się tutaj kultowy tekst "Tradycyjnie pozwolę sobie przypiąć"

2 odpowiedzi

+1 głos
odpowiedź 4 stycznia 2017 przez draghan VIP (106,230 p.)

Małe pytanie.

bool checkkey(int k)
{
  volatile int res = 0xdeadbeef;
  res |= k - 0xdeadbab3;
  int passkey = (k & 0xdeadc0de - k ^ 3 - 229) + 15;
  res ^= 123;
  return !passkey;
}
 

Dlaczego res jest volatile? Ma to jakiś związek z zaciemnieniem listingu debuggera?

komentarz 4 stycznia 2017 przez niezalogowany
Raczej z tym, żeby sprytniejszy kompilator nie wyciął tej zmiennej ;) Więc tak, w sumie chodzi o zaciemnienie
komentarz 4 stycznia 2017 przez draghan VIP (106,230 p.)
Rozumiem. A testowałeś bez tego modyfikatora - innymi słowy: to tylko dmuchanie na zimne, czy uzasadnione postępowanie? :)
komentarz 4 stycznia 2017 przez niezalogowany

Uzasadnione postępowanie: dla defaultowego stopnia optymalizacji w GCC zmienna res jest jeszcze tworzona, jednakże dla wersji zoptymalizowaej (O1) już nie jest alokowana.

Więc gdybyśmy chcieli skorzystać z optymalizacji kodu i dodać obfuskację w postaci fake'owych operacji to należałoby dodać słowo kluczowe volatile

#include <stdbool.h>

bool checkkey(int k)
{
  int res = 0xdeadbeef;
  res |= k - 0xdeadbab3;
  int passkey = (k & 0xdeadc0de - k ^ 3 - 229) + 15;
  res ^= 123;
  return !passkey;
}

int main()
{
  return checkkey(1234);
}
(gdb) disas checkkey
Dump of assembler code for function checkkey:
   0x00401440 <+0>:     mov    0x4(%esp),%eax
   0x00401444 <+4>:     mov    $0xdeadc0de,%edx
   0x00401449 <+9>:     sub    %eax,%edx
   0x0040144b <+11>:    and    %edx,%eax
   0x0040144d <+13>:    cmp    $0xef,%eax
   0x00401452 <+18>:    sete   %al
   0x00401455 <+21>:    ret
End of assembler dump.

 

0 głosów
odpowiedź 5 stycznia 2017 przez maly Nałogowiec (37,190 p.)

Dziwne ja w binarce skompilowanej w trybie debug nie mam źródeł, więc sobie tak zapytam, skąd takie info?

na maszynie której ufamy – naszej.

Ciekawe czy windowsiarz też tak może myśleć? xD

komentarz 5 stycznia 2017 przez niezalogowany
Zależy od ustawień, co nie zmienia faktu że dołączasz więcej potencjalnie użytecznych informacji.

Kompilujesz czym i z jakimi parametrami?
komentarz 5 stycznia 2017 przez maly Nałogowiec (37,190 p.)
Może i nie zmienia faktu ale jeśli nie jest to prawdą to jest nie prawdą;)
Ustawienia standardowe dla debug -g na MinGW w jakiejkolwiek wersji.
Pytanie, czy jeśli zmienisz położenie źródeł lub je usuniesz nadal możesz je wylistować?
komentarz 5 stycznia 2017 przez niezalogowany
Hmm, nie wiem czemu byłem święcie przekonany że tak jest... Dzięki za zwrócenie uwagi, zachowywana jest jedynie informacja o numerze linii

Podobne pytania

0 głosów
1 odpowiedź 355 wizyt
0 głosów
2 odpowiedzi 663 wizyt
0 głosów
0 odpowiedzi 1,293 wizyt
pytanie zadane 24 marca 2018 w Bezpieczeństwo, hacking przez kptpiotr Początkujący (330 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...