Re: query complicata con espressioni regolari

2015-02-14 Per discussione MaX
Il 14/02/15, Gian Uberto Laurisa...@eng.it ha scritto:


 Un ultima cosa. Lo script per cambiare le password, così come è, va bene se
 è solo se
 è uno shell script via invocato via riga di comando da te. Se lo dai anche
 in mano
 anche a me io per lo meno ti cancello tutte le password :) :) :) (no, certi
 atti vandalici
 gratuiti non hanno senso, per me non vale la pena perderci tempo). Dicono
 che ci
 siano cose chiamate sql injections :) :) :). E non avete idea di cosa può
 fare il più
 incapace degli script kid col comando sqlmap.


non c' è pericolo per questo... è una funzione di un robot per la
richiesta di passwd nueve.
Tu mandi una email vuota con un indirizzo email, e lui ti rispedisce
una passwd allo stesso indirizzo.
Il testo contenuto non viene neppure preso in considerazione, per cui
anche a mettere un codice malizioso nell' email, non succede nulla
inoltre l'email puó essere inviata solo da una form html specifica con
una lunghezza di numero di caratteri limitata e un set di caratteri di
base.
Per finire l' indirizzo email viene validato prima di essere usato, in
modo da non impallare il mailer

Non dico che sia a prova di bomba, ma la vedo dura entrare da li.

cmq grazie per interessarti.


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/caeyavmsmxw9seymeezwqfeo+6exvnq4hvzav81rnqeudgo+...@mail.gmail.com



Re: query complicata con espressioni regolari

2015-02-14 Per discussione Lorenzo Breda
Il giorno sab 14 feb 2015 12:14 MaX maxlinux2...@gmail.com ha scritto:



inoltre l'email puó essere inviata solo da una form html specifica con
una lunghezza di numero di caratteri limitata e un set di caratteri di
base.



 Questa, senza il resto di ciò che hai scritto, non sarebbe una buona
misura di sicurezza: è banale mandare in get o post dei dati all'action del
form senza alcuna di queste limitazioni.

-- 
Lorenzo Breda


Re: query complicata con espressioni regolari

2015-02-14 Per discussione MaX
chiaro... da sola non serve a nulla, ma l' ho aggiunta per evitare che
inviassero al mailer indirizzi email da 65000 caratteri e mandarlo in
crash o cose del genere, inoltre i caratteri ammessi sono [a-z0-9.-_@]

Il 14/02/15, Lorenzo Bredalore...@lbreda.com ha scritto:
 Il giorno sab 14 feb 2015 12:14 MaX maxlinux2...@gmail.com ha scritto:



 inoltre l'email puó essere inviata solo da una form html specifica con
 una lunghezza di numero di caratteri limitata e un set di caratteri di
 base.



  Questa, senza il resto di ciò che hai scritto, non sarebbe una buona
 misura di sicurezza: è banale mandare in get o post dei dati all'action del
 form senza alcuna di queste limitazioni.

 --
 Lorenzo Breda



-- 
ciao,
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/caeyavmut3m+qzozc6hm0pgo+vz9phw7_puzxqgswu+rxfh-...@mail.gmail.com



Re: query complicata con espressioni regolari

2015-02-13 Per discussione MaX
opss  rileggento ho visto un errore:

while [ $post_id = 0 ]; do  --  while [ $max_post_id = 0 ]; do

