Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - lynx

Pages: [1] 2
1
Tools / Valgrind - Breve introduzione
« on: March 15, 2017, 07:23:33 PM »
Ciao a tutti, in questo post daremo uno sguardo veloce a Valgrind per capire cosa è e a cosa serve. Nei prossimi articoli analizzeremo nel dettaglio i diversi tools e vedremo come utilizzarli al meglio.

Valgrind è uno strumento multiuso, un coltellino svizzero dei programmatori. Questo ci aiuta nei casi più disparati: dal profiling al debugging della memoria per Linux.Inizialmente era disponibile per x86, dalla versione 3 lo è anche per AMD64 ed altre architetture. Valgrind ci permette di eseguire il nostro programma nel suo ambiente che controlla l'utilizzo della memoria, come ad esempio le chiamate a malloc o free (o new e delete nel caso di C++). Se si scrive fuori la fine di un array, ci si dimentica di liberare un puntatore o altri errori o sviste di questo tipo, Valgrind è in grado di rilevarlo. Dal momento che questi sono problemi abbastanza comuni, vedremo come utilizzare Valgrind per trovare questi tipi di problemi di memoria, anche se Valgrind è uno strumento molto più potente e che può fare molto di più.

Il comando per lanciare Valgrind è:

Code: You are not allowed to view links. Register or Login
$ valgrind --tool=nome_tool program_pathnome_tool è il nome dello strumento da usare e program_path è il percorso del programma da lanciare con Valgrind.
I tools più conosciuti ed utilizzati sono:

  • Memcheck
  • Addrcheck
  • Massif
  • Cachegrind
  • Callgrind
  • Helgrind

Memcheck è un rilevatore di errori in memoria. Aiuta ai programmatori a scrivere programmi (specialmente in  C e C ++) consistenti e senza problemi in memoria.

Addrcheck è una versione semplificata ed alleggerita di Memcheck. È identico a MemCheck in tutto e per tutto, ad eccezione di un dettaglio importante: non fa controlli sugli Undefined values. Questo significa che Addrcheck è più veloce di Memcheck ed utilizza meno risorse (in termini di memoria e processore).

Massif  è un profiler dell'heap. Ci permette di analizzare lo stato dello heap e ci permette quindi di scrivere programmi che utilizzano meno memoria.

Cachegrind è un profile che si occupa principalmente della cache e della predizione delle diramazioni. Ci aiuta a creare programmi più veloci e performanti.

Callgrind invece è uno strumento di profiling mantiene uno storico delle chiamate tra le funzioni in esecuzione in un programma, una sorta di grafo delle chiamate.

Helgrind è un rivelatore di errori nei thread. Ci aiuta a fare i programmi multi-threaded più corretto.

Nel prossimo post vedremo come usare Memcheck e Addrcheck, nel frattempo vi saluto e vi invito segnalare eventuali errori.
Saluti, CrashTest

Fonte: You are not allowed to view links. Register or Login
The following users thanked this post: lynx

2
Web Application / [GUIDA]SQL-Injection – Scovare, defacciare e dumpare.
« on: February 27, 2017, 01:19:18 PM »
Quote
Le code-injection sono di fatto una tipologia di attacchi più utilizzati nella rete, e non solo… Sono anche uno dei più pericolosi.
Ora vedremo le Sql-Injection, ovvero, una tecnica usata per attaccare applicazioni di gestione dati (Database), iniettando del codice SQL nei vari campi d’input.
Ho scritto nel mio blog una Guida sulle Sql-Injection, per motivi di formattazione non posso copiare e incollare in quanto il bbcode è diverso, e siccome non sono un pazzo, non mi va di riscrivere da zero  ;D.

Vedrò di trovare una soluzione, per ora beccatevi questo:
You are not allowed to view links. Register or Login

The following users thanked this post: lynx

3
Java / Re:Da jar a exe senza rivelare i sorgenti
« on: February 25, 2017, 01:07:56 AM »
You are not allowed to view links. Register or Login
Quando vado in pizzeria, la pizza la mangio dopo che è stata nel forno, non prima. Non la giudico in base a come il pizzaiolo ha messo gli ingredienti sulla massa cruda, ma dal sapore che ha.


