Archives For Network GxWare

2009 e 2011, questi gli anni in cui ti ho parlato del Random Password Generator, un piccolo strumento web che permette di ottenere una password alfanumerica da 9 caratteri (senza segni di punteggiatura) e che in questi anni ha continuato a svolgere il suo lavoro per chiunque ne avesse la necessità, lì in attesa al solito posto, con quel pelo di manutenzione e nulla più. Ora però è arrivato il momento di dare una svecchiata a lui e al fratello minore “Random PIN Generator“, nato in seguito per differente esigenza.

Firefox Monitor ti avvisa in caso di furto credenziali

Un template più pulito e chiaro, lo stretto indispensabile per ciò che riguarda le informazioni, la funzione principale in bella vista. Il campo Password o PIN è seguito (subito sotto) da due pulsanti che ti permettono rispettivamente di copiare il codice negli appunti o generarne uno nuovo, così da renderti la vita decisamente più semplice.

L’ultimo restyling è di dicembre dello scorso anno, lo annuncio oggi (non che se ne sentisse il bisogno) così che tu possa approfittarne per darci un’occhiata e salvare nei tuoi preferiti i due indirizzi rapidi che possono tornarti utili: go.gioxx.org/password e go.gioxx.org/pin :-)

Buon fine settimana!

Condividi l'articolo con i tuoi contatti:

Durante la stesura dell’articolo dedicato a Iliad (pubblicato ormai circa un mese fa), ho avuto la necessità di controllare da dove passasse il mio traffico dati per poter confermare quanto scritto in giro (ovvero che nel primo periodo di vita di Iliad si passasse tutti dai suoi IP francesi anziché da quelli italiani). Ci sono tanti siti web che offrono la possibilità di controllare questi dati catturandoli direttamente da browser, ma tra pubblicità, controlli di sicurezza e altre menate varie diventa davvero seccante navigarli, è per questo motivo che ho creato “My Information“, una semplice pagina riepilogativa che potesse mostrarti le informazioni che cerchi e nulla più.

Iliad è arrivata in Italia, non senza problemi 17

My Information

No, non è ottimizzato al 100% per i dispositivi mobili (anche se si mostra correttamente ai tuoi occhi) e no, non è perfetto neanche nello stile presentato (perché si potrebbe fare molto di meglio), probabilmente ha anche un nome banale e poco attraente, eppure è esattamente ciò di cui forse necessiti anche tu. Il tuo browser trasmette dei dati a ogni sito web che visiti, per questo motivo ho potuto approfittare di qualche funzione PHP nativa e delle API messe a disposizione dal sito IPStack.com per elaborare quanto catturato, in diretta, senza salvare alcunché sul server (in pratica i tuoi dati li vedi solo tu), così siamo tutti più contenti e la Privacy ringrazia.

My Information è disponibile per tutti all’indirizzo public.gfsolone.com/tools/ip, e puoi raggiungerlo anche tramite l’alias go.gioxx.org/ip. Va ad aggiungersi agli altri tool pubblici che ho messo a disposizione tramite il mio sito web personale (li trovi tutti raccolti sul Wiki).

Un’occhiata dietro le quinte

È tutto molto semplice. Di suo PHP permette già di catturare alcune informazioni provenienti dal tuo browser, per questo motivo è necessario esclusivamente fargliele scrivere in pagina per potertele mostrare, questo vale certamente per il tuo IP ($_SERVER['REMOTE_ADDR']) o lo User-Agent del browser che stai utilizzando nel momento in cui visiti My Information ($_SERVER['HTTP_USER_AGENT']). Il resto, seppur in qualche maniera anch’esso recuperabile (non tutto), ho deciso di darlo in pasto a IPStack; questo mi restituisce una serie di dettagli interessanti che posso ulteriormente lavorare (o mostrare direttamente) per arricchire ancor più quanto messo a tua disposizione, come per esempio una mappa (libera, di OpenStreeMap, ma richiamata tramite Leaflet), l’hostname assegnato al tuo IP (se pubblico), il CAP, latitudine e longitudine rilevate, ecc.

Ti lascio dare un’occhiata al codice (semplicissimo) che racchiude buona parte delle informazioni mostrate poi a video:

Il puntatore su mappa è assolutamente migliorabile, non sempre latitudine e longitudine producono il risultato sperato, potrei certamente impostarlo sul CAP rilevato, ma si tratta di finezze che in fin dei conti poco servono probabilmente a te che hai bisogno di catturare un altro tipo di dati.

Il tool è online ormai dallo scorso giugno, ed è stato già visitato un buon numero di volte (strano, non l’ho neanche sponsorizzato), non ti resta che metterlo alla prova (nei limiti del concesso, sfrutto le API gratuite di IPStack che offrono un massimo di 10.000 richieste / mese, dovrebbero bastare, giusto? :-)).

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

Era il 2 febbraio del 2009 quando per la prima volta è comparso un articolo riguardante un servizio tanto “stupido” quanto utile allo stesso tempo.

A due anni di distanza dalla sua prima versione (più che stabile, visto il lavoro che doveva svolgere), oggi vi presento una seconda versione che va incontro ad alcune richieste ricevute nel frattempo (grazie Marco, grazie Paolo, ndr): 9 caratteri, un ciclo in grado di mischiare meglio le lettere e i numeri disponibili, la possibilità di copiare e incollare la password priva di spazio finale (un piccolo bug che c’era nella precedente versione, almeno via Firefox e Chrome).

L’indirizzo è rimasto lo stesso:

services.gxware.org/passwd

nonostante lo script che sta alla base della pagina sia cambiato diventando decisamente più ristretto (script originale: TotallyPHP):

<?php
 function createRandomPassword($len) {
 if (!isset($len)) { $len = 9; };
 $chars = &amp;amp;amp;amp;quot;abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ&amp;amp;amp;amp;quot;;
 $charsLen = (strlen($chars)-1);
 srand((double)microtime()*1000000);
 $i = 0;
 $pass = '' ;
 while ( $i &amp;amp;amp;amp;lt; $len ) {
 $num = rand() % $charsLen;
 $tmp = substr($chars, $num, 1);
 $pass = $pass . $tmp;
 $i++;
 }
 return $pass;
}
$password = createRandomPassword();
echo $password; ?>

La seconda delle 3 novità consiste nel fatto che –se necessariopotrete scaricare una differente versione del tool anche in locale, uno script in Visual Basic che vi permetterà –una volta avviato– di scegliere il numero di password da generare e salvarle in un file di testo, una per ciascuna riga così da poter rapidamente copiare ed incollare ciò che vi serve. Il codice è stato realizzato e pubblicato su Tek-Tips.com, ed è disponibile all’indirizzo:

public.gfsolone.com/tools/passwd/randomPasswd.vbs

Per scaricarlo cliccate con il tasto destro sul collegamento e salvatelo in locale sul vostro PC (Salve destinazione come …)

'==========================================================================
'
' NAME: RandomPasswordGenerator.vbs
'
' AUTHOR: Mark D. MacLachlan , The Spider's Parlor
' URL: http://www.thespidersparlor.com
' DATE  : 7/29/2004
' MODIFICATIONS:
'         9/2/2008 Added dictionary object to ensure
'                  uniqueness of passwords
'
' COMMENT: Generates Random Passwords meeting &amp;amp;amp;amp;quot;Complex&amp;amp;amp;amp;quot; Requirements
'          By default will generate a 6 digit password.
'          Edit line passLen = 6 to change length
'==========================================================================
Option Explicit

Dim pGenNum, newpass, passList, inFlag, pgLength, x, fso, ts, passLen
Const ForWriting = 2
passLen = 9

'Give inFlag (input Flag) an initial value to ensure we run once
inFlag = &amp;amp;amp;amp;quot;Seed&amp;amp;amp;amp;quot;

Do While inFlag &amp;amp;amp;amp;lt;&amp;amp;amp;amp;gt; pGenNum
pGenNum = InputBox(&amp;amp;amp;amp;quot;How many passwords would you like to create?&amp;amp;amp;amp;quot; &amp;amp;amp;amp;amp; vbCrLf &amp;amp;amp;amp;amp; _
&amp;amp;amp;amp;quot;Enter a Numeric Value&amp;amp;amp;amp;quot; &amp;amp;amp;amp;amp; vbCrLf &amp;amp;amp;amp;amp; _
&amp;amp;amp;amp;quot;Blank Entry Will Cancel Script&amp;amp;amp;amp;quot;,&amp;amp;amp;amp;quot;Enter Number of Passwords to Create&amp;amp;amp;amp;quot;)