Il 13/02/15, MaXmaxlinux2...@gmail.com ha scritto:
 pensavo di fare una cosa del genere, ma si tratta di 400.000 post, e
 non si se è abbastanza veloce

 --
 source config.conf

 post_id=$(mysql --database=$MYDB --user=$USER --password=$PASSWD
 -e SELECT MAX(post_id) AS post_id FROM phpbb_posts;)

 max_post_id=$(echo $post_id | sed 's|^post_id ||')
 #echo max_post_id=$max_post_id # numero da usare per il ciclo for o while

 while [ $post_id = 0 ]; do

 post_username=$(mysql --database=$MYDB --user=$USER
 --password=$PASSWD -e SELECT post_username FROM phpbb_posts WHERE
 post_id= $post_id;)
 post_username=$(echo $post_username | sed 's|^post_username ||')
 #echo post_username=$post_username

 post_text=$(mysql --database=$MYDB --user=$USER
 --password=$PASSWD -e SELECT post_text FROM phpbb_posts WHERE
 post_id= $post_id;)
 post_text=$(echo $post_text | sed 's|^post_text ||')

 new_post_text=$(echo $post_text | sed
 s|\[quote:3pjjad9s\]$post_username#44;\([0-9/]*\)#44;
 \([0-9:]*\)\]br||I)
 #echo $new_post_text
 mysql --database=$MYDB --user=$USER --password=$PASSWD -e
 UPDATE phpbb_posts SET post_text = \$new_post_text\ WHERE post_id =
 \$post_id\

 let post_id=post_id-1
 done
 

 ...che ne dite?
 MaX

 Il 13/02/15, MaXmaxlinux2...@gmail.com ha scritto:
 ciao a tutti

 avrei un problema con le espessioni regolari dentro ad una query mysql
 inglobata a sua volta in uno script  :)

 chpass() {
 mysql --database=$MYDB --user=$USER --password=$PASSWD -e
 UPDATE phpbb_users
 SET user_password = \$HPPASS\ WHERE username = \$PHPBB_USER\
 }

 questo sopra è un esempio che uso per modificare via script la passwd
 di un utente in phpbb.

 Ora peró vorrei cancellare una parte di testo dal campo 
 phpbb_posts/post_text ma solo se dentro a questo testo appare:
 [quote]nome utente,20/7/2012, 19:54] e il nome utente coicide con il
 relativo campo  phpbb_posts/post_username

 Praticamente c' è da cancellare la linea [quote]Alfredo,20/7/2012,
 19:54] solo se nel campo  post_username il nome coincide con
 Alfredo.

 A complicare le cose... la data di fianco è variabile, e il
 [quote]Alfredo,20/7/2012, 19:54]
 è sempre nella seconda linea

 Come se non bastasse, se nel messsaggio compare un
 [quote]Alfredo,20/7/2012, 19:54], ma nel post_username il nome è
 differente da Alfredo, allora bisogna lasciarlo.

 ..e naturalmente il resto del messaggio deve rimanere inalterato.

 qualche idea?

 io stavo pensando di estrarre il post_id,post_text,post_text con una
 query, fare le comparazioni con gli strumenti della shell linux,
 togliere eventualemente il testo e poi reimmettere il testo modificato
 usando come riferimento il post_id

 o ci sono soluzioni migliori... e più rapide... interne a mysql?

 ciao
 MaX



 --
 ciao,
 MaX



-- 
ciao,
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAEyAVmsZGJSjTFtVHy10s9FrMS_Kp+v=st7jgyd3o2k9gat...@mail.gmail.com



Re: query complicata con espressioni regolari

2015-02-13 Per discussione MaX
pensavo di fare una cosa del genere, ma si tratta di 400.000 post, e
non si se è abbastanza veloce

--
source config.conf

post_id=$(mysql --database=$MYDB --user=$USER --password=$PASSWD
-e SELECT MAX(post_id) AS post_id FROM phpbb_posts;)

max_post_id=$(echo $post_id | sed 's|^post_id ||')
#echo max_post_id=$max_post_id # numero da usare per il ciclo for o while

while [ $post_id = 0 ]; do

post_username=$(mysql --database=$MYDB --user=$USER
--password=$PASSWD -e SELECT post_username FROM phpbb_posts WHERE
post_id= $post_id;)
post_username=$(echo $post_username | sed 's|^post_username ||')
#echo post_username=$post_username

post_text=$(mysql --database=$MYDB --user=$USER
--password=$PASSWD -e SELECT post_text FROM phpbb_posts WHERE
post_id= $post_id;)
post_text=$(echo $post_text | sed 's|^post_text ||')

new_post_text=$(echo $post_text | sed
s|\[quote:3pjjad9s\]$post_username#44;\([0-9/]*\)#44;
\([0-9:]*\)\]br||I)
#echo $new_post_text
mysql --database=$MYDB --user=$USER --password=$PASSWD -e
UPDATE phpbb_posts SET post_text = \$new_post_text\ WHERE post_id =
\$post_id\

let post_id=post_id-1
done


...che ne dite?
MaX

