Petit programme de stéganographie en VB6

Moderators: bfs05, Mod

Petit programme de stéganographie en VB6

Postby HackAngel » Fri Apr 04, 2008 6:43 pm

Chose promise, chose due.

Petit programme de stéganographie en VB6, qui permet d'insérer du texte dans une image bmp.

Je tiens à préciser que ce topic n'est en aucun cas un tutoriel sur le VB6, et qu'un minimum de connaissances du langage seront nécessaires; je joint malgrès tout deux captures afin que les débutants puissent plus facilement associer les différents éléments graphiques du programme aux fonctions utilisées dans le code.

[b:51dc4878f1]Form1.frm[/b:51dc4878f1]

[img:51dc4878f1]http://images3.hiboox.com/images/1408/hv33m5ho.png[/img:51dc4878f1]

[code:1:51dc4878f1]Function bin(nombre As Byte) As String
Dim nombreB As String
If nombre >= 128 Then
nombreB = nombre - 128
Else
nombreB = "0"
End If

If nombre >= 64 Then
nombreB = nombreB & "1"
nombre = nombre - 64
Else
nombreB = nombreB & "0"
End If

If nombre >= 32 Then
nombreB = nombreB & "1"
nombre = nombre - 32
Else
nombreB = nombreB & "0"
End If

If nombre >= 16 Then
nombreB = nombreB & "1"
nombre = nombre - 16
Else
nombreB = nombreB & "0"
End If

If nombre >= 8 Then
nombreB = nombreB & "1"
nombre = nombre - 8
Else
nombreB = nombreB & "0"
End If

If nombre >= 4 Then
nombreB = nombreB & "1"
nombre = nombre - 4
Else
nombreB = nombreB & "0"
End If

If nombre >= 2 Then
nombreB = nombreB & "1"
nombre = nombre - 2
Else
nombreB = nombreB & "0"
End If

If nombre >= 1 Then
nombreB = nombreB & "1"
nombre = nombre - 1
Else
nombreB = nombreB & "0"
End If
bin = nombreB
End Function

Function b10(bits As String) As Byte
Dim nombre As Byte
nombre = 0
If Mid(bits, 1, 1) = "1" Then nombre = 128
If Mid(bits, 2, 1) = "1" Then nombre = nombre + 64
If Mid(bits, 3, 1) = "1" Then nombre = nombre + 32
If Mid(bits, 4, 1) = "1" Then nombre = nombre + 16
If Mid(bits, 5, 1) = "1" Then nombre = nombre + 8
If Mid(bits, 6, 1) = "1" Then nombre = nombre + 4
If Mid(bits, 7, 1) = "1" Then nombre = nombre + 2
If Mid(bits, 8, 1) = "1" Then nombre = nombre + 1
b10 = nombre
End Function

Private Sub Steganoin_Click()
Dim i, j As Integer
Dim octet, octet2 As Byte
Dim octetbin, octetbin2 As String
Open Stegfile.Text For Binary Access Read As #1
Open Stegfile.Text For Binary Access Write As #2
i = 0
j = 0
For j = 1 To Len(Stegtext.Text)
octet = Asc(Mid(Stegtext.Text, j, 1))
octetbin = bin(octet)
For i = 1 To 8
Get 1, i + ((j - 1) * 8) + 100, octet2
If Mid(bin(octet2), 8, 1) = Mid(octetbin, i, 1) Then
Else
octetbin2 = Left(bin(octet2), 7) & Mid(octetbin, i, 1)
Put 2, i + ((j - 1) * 8) + 100, b10(octetbin2)
End If
Next
Next
Close #1, #2
Screen.Text = "Code injecté dans " + (Stegfile.Text) + "."
End Sub

Private Sub Steganoopen_Click()
frmPicture.Show 1
End Sub

Private Sub Steganoout_Click()
Dim i, j As Integer
Dim octet As Byte
Dim octetbin As String
Stegtext.Text = ""
Open Stegfile.Text For Binary Access Read As #1
i = 0
j = 0
For j = 1 To 200
octetbin = ""
For i = 1 To 8
Get 1, i + ((j - 1) * 8) + 100, octet
octetbin = octetbin & Right(bin(octet), 1)
Next
Next
Close #1, #2
End Sub[/code:1:51dc4878f1]

[b:51dc4878f1]formPicture.frm[/b:51dc4878f1]

[img:51dc4878f1]http://images3.hiboox.com/images/1408/1wdfmh58.png[/img:51dc4878f1]

[code:1:51dc4878f1]Private Sub Command1_Click()
Unload Me
End Sub

Private Sub Command2_Click()
On Error GoTo Annuler
If Right$(Dir.Path, 1) = "\" Then
Nom = Dir.Path + File.FileName
Else
Nom = Dir.Path + "\" + File.FileName
End If
Form1.Stegfile.Text = Nom
Annuler:
Unload Me
End Sub

Private Sub Drive_Change()
Dir.Path = Left$(Drive.Drive, 2) + "\"
File.Path = Dir.Path
File.Pattern = "*.bmp"
End Sub

Private Sub Dir_Change()
File.Path = Dir.Path
File.Pattern = "*.bmp"
End Sub

Private Sub Form_Load()
Drive.Drive = "c:\"
Dir.Path = "c:\"
File.Path = "c:\"
File.Pattern = "*.bmp"
End Sub[/code:1:51dc4878f1]

Vous aurez remarqué la présence du bout de code suivant:

[code:1:51dc4878f1]Screen.Text = "Code injecté dans " + (Stegfile.Text) + "."[/code:1:51dc4878f1]

Sur les images, rien ne correspond à Screen.Text; cet écran était intégré à la plate-forme, et il vous faudra l'incorporer au programme, ou supprimer le code correspondant à son utilisation.

Voilà. C'est un vieux programme, j'ai sûrement récupéré les déclarations quelque part à l'époque, et je l'ai intégré à une plate forme multi-outils. Je pense que ce peut être une bonne première approche de la stéganographie en VB6.

Je ne l'ai jamais retouché depuis, libre à vous de le faire... ;)

[b:51dc4878f1][[/b:51dc4878f1][i:51dc4878f1]Je viens juste de le tester, et il ne fonctionne pas. Le sujet étant prêt, je vous le livre tout de même, et apporterai les modifications s'il y a lieu (il se peut que le bug vienne d'une autre fonction de la plate forme, et que l'outil fonctionne très bien indépendamment).

Toutes mes excuses, je vois pour réparer ça au plus vite...[/i:51dc4878f1][b:51dc4878f1]][/b:51dc4878f1]

Pour la Liberté...

HackAngel
User avatar
HackAngel
 
Posts: 871
Joined: Tue Dec 25, 2007 11:14 pm
Location: Quelque part entre ici et ailleurs...

Return to Visual Basic 6

Who is online

Users browsing this forum: No registered users and 2 guests

cron