'Quit if no entry
If pGenNum = &amp;amp;amp;amp;quot;&amp;amp;amp;amp;quot; Then WScript.Quit

'Now clear inFlag so we can compare it to the pGenInput going forward
inFlag = &amp;amp;amp;amp;quot;&amp;amp;amp;amp;quot;
pgLength = Len(pGenNum)
'Enumerate each character to ensure we only have numbers
For x = 1 To pgLength
If Asc(Mid(pGenNum,x,1)) &amp;amp;amp;amp;lt; 48 Or Asc(Mid(pGenNum,x,1)) &amp;amp;amp;amp;gt; 57 Then
inFlag = &amp;amp;amp;amp;quot;&amp;amp;amp;amp;quot;
Else
'Build inFlag one character at a time if it is a number.
inFlag = inFlag &amp;amp;amp;amp;amp; Mid(pGenNum,x,1)
End If
Next
'We made it through each character.  If not equal prompt for a number.
If inFlag &amp;amp;amp;amp;lt;&amp;amp;amp;amp;gt; pGenNum Then inFlag = &amp;amp;amp;amp;quot;&amp;amp;amp;amp;quot;
Loop

'Generate the number of required passwords.
'Use a dictionary object to ensure uniqueness.
Dim objDict
Set objDict = CreateObject(&amp;amp;amp;amp;quot;Scripting.Dictionary&amp;amp;amp;amp;quot;)
Do Until objDict.Count = CInt(pGenNum)
newpass = generatePassword(passLen)
If Not objDict.Exists(newpass) Then
objDict.Add newpass, &amp;amp;amp;amp;quot;Unique Password&amp;amp;amp;amp;quot;
passList = passList &amp;amp;amp;amp;amp; newpass &amp;amp;amp;amp;amp; vbCrLf
End If
Loop

'Now save it all to a text file.
Set fso = CreateObject(&amp;amp;amp;amp;quot;Scripting.FileSystemObject&amp;amp;amp;amp;quot;)
Set ts = fso.CreateTextFile (&amp;amp;amp;amp;quot;PasswordList.txt&amp;amp;amp;amp;quot;, ForWriting)
ts.write passList
MsgBox &amp;amp;amp;amp;quot;Passwords saved to PasswordList.txt&amp;amp;amp;amp;quot;,,&amp;amp;amp;amp;quot;Passwords Generated&amp;amp;amp;amp;quot;
set ts = nothing
set fso = nothing

Function generatePassword(PASSWORD_LENGTH)

Dim NUMLOWER, NUMUPPER, LOWERBOUND, UPPERBOUND, LOWERBOUND1, UPPERBOUND1, SYMLOWER, SYMUPPER
Dim newPassword, count, pwd
Dim pCheckComplex, pCheckComplexUp, pCheckComplexLow, pCheckComplexNum, pCheckComplexSym, pCheckAnswer

NUMLOWER    = 48  ' 48 = 0
NUMUPPER    = 57  ' 57 = 9
LOWERBOUND  = 65  ' 65 = A
UPPERBOUND  = 90  ' 90 = Z
LOWERBOUND1 = 97  ' 97 = a
UPPERBOUND1 = 122 ' 122 = z
SYMLOWER    = 33  ' 33 = !
SYMUPPER    = 46  ' 46 = .
pCheckComplexUp  = 0 ' used later to check number of character types in password
pCheckComplexLow = 0 ' used later to check number of character types in password
pCheckComplexNum = 0 ' used later to check number of character types in password
pCheckComplexSym = 0 ' used later to check number of character types in password

' initialize the random number generator
Randomize()

newPassword = &amp;amp;amp;amp;quot;&amp;amp;amp;amp;quot;
count = 0
DO UNTIL count = PASSWORD_LENGTH
' generate a num between 2 and 10