Il 13/02/15, MaXmaxlinux2...@gmail.com ha scritto:
 ciao a tutti

 avrei un problema con le espessioni regolari dentro ad una query mysql
 inglobata a sua volta in uno script  :)

 chpass() {
 mysql --database=$MYDB --user=$USER --password=$PASSWD -e
 UPDATE phpbb_users
 SET user_password = \$HPPASS\ WHERE username = \$PHPBB_USER\
 }

 questo sopra è un esempio che uso per modificare via script la passwd
 di un utente in phpbb.

 Ora peró vorrei cancellare una parte di testo dal campo 
 phpbb_posts/post_text ma solo se dentro a questo testo appare:
 [quote]nome utente,20/7/2012, 19:54] e il nome utente coicide con il
 relativo campo  phpbb_posts/post_username

 Praticamente c' è da cancellare la linea [quote]Alfredo,20/7/2012,
 19:54] solo se nel campo  post_username il nome coincide con
 Alfredo.

 A complicare le cose... la data di fianco è variabile, e il
 [quote]Alfredo,20/7/2012, 19:54]
 è sempre nella seconda linea

 Come se non bastasse, se nel messsaggio compare un
 [quote]Alfredo,20/7/2012, 19:54], ma nel post_username il nome è
 differente da Alfredo, allora bisogna lasciarlo.

 ..e naturalmente il resto del messaggio deve rimanere inalterato.

 qualche idea?

 io stavo pensando di estrarre il post_id,post_text,post_text con una
 query, fare le comparazioni con gli strumenti della shell linux,
 togliere eventualemente il testo e poi reimmettere il testo modificato
 usando come riferimento il post_id

 o ci sono soluzioni migliori... e più rapide... interne a mysql?

 ciao
 MaX



-- 
ciao,
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/caeyavmuo2uo+edur1czegngt6foav7pkriacndwst_kj0fm...@mail.gmail.com



Re: query complicata con espressioni regolari

2015-02-13 Per discussione MaX
 ho fatto alcune correzzioni a questa bozza.
Quello che mi scoccia è che lavorando cosí va a aggiornare tutti i
post del database, sia che siano da modificare o meno.
Bisognerebbe trovare il modo per detectare che il post è da moficicare
e poi mettere una condizione if

---

#!/bin/bash
source config.conf

max_post_id=$(mysql --database=$MYDB --user=$USER
--password=$PASSWD -e SELECT MAX(post_id) AS post_id FROM
phpbb_posts;)
#
max_post_id=$(echo $max_post_id | sed 's|^post_id ||')
echo max_post_id=$max_post_id # numero da usare per il ciclo for o while

# solo per test test
#post_id=10

while [ $max_post_id = 0 ]; do  # ciclo while ecluso per test
post_username=$(mysql --database=$MYDB --user=$USER
--password=$PASSWD -e SELECT post_username FROM phpbb_posts WHERE
post_id= $max_post_id;)
post_username=$(echo $post_username | sed 's|^post_username ||')
echo post_username=$post_username

post_text=$(mysql --database=$MYDB --user=$USER
--password=$PASSWD -e SELECT post_text FROM phpbb_posts WHERE
post_id= $max_post_id;)
post_text=$(echo $post_text | sed 's|^post_text ||')

new_post_text=$(echo $post_text | sed
s|\[quote:\([a-zA-Z0-9]*\)\]$post_username#44;\([0-9/]*\)#44;
\([0-9:]*\)\]br||I)
echo $new_post_text
mysql --database=$MYDB --user=$USER --password=$PASSWD -e
UPDATE phpbb_posts SET post_text = \$new_post_text\ WHERE post_id =
\$max_post_id\

let max_post_id=max_post_id-1
done

exit




---