Se compariamo lo sviluppo di codice al cucinare una pizza (con tutto il rispetto per i pizzaioli) sicuramente arriviamo alle conclusioni sbagliate. Giudicare il codice dal suo funzionamento (penso che questa sia l'analogia col sapore della pizza  :'( ) piuttosto che da come è stato scritto, ci ritroviamo poi con problemi di scalabilità, sia al livello di funzionalità che al livello di sviluppi aggiuntivi da fare sullo stesso programma. Per di più, eventuali bug o funzioni maligne verrebbero nascoste agli utenti, che di conseguenza avrebbero ancora meno interesse ad usare il tuo programma.


Se vuoi un'analogia più azzeccata: tu utilizzeresti un'auto che si accende e cammina per fare un viaggio di 1000km, senza assicurarti che il motore sia a posto, le ruote gonfie, i freni a posto e le sospensioni integre? E senza nemmeno poter controllare, perché chi l'ha prodotta ha nascosto tutte queste parti sotto un cofano che il proprietario non può aprire (e magari ci ha anche nascosto un gps tracker dentro)?

Io, personalmente, se installo un programma o una libreria pretendo di vederne il codice sorgente (e lavoro su Mac OS). Tuttalpiù faccio eccezioni quando il programma è sviluppato da aziende come Apple o Google, perché almeno so chi va a prendere i miei dati o chi denunciare qualora avessi problemi.

per g: nella pagina linkata da CrashTest, sezione 4.2, viene spiegato come funziona la compilazione. In short, la risposta è si. Ecco il link di nuovo: You are not allowed to view links. Register or Login
The following users thanked this post: lynx

4
Java / Re:Da jar a exe senza rivelare i sorgenti
« on: February 19, 2017, 08:21:08 PM »
Sinceramente non so come aiutarti


La mia logica come quella di molti del forum è quella dell'Open Source

Forse 1 compliazione potrebbe,ma non ne sono certo
The following users thanked this post: lynx

5
Mi piace quello che hai fatto Dario, e infatti la stelletta te l'ho messa! Ci sono un po' di cose da migliorare però, ci sto dando un'occhiata sulla mia VM ubuntu ;)
The following users thanked this post: lynx

6
Tips from the Community - Consigli dalla Comunità / Re:LaTeX
« on: February 11, 2017, 03:23:46 AM »
ho risolto con questo plugin: You are not allowed to view links. Register or Login
dimmi se va bene, fai delle prove nella sandbox...
il bbcode tag è jstex
The following users thanked this post: lynx

7
Tutti gli appassionati del Penetration Testing, si sono spesso ritrovati ad allenarsi ed approfondire le proprie skills su delle comuni CTF (Capture The Flag), che solitamente si prestano all'attacking di una sola macchina. Oggi propongo un metodo più didattico e completo: PENTESTIT.
PENTESTIT è un laboratorio online, che ci permette (tramite la registrazione al sito) l'accesso ai lab tramite VPN.
Una volta controllato che siamo dentro possiamo cominciare a pentestare l'intera infrastruttura di rete, quindi al livello didattico è molto più produttivo, perché si effettua un vera e propria simulazione di pentest aziendale, tra l'altro molto realistica!!
Lo scopo è quello di recuperare i Token (o Flag), e di inserirli nella pagina del lab scelto, per poi veder avanzare la barra del progresso del Pentest.
Vengono dati anche degli "aiuti" in pdf, non chè viene fornito un "grafo" della rete.
Insomma è assolutamente da provare.

Link:You are not allowed to view links. Register or Login
Fonte:You are not allowed to view links. Register or Login
The following users thanked this post: lynx

8
da qualche parte nel pc ho un mezzo progetto iniziato per il cidr calculator scritto in bash, devo trovarlo, commentarlo per bene e lo posto, così ti levi sta rogna ;)
The following users thanked this post: lynx

9
Eccomi! Io prenderei i progetti comuni e Javascript, che è rimasto senza mod :)
The following users thanked this post: lynx

10
Concordo con Dario sul problema di verificare prima lo spazio di indirizzi su cui andare a fare il ping sweep.
Modificando leggermente il codice che ha postato proprio Dario dovrebbe essere semplice integrare questa funzionalità.


Per quanto riguarda la tua paura di mettersi a lavorare in concorrenza sulle stesse features, su github ci sono varie maniere per gestire la cosa. La mia preferita (e una delle più utilizzate nei grandi progetti open source) è questa:
 1. Chiunque identifichi una feature aggiuntiva o una falla, aggiunge una nuova issue (You are not allowed to view links. Register or Login).
 2. Se ne discute sul topic dedicato, quindi si sceglie una persona che ci lavora su, che diventa assignee della issue.
 3. L'assignee, e solo lui, forka l'intero repository e lavora sull'implementazione del bugfix/nuova feature. Tutte le comunicazioni riguardanti quel problema vengono fatte sul topic di quella issue su github.
 4. Quando ha finito, l'assignee fa una pull request sul repo principale, aggiungendo nel commento una reference alla issue originale.
 5. Se ci sono problemi nel merge automatico, o se si vogliono fare altre aggiunte, si ricomincia dalla 3. altrimenti si prosegue fa il merge della nuova feature/bugfix e si chiude la issue.


Ti apro una issue con il problema evidenziato da Dario, proviamo a seguire questo flow?
The following users thanked this post: lynx

11
You are not allowed to view links. Register or Login
Ma si.. a questo prezzo conviene :)
GnuLinux? Raspberry? Arduino? Varie ed eventuali?
Fate vobis.

ti ho messo in gnu-linux e prototipazione, quindi sia raspberry pi, arduino e stampante 3d. poi?

fatevi avanti ragazzi
The following users thanked this post: lynx

12
Giusto! Allora ora aggiungo l'auto detect dell'ip(v4), ne derivo la classe, divido in 4 blocchi, e in base ad essa faccio i range dell'ip
The following users thanked this post: lynx

13
Come da titolo, cercasi moderatori, indicate le sezioni di cui voler essere moderatore :)
E se siete moderatori, utilizzate password complesse please....
The following users thanked this post: lynx

14
0.1a / Re:feedback, betatesters, qualcuno l'ha provata?
« on: February 03, 2017, 07:40:58 AM »
Devo ancora installarlo, ma posso solo provarla sul raspi B2! I B3 che ho non sono proprio miei...  ::)
Intanto propongo un'idea per la prossima versione, che potrebbe essere utile a scopi didattici.


Si potrebbe mettere a disposizione della gente che segue i vari corsi la possibilità di connettersi da remoto ai raspberry del lab tramite una web shell, in maniera tale che possano testare roba e/o fare esercizi in maniera super semplice (e sicura).


Non chiedetemi perché, ma ho già lavorato su un sistema che funziona più o meno così:


- All'utente viene dato username-password del raspi per fare login sulla shell.
- L'utente si registra su un portale/piattaforma web.
- I raspi hanno un servizio che comunica con il portale/piattaforma web attraverso internet (ovviamente).
- I raspi non hanno ip pubblico.
- L'utente si logga sulla piattaforma, e viene autorizzato a connettersi da remoto al raspi.
- L'utente va su una pagina web dalla quale verrà esposta una shell del raspi.
- Il raspi indicato riceve dal portale web una notifica della richiesta di connessione. Allegati alla richiesta ci sono una chiave privata RSA valida temporaneamente, e la porta su cui il portale esporrà la shell, scelta a random.
- Il raspi fa partire il server che espone la web shell.
- Il raspi apre un reverse SSH tunnel verso il portale web, dalla porta dove lui serve la web shell alla porta dove verrà servita dal portale web.
- Il raspi notifica il server che il tunnel SSH è stato aperto.
- L'utente viene reindirizzato verso la pagina dove ora viene servita la web shell del raspi.


Alla chiusura:
- Il portale web notifica il raspi che deve chiudere il tunnel SSH, ed elimina la chiave privata RSA usata per la connessione.
- Il raspi spegne il server che espone la web shell e chiude il tunnel SSH.
- Il raspi notifica il server che il tunnel è stato chiuso.


Ho trovato su github un bel progetto per una web shell, che viene già distribuito nei repository di alcune distro, per quanto sia più stabile e funzionale se buildato dal source.
Eccolo: You are not allowed to view links. Register or Login


Con una architettura di questo genere si evita di creare VPN, spesso instabili a causa di firewall o altri problemi nella rete, e si ha pieno controllo delle autorizzazioni degli utenti nell'accedere da remoto ai raspberry.


Che ne dite?
The following users thanked this post: lynx

15
Java / Re:Semplice Applet, copiata identica da due manuali, non funziona
« on: February 03, 2017, 06:21:13 AM »
Mai lavorato con applet java su browser purtroppo (o per fortuna!). Considera che è una tecnologia che sta sparendo, non la trovi più praticamente da nessuna parte.
Il mio consiglio è, almeno che non ti venga richiesto esplicitamente o per ragioni didattiche, passa a una soluzione Java server-side/Javascript client side!
The following users thanked this post: lynx

Pages: [1] 2