Jump to content

em

Active Members
  • Posts

    1909
  • Joined

  • Last visited

  • Days Won

    26

Posts posted by em

  1. Pana la urma ce vrei sa obtii? Sa te angajezi in IT? Sa faci o facultate? Care e interesul tau de fapt? Se angajeaza programatori si fara facultate (mai ales pe QA). Mai mult de atat, acum nu mai conteaza ce facultate ai ca sa fii scutit de impozit.

  2. Fuzzing or fuzz testing is an automated software testing technique that involves providing invalid, unexpected, or random data as inputs to a computer program. The program is then monitored for exceptions such as crashes, or failing built-in code assertions or for finding potential memory leaks.

     

     - In timpul acestui tutorial mi-am dat seama ca mai am nevoie de pachetele po4a, libtool, texi2html.

    sudo apt install po4a libtool texi2html

     

    Folosesc American Fuzzy Lop (afl). - http://lcamtuf.coredump.cx/afl/'

    $ wget http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz
    $ tar xf afl-latest.tgz
    $ cd afl-2.39b/
    $ make
    $ sudo make install
    

    Ca să vedeți dacă s-a intalat cu succes puteți verifica tastând afl-gcc

    $ afl-gcc
    afl-cc 2.39b by <lcamtuf@google.com>
    This is a helper application for afl-fuzz. It serves as a drop-in replacement
    for gcc or clang, letting you recompile third-party code with the required
    runtime instrumentation. A common use pattern would be one of the following:
      CC=/usr/local/bin/afl-gcc ./configure
      CXX=/usr/local/bin/afl-g++ ./configure
    You can specify custom next-stage toolchain via AFL_CC, AFL_CXX, and AFL_AS.
    Setting AFL_HARDEN enables hardening optimizations in the compiled code.

     

    În principiu acest program se așteaptă ca ținta testată să citească fișiere. Să zicem că vrem să testăm utilitarul "wc" (utilitar care numără linii în linux).

     

    man wc
    .. derulăm până jos cu SHIFT-G ..
    [..]
    GNU coreutils 8.25

     

    Bun am aflat că wc face parte din pachetul coreutils. Hai să luam sursa de coreutils și să o compilăm
    Din moment ce folosesc ubuntu server o caut direct pe repo-urile canonical. O găsesc aici

    $ wget http://archive.ubuntu.com/ubuntu/pool/main/c/coreutils/coreutils_8.25.orig.tar.xz 
    $ tar xf coreutils_8.25.orig.tar.xz
    $ cd coreutils-8.25/
    $ CC=afl-gcc ./configure
    $ make


     

    Bun. Acum am compilat utilitarul pe care vrem sa il testam cu afl-gcc. Hai să verificăm dacă chiar au fost adăugate simbolurile fuzzerului.

    $ cd src/
    $ strings ./wc | grep -i afl
    [..]
    __afl_fork_pid
    .AFL_VARS
    __afl_global_area_ptr

     

    Totul e în regulă deci.

    Hai să verificăm că programul nostru chiar merge.

    $ ./wc /etc/passwd
      33   48 1740 /etc/passwd

     

    Fuzzerul are nevoie de două foldere. Unul pentru input altrul pentru output.

    $ mkdir in/
    $ mkdir out/
    $ echo "test" > in/input
    $ echo "test2" >> in/input
    # testam
    $ ./wc in/input
     2  2 11 in/input

     

    Acum hai să pornim o rulare.

    $ afl-fuzz -i in/ -o out/ ./wc @@
                             american fuzzy lop 2.39b (wc)
    lq process timing qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqwq overall results qqqqqk
    x        run time : 0 days, 0 hrs, 0 min, 5 sec        x  cycles done : 0      x
    x   last new path : 0 days, 0 hrs, 0 min, 2 sec        x  total paths : 58     x
    x last uniq crash : none seen yet                      x uniq crashes : 0      x
    x  last uniq hang : none seen yet                      x   uniq hangs : 0      x
    tq cycle progress qqqqqqqqqqqqqqqqqqqqwq map coverage qvqqqqqqqqqqqqqqqqqqqqqqqu
    x  now processing : 0 (0.00%)         x    map density : 0.23% / 0.25%         x
    x paths timed out : 0 (0.00%)         x count coverage : 1.92 bits/tuple       x
    tq stage progress qqqqqqqqqqqqqqqqqqqqnq findings in depth qqqqqqqqqqqqqqqqqqqqu
    x  now trying : havoc                 x favored paths : 1 (1.72%)              x
    x stage execs : 21.6k/32.8k (65.87%)  x  new edges on : 8 (13.79%)             x
    x total execs : 23.7k                 x total crashes : 0 (0 unique)           x
    x  exec speed : 3591/sec              x   total hangs : 0 (0 unique)           x
    tq fuzzing strategy yields qqqqqqqqqqqvqqqqqqqqqqqqqqqwq path geometry qqqqqqqqu
    x   bit flips : 8/88, 1/87, 1/85                      x    levels : 2          x
    x  byte flips : 0/11, 1/10, 4/8                       x   pending : 58         x
    x arithmetics : 1/616, 0/75, 0/0                      x  pend fav : 1          x
    x  known ints : 0/62, 3/280, 3/352                    x own finds : 57         x
    x  dictionary : 0/0, 0/0, 0/0                         x  imported : n/a        x
    x       havoc : 0/0, 0/0                              x stability : 100.00%    x
    x        trim : 0.00%/2, 0.00%                        tqqqqqqqqqqqqqqqqqqqqqqqqj
    ^Cqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj          [cpu000: 44%]

     

    O să găsiți inputurile care crapă programul în ./out/crashes și cele care îl blochează în ./out/hangs.

    Have fun :)


     

    • Upvote 8
  3. Update: Se pare că omul de fapt nu a semnat nimic. A făcut un replay attack. https://www.reddit.com/r/Bitcoin/comments/4hflr3/craig_wrights_signature_is_worthless/

     

    Australian entrepreneur Craig Wright has publicly identified himself as Bitcoin creator Satoshi Nakamoto.
    His admission follows years of speculation about who came up with the original ideas underlying the digital cash system.
    Mr Wright has provided technical proof to back up his claim using coins known to be owned by Bitcoin's creator.
    Prominent members of the Bitcoin community and its core development team say they have confirmed his claims.
    But many others in the Bitcoin world are asking for more proof.


    Signed blocks
    Mr Wright has revealed his identity to three media organisations - the BBC, the Economist and GQ.
    At the meeting with the BBC, Mr Wright digitally signed messages using cryptographic keys created during the early days of Bitcoin's development. The keys are inextricably linked to blocks of bitcoins known to have been created or "mined" by Satoshi Nakamoto.

     

    Sursa: http://www.bbc.com/news/technology-36168863

    • Upvote 1
  4. Sunt utilizator de Windows. Într-o noapte îmi năzărește ideea de a băga un stand-up comedy înainte să mă culc. Ajung la laptop și îmi atrag atenția ledurile deschise. Ledul de Power, și ledul de WiFi. Mă scarpin în cap, îmi zic că poate am uitat să îl închid complet înainte să mă culc și îmi văd de treabă.

     

    O săptămână mai în colo, vin de la muncă găsesc laptopul în aceeași stare. Eram 100% sigur că l-am închis de dimineață. Ledul de power și cel de WiFi. Mă gândesc ce căcat. Dezactivez fast startup, hybrid sleep, orice altă măgărie care ar încerca mie să îmi deschidă device-ul cât timp nu sunt lângă el.

     

    Partea amuzantă e că a 3-a oară când mi s-a întâmplat aveam un linux server rulând înainte de shutdown. Am pus urechea pe la venturi, procesorul mergea. Becul de WiFi și de power deschis. Scot cablul, rămâne doar cel de WiFi. Mă conectez cu telefonul la router, să văd ce și cum. Ultimul lease de DHCP fusese dat cu 50 de minute în urmă (laptopul era lăsat singur de 8 ore!). Trafic 12kB down, 5MB up!!  Îl deschis și intru pe Windows.

     

    Deschid "Event Viewer" - tabul system - ca să văd ce și cum. Observ că în urmă cu 2 ore laptopul meu fusese deschis. Nu era trecut motivul (power button/lid). Nu era trecut nimic. Încerc să fac disable la chestii random de prin device manager. Rămân doar cu mouse-ul și WiFi-ul, problema se tot reproduce.

     

    Apoi observ că câteodată înainte să opresc laptopul se pornește "Intel Management Engine Interface". Caut pe net.

     

    Intel Management Engine Interface or IMEI is one of the main components of the vPRO Remote Access technology by Intel. VPRO is an umbrella term that refers to a collection of several computer hardware technologies that help in managing the PCs. These technologies provide security features and enable remote accessing to the PC including the management, monitoring and maintenance irrespective of the operating system state and PC power state as well. IMEI manages the processor’s input/output operations.

     

    Hai să vă luminez puțin și cu vPRO

    A vPro PC includes: Multi-core, multi-threaded Xeon or Core processors. Intel Active Management Technology (Intel AMT), a set of hardware-based features targeted at businesses. / allow remote access to the PC for management and security tasks, when an OS is down or PC power is off.

     

    Deci cât PC-ul meu era oprit un 3rd party (poate Intel, poate fosta persoana care avea laptopul sau mai știu eu cine) ar fi putut face ceva pe laptopul meu. Am observat că de pe Windows dacă dezactivez Intel Management Engine Interface din Device Manager -> System devices nu se mai reproduce. Pe linux nu am reușit nimic, că am decis să vând laptopul.

     

    Vă rog să citiți articolul de https://libreboot.org/faq/#intelme și spuneți dacă vă mai luați laptop cu vPRO vreodată. Vreți ca un RTOS pe nume ThreadX pe care nu îl controlați să pornească când nu sunteți de față? Treaba voastră.

     

    În concluzie am vândut acel laptop. Nu accept ca un OS pe care nu îl controlez să ruleze cât nu sunt de față. De acum în colo laptopuri fără vPro.

     

    // end of rant

    • Upvote 10
  5. Eu cred c? voi chiar nu sunte?i normali la cap.

    Suntem în ?ara în care unu de 17 ani a fost arestat pentru propagand? islamist? pentru c? avea un cont de facebook cu caractere dubioase.

    ?ara în care un ungur e ?inut în arest pentru tentativ? de a r?sturna ordinea constitu?ional? doar pentru c? la o pizzerie cu prietenii a zis "le-a? planta o pizza s?n?toas? românilor de 1 decembrie".

    ?I VOI VORBI?I C?CATURI DIN ASTEA PE UN FORUM PUBLIC?

    CLOSED.

  6. Am f?cut un program în C++


    #include <iostream>
    #include <vector>
    #include <cstring>
    #include <cmath>
    using namespace std;

    int sirRecursiv(int n);
    vector<string> numere = {"zero", "unu", "doi", "trei", "patru", "cinci", "sase"};

    int main() {
    for(int i = 0; i < 8; i++)
    cout<<sirRecursiv(i)<<" ";
    return 0;
    }

    int sirRecursiv(int n) {
    if (n == 0)
    return 0;
    if (n == 1)
    return 2;
    else return numere[abs(sirRecursiv(n-1))].length() - numere[abs(sirRecursiv(n-2))].length();
    }

    Practic, faci diferenta lungimii numerelor precedente (cate litere au ele in limba romana)


    vilie@em-vm:~/repos$ ./a
    0 2 -1 0 1 -1 0 1

    Aveai o mic? gre?eal? în ?ir ?i de data asta.

×
×
  • Create New...