Il 13/02/15, MaXmaxlinux2...@gmail.com ha scritto:
 opss  rileggento ho visto un errore:

 while [ $post_id = 0 ]; do  --  while [ $max_post_id = 0 ]; do

 Il 13/02/15, MaXmaxlinux2...@gmail.com ha scritto:
 pensavo di fare una cosa del genere, ma si tratta di 400.000 post, e
 non si se è abbastanza veloce

 --
 source config.conf

 post_id=$(mysql --database=$MYDB --user=$USER --password=$PASSWD
 -e SELECT MAX(post_id) AS post_id FROM phpbb_posts;)

 max_post_id=$(echo $post_id | sed 's|^post_id ||')
 #echo max_post_id=$max_post_id # numero da usare per il ciclo for o while

 while [ $post_id = 0 ]; do

 post_username=$(mysql --database=$MYDB --user=$USER
 --password=$PASSWD -e SELECT post_username FROM phpbb_posts WHERE
 post_id= $post_id;)
 post_username=$(echo $post_username | sed 's|^post_username ||')
 #echo post_username=$post_username

 post_text=$(mysql --database=$MYDB --user=$USER
 --password=$PASSWD -e SELECT post_text FROM phpbb_posts WHERE
 post_id= $post_id;)
 post_text=$(echo $post_text | sed 's|^post_text ||')

 new_post_text=$(echo $post_text | sed
 s|\[quote:3pjjad9s\]$post_username#44;\([0-9/]*\)#44;
 \([0-9:]*\)\]br||I)
 #echo $new_post_text
 mysql --database=$MYDB --user=$USER --password=$PASSWD -e
 UPDATE phpbb_posts SET post_text = \$new_post_text\ WHERE post_id =
 \$post_id\

 let post_id=post_id-1
 done
 

 ...che ne dite?
 MaX

 Il 13/02/15, MaXmaxlinux2...@gmail.com ha scritto:
 ciao a tutti

 avrei un problema con le espessioni regolari dentro ad una query mysql
 inglobata a sua volta in uno script  :)

 chpass() {
 mysql --database=$MYDB --user=$USER --password=$PASSWD -e
 UPDATE phpbb_users
 SET user_password = \$HPPASS\ WHERE username = \$PHPBB_USER\
 }

 questo sopra è un esempio che uso per modificare via script la passwd
 di un utente in phpbb.

 Ora peró vorrei cancellare una parte di testo dal campo 
 phpbb_posts/post_text ma solo se dentro a questo testo appare:
 [quote]nome utente,20/7/2012, 19:54] e il nome utente coicide con il
 relativo campo  phpbb_posts/post_username

 Praticamente c' è da cancellare la linea [quote]Alfredo,20/7/2012,
 19:54] solo se nel campo  post_username il nome coincide con
 Alfredo.

 A complicare le cose... la data di fianco è variabile, e il
 [quote]Alfredo,20/7/2012, 19:54]
 è sempre nella seconda linea

 Come se non bastasse, se nel messsaggio compare un
 [quote]Alfredo,20/7/2012, 19:54], ma nel post_username il nome è
 differente da Alfredo, allora bisogna lasciarlo.

 ..e naturalmente il resto del messaggio deve rimanere inalterato.

 qualche idea?

 io stavo pensando di estrarre il post_id,post_text,post_text con una
 query, fare le comparazioni con gli strumenti della shell linux,
 togliere eventualemente il testo e poi reimmettere il testo modificato
 usando come riferimento il post_id

 o ci sono soluzioni migliori... e più rapide... interne a mysql?

 ciao
 MaX



 --
 ciao,
 MaX



 --
 ciao,
 MaX



-- 
ciao,
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 

Re: query complicata con espressioni regolari

2015-02-13 Per discussione Gian Uberto Lauri
Scusate il top quoting.

Quello che subito non mi piace di questo script è che apri e chiudi troppe 
volte la 
connessione

Se ti tirassi fuori tutti i record in un CSV con una select unica logicamente 
simile a

select post_id, post_username, post_text from phpbb_posts

in cui concateni in modo opportuno i valori delle colonne in modo da avere un 
CSV 
valido, facessi la tua elaborazione creando un file contenente una serie di 
statement di 
update e alla fine processassi tutti gli statement con una sola invocazione del 
comando mysql, beh penso che con 400.000 record la differenza si dovrebbe 
sentire 
anche se mysql contatta il server su 127.0.0.0 o Unix pipe.

Poi arricchirei la query per vedere se riesco a trovare i post scritti 
dall'utente 
Pincopanco contenenti la stringa [quote]Pincopanco. Le ricerche full text 
usualmente 
non sono il massimo della forza di un DB - rispetto ad altri tipi di match - ma 
mi pare 
che abbiano arricchito i DB di funzioni diverse da live fatte proprio per la 
ricerca di 
pattern nei clob.

Non mi piacciono tantissimo nemmeno i trigger. Io userei awk. Mi sa che te la 
cavi con 
meno processi.

Se però il testo del post contiene degli EOL casca il palco dei CSV che hanno 
un 
solo record per riga.

In quel caso mi ricupererei il sorgente dello script ad di Kernighan e Pike e 
vedrei di 
sfruttare quello - e magari le stored procedure di mysql - per fare una 
connessione al 
DB per leggere i dati ed una per scriverli.

Un ultima cosa. Lo script per cambiare le password, così come è, va bene se è 
solo se 
è uno shell script via invocato via riga di comando da te. Se lo dai anche in 
mano 
anche a me io per lo meno ti cancello tutte le password :) :) :) (no, certi 
atti vandalici 
gratuiti non hanno senso, per me non vale la pena perderci tempo). Dicono che 
ci 
siano cose chiamate sql injections :) :) :). E non avete idea di cosa può fare 
il più 
incapace degli script kid col comando sqlmap.

--
Gian Uberto saint Lauri
inviata da un tablet

 On 14 Feb 2015, at 02:30, MaX maxlinux2...@gmail.com wrote:
 
 ok, mi riposnto da solo... ecco lo scrit funzionante... non ho ancora
 fatto le prove di carico... ma ad occhio 癡 rapido, per lo meno nei
 test
 
 --
 
 #!/bin/bash
 #exit
 source config.conf
 
 max_post_id=$(mysql --database=$MYDB --user=$USER
 --password=$PASSWD -e SELECT MAX(post_id) AS post_id FROM
 phpbb_posts;
 )
 #
 max_post_id=$(echo $max_post_id | sed 's|^post_id ||')
 echo max_post_id=$max_post_id # numero da usare per il ciclo for o while
 
 # solo per test test
 #max_post_id=$1
 
 while [ $max_post_id -gt 0 ]; do  # ciclo while ecluso per test
post_username=$(mysql --database=$MYDB --user=$USER
 --password=$PASSWD -e SELECT post_username FROM phpbb_posts WHERE
 post_id= $max_post_id;)
post_username=$(echo $post_username | sed 's|^post_username ||')
echo 
 ###
echo max_post_id=$max_post_id
echo post_username=$post_username
 
post_text=$(mysql --database=$MYDB --user=$USER
 --password=$PASSWD -e SELECT post_text FROM phpbb_posts WHERE
 post_id
 = $max_post_id;)
post_text=$(echo $post_text | sed 's|^post_text ||')
 
 #echo $post_text
 
Trigger=$(echo $post_text | sed 's|br|\n|g' | sed
 s|\[quote\]$post_username#44;\([0-9/]*\)#44; \([0-9:]*\)\]|AA#AA|
 | grep AA#AA)
 #echo Trigger1=$Trigger
 
if [ -z $Trigger ]; then
Trigger=$(echo $post_text | sed s|Data originale: \([0-9-]*\)
 \([0-9:]*\),brbr\[quote:\([a-zA-Z0-9]*\)\]$post_username#44;\([0-9/]*\)#44;
 \([0-9:]*\)\]|AA#AA|I | sed 's|br|\n|g'  | grep AA#AA )
 #echo Trigger2=$Trigger
fi
if [ -z $Trigger ]; then
Trigger=$(echo $post_text | sed s|Data originale: \([0-9-]*\)
 \([0-9:]*\),brbr\[quote\]$post_username#44;\([0-9/]*\)#44;
 \([0-9:]*\)\]|AA#AA| | sed 's|br|\n|g' | grep AA#AA | uniq)
 #echo Trigger3=$Trigger
fi
if [ $Trigger = AA#AA ] 2/dev/null ; then
new_post_text=$(echo $post_text  | sed
 s|\[quote:\([a-zA-Z0-9]*\)\]$post_username#44;\([0-9/]*\)#44;
 \([0-9:]*\)\]br||I | sed 's|\|\\|g')
new_post_text=$(echo $new_post_text  | sed s|Data originale:
 \([0-9-]*\) \([0-9:]*\),brbr\[quote\]$post_username#44;\([0-9/]*\)#44;
 \([0-9:]*\)\]br|Data Originale: \1 \2brbr|I | sed 's|\|\\|g'
 )
new_post_text=$(echo $new_post_text  | sed s|Data originale:
 \([0-9-]*\) 
 \([0-9:]*\),brbr\[quote:\([a-zA-Z0-9]*\)\]$post_username#44;\([0-9/]*\)#44;
 \([0-9:]*\)\]|Data Originale: \1 \2br|I)
new_post_text=$(echo $new_post_text | sed
 's|\[url-local:\([a-zA-Z0-9]*\)\]attachment/\([a-zA-Z0-9_#%.;]*\)\[/url-local:\([a-zA-Z0-9]*\)\]||')
 #echo $new_post_text
   mysql --database=$MYDB --user=$USER --password=$PASSWD -e
 UPDATE phpbb_posts SET post_text = \$new_post_text\ WHERE post_id =
 \$max_post_id\
else
echo 
lascio inalterato
fi
let 

Re: query complicata con espressioni regolari

2015-02-13 Per discussione MaX
Il 14/02/15, Gian Uberto Laurisa...@eng.it ha scritto:
 Scusate il top quoting.

 Quello che subito non mi piace di questo script è che apri e chiudi troppe
 volte la
 connessione

si, anche a me non piace molto... per ora ho fatto un tes con 10.000
records e funziona, ma non è che sisal il massimo

 Se ti tirassi fuori tutti i record in un CSV con una select unica
 logicamente simile a

buona idea... non ci avevo pensato! :)



ciao
MaX


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per
problemi inviare un email in INGLESE a listmas...@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CAEyAVmubMU7eS-pK=vexrmh1m8c37s6hsu793pljhr27agh...@mail.gmail.com