' if num &amp;amp;amp;amp;lt;= 2 create a symbol
If Int( ( 10 - 2 + 1 ) * Rnd + 2 ) &amp;amp;amp;amp;lt;= 2 Then
pwd = Int( ( SYMUPPER - SYMLOWER + 1 ) * Rnd + SYMLOWER )

' if num is between 3 and 5 create a lowercase
Elseif Int( ( 10 - 2 + 1 ) * Rnd + 2 ) &amp;amp;amp;amp;gt; 2 And  Int( ( 10 - 2 + 1 ) * Rnd + 2 ) &amp;amp;amp;amp;lt;= 5 Then
pwd = Int( ( UPPERBOUND1 - LOWERBOUND1 + 1 ) * Rnd + LOWERBOUND1 )

' if num is 6 or 7 generate an uppercase
Elseif Int( ( 10 - 2 + 1 ) * Rnd + 2 ) &amp;amp;amp;amp;gt; 5 And  Int( ( 10 - 2 + 1 ) * Rnd + 2 ) &amp;amp;amp;amp;lt;= 7 Then
pwd = Int( ( UPPERBOUND - LOWERBOUND + 1 ) * Rnd + LOWERBOUND )

Else
pwd = Int( ( NUMUPPER - NUMLOWER + 1 ) * Rnd + NUMLOWER )
End If

newPassword = newPassword + Chr( pwd )

count = count + 1

'Check to make sure that a proper mix of characters has been created.  If not discard the password.
If count = (PASSWORD_LENGTH) Then
For pCheckComplex = 1 To PASSWORD_LENGTH
'Check for uppercase
If Asc(Mid(newPassword,pCheckComplex,1)) &amp;amp;amp;amp;gt;64 And Asc(Mid(newPassword,pCheckComplex,1))&amp;amp;amp;amp;lt; 90 Then
pCheckComplexUp = 1
'Check for lowercase
ElseIf Asc(Mid(newPassword,pCheckComplex,1)) &amp;amp;amp;amp;gt;96 And Asc(Mid(newPassword,pCheckComplex,1))&amp;amp;amp;amp;lt; 123 Then
pCheckComplexLow = 1
'Check for numbers
ElseIf Asc(Mid(newPassword,pCheckComplex,1)) &amp;amp;amp;amp;gt;47 And Asc(Mid(newPassword,pCheckComplex,1))&amp;amp;amp;amp;lt; 58 Then
pCheckComplexNum = 1
'Check for symbols
ElseIf Asc(Mid(newPassword,pCheckComplex,1)) &amp;amp;amp;amp;gt;32 And Asc(Mid(newPassword,pCheckComplex,1))&amp;amp;amp;amp;lt; 47 Then
pCheckComplexSym = 1
End If
Next

'Add up the number of character sets.  We require 3 or 4 for a complex password.
pCheckAnswer = pCheckComplexUp+pCheckComplexLow+pCheckComplexNum+pCheckComplexSym

If pCheckAnswer &amp;amp;amp;amp;lt; 3 Then
newPassword = &amp;amp;amp;amp;quot;&amp;amp;amp;amp;quot;
count = 0
End If
End If
Loop
'The password is good so return it
generatePassword = newPassword
End Function

Ultima novità è l’integrazione del Random Password Generator all’interno degli strumenti “mobili” del Network GxWare, da poco trasferiti sotto il nuovo dominio network.gxware.org/iphone:

network.gxware.org/iphone/passwd.php

Questo vi permetterà di generare rapidamente password sufficientemente complesse avendo a portata di mano solo il vostro telefono ed una connessione a internet.

Per chi volesse invece continuare ad usare la prima versione, ho lasciato la possibilità di accedere alla precedente pagina iniziale semplicemente puntando il browser a services.gxware.org/passwd/v1.php.

Buon lavoro! :-)

UPDATE
Grazie al suggerimento dell’utente “caccolangrifata lo script è stato modificato includendo l’utilizzo di lettere maiuscole (oltre che minuscole, come di default) e la possibilità di specificare una differente quota caratteri della password. La modifica è stata operata sia sulla pagina del servizio standard che quella mobile! :-)
Condividi l'articolo con i tuoi contatti: