HyperCryptTchat

Programmation d'applications complexes
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

HyperCryptTchat

Message par SPH »

http://xmas.free.fr/pb/HyperCryptTchat.exe

Vous desirez tchater en top secret ? HyperCryptTchat est fait pour vous. Assurez vous que votre correspondant ait la meme clé et le meme mot de passe et connectez vous sur son ip. Voila, vous pouvez vous lacher.

J'aimerais que 2 d'entre vous l'essaye. Moi, je ne peux pas car mon ip n'est pas pinguable :|


ps : grand merci a Dobro et Mesa pour leur aide :wink: et merci a falsam d'avoir testé :idea:

Code : Tout sélectionner

Enumeration ;fenêtre
  #Window
  #ipgadget
  #bouton_connect
  #bouton_deconnecte
  #text_mot_de_pass
  #bouton_clef
  #bouton_appliquer
  #text_mdp
  #text_cle
  #text_tchat
  #frame1
  #frame2
  #frame3
  #frame4
  #frame5
  #menu_1 ; j'ai mis 1 car je ne sais pas a quoi tu veux le faire reagir
   #file
EndEnumeration

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf

OpenConsole()
EnableGraphicalConsole(1)

len=5000
*Buffer = AllocateMemory(len)
Dim cle.b(2600)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Port = 6842
If CreateNetworkServer(0, Port)
Else
  MessageRequester("Error", "Can't create server !", 0)
  End
EndIf
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ConsoleColor(15,0)
PrintN("HyperCryptTchat beta 5.3")
ConsoleColor(7,0)
PrintN("(c)2012 - SPH")
PrintN("")
ConsoleColor(8,0)
PrintN("::port "+Str(port)+"::")
PrintN("")



If OpenWindow(#Window, 0, 0, 340, 234, "HyperCryptTchat", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ;     EditorGadget(#EditorGadget_0, 8, 8, 306, 133)
  ;     For a = 0 To 5
  ;       AddGadgetItem(#EditorGadget_0, a, "Ligne "+Str(a))
  ;     Next
  
  
  
  ;AddKeyboardShortcut(#Fenetre, Raccourci, Event)
  
  Frame3DGadget(#frame1, 13, 10, 314, 111, "Cryptographie")
  
  ButtonGadget(#bouton_clef, 25, 30,  72, 20, "Clé")
  StringGadget(#text_cle,105,30,210,20,"",#PB_String_BorderLess)
  TextGadget  (#text_mot_de_pass, 25,60, 250, 24, "Mot de passe :")
  StringGadget(#text_mdp,105,60,210,20,"",#PB_String_BorderLess)
  ButtonGadget(#bouton_appliquer, 105, 90, 130, 20, "Appliquer")
  
  
  Frame3DGadget(#frame2, 13, 125, 314, 50, "Correspondant")
  
  IPAddressGadget(#ipgadget, 25, 145, 120,20)
  ButtonGadget(#bouton_connect , 160, 145,  72, 20, "Connect")
  ButtonGadget(#bouton_deconnecte, 240, 145,  72, 20, "Disconnect")
  DisableGadget(#bouton_deconnecte,1)
  
  
  Frame3DGadget(#frame3, 13, 179, 314, 50, "Tchat")
  
  StringGadget(#text_tchat,25,198,290,20,"",#PB_String_BorderLess)
  SetActiveGadget(#text_tchat)  ; a quoi ça sert ça ??
  
  AddKeyboardShortcut(#Window, #PB_Shortcut_Return, #menu_1)
  
  Repeat
    Event = WaitWindowEvent() ;Or NetworkServerEvent()
    SEvent = NetworkServerEvent()
    ;Beep_(1500,30)
    If SEvent
      ClientID = EventClient()
      Select SEvent
        Case #PB_NetworkEvent_Connect
                ConsoleColor(15,0)
          PrintN("Connected...")
        Case 2
          ReceiveNetworkData(ClientID, *Buffer, len)
          message$=(PeekS(*Buffer))
          Gosub recep ;++++++++++++++++++++++++++++++++++++++++
        Case #PB_NetworkEvent_Disconnect
                ConsoleColor(15,0)
          PrintN("...Disconnected")  
    EndSelect
    EndIf
    
    Select Event
      Case #PB_Event_Gadget ; ici on regarde ce qui concerne les Gadgets et seulement eux
        Select EventGadget() ; on va creer un case par gadget  !! (tout les gadgets auront un case , meme si tu ne t'en sert pas !
          Case #ipgadget
            ;debug"clique sur ip gadget"
          Case #bouton_connect
            ;debug"click sur connect"
              ;******************************************************************************
              If GetGadgetText(#ipgadget)<>""

                
                
ConnectionID = OpenNetworkConnection(GetGadgetText(#ipgadget), Port)
If ConnectionID
  connect=1
   DisableGadget(#bouton_connect,1)
   DisableGadget(#bouton_deconnecte,0)

Else
  connect=0
   DisableGadget(#bouton_connect,0)
   DisableGadget(#bouton_deconnecte,1)

EndIf                
              EndIf
              ;******************************************************************************
          Case #bouton_deconnecte
            ;debug"click sur deconnect"
              If connect=1
                CloseNetworkConnection(ConnectionID)
              EndIf
              connect=0
              DisableGadget(#bouton_connect,0)
              DisableGadget(#bouton_deconnecte,1)
          Case #text_mot_de_pass
            ;debug"modification de mot de pass"
          Case #text_mdp
            ;debug"on a clique ou modifie le text inconnu"
          Case #bouton_clef
            ;debug"on a clicke sur le bouton clef"
              Fichier$ = OpenFileRequester("Choisissez une clé de cryptage", "", "",0)
              SetGadgetText(#text_cle,Fichier$)
          Case #text_cle
            ;debug"on a clique ou modifie  le text inconnu2"
          Case #bouton_appliquer
            ;debug"click sur Appliquer"
              If GetGadgetText(#text_mdp)<>"" And GetGadgetText(#text_cle)<>""  
                la=0
                pointeur=0
                pointeurla=1
                pointeurla2=1
                a$=Left(GetGadgetText(#text_mdp),500)
                ;Debug a$
                For i=1 To Len(a$)
                  ;Debug(Asc(Mid(GetGadgetText(#text_mdp),i,1)))
                  u=Asc(Mid(a$,i,1))
                  RandomSeed(u)
                  For ii=1 To 5
                    la+1
                    cle(la)=Random(120)+6
                    ;Debug cle(la)
                    pointeur+cle(la)*cle(la)*14
                    Debug pointeur
                    ;pointeur=0
                  Next
                Next
                RandomSeed(ElapsedMilliseconds())
                ReadFile(#file, GetGadgetText(#text_cle))
;                 Debug pointeur
                pointeur=pointeur%Lof(#file)
                Debug pointeur
                Debug Lof(#file) 
                Debug("===")
                pointeur2=pointeur
                FileSeek(#file,pointeur)
              EndIf
              
          Case #text_tchat
            ;debug"on a clique sur le text inconnu3"
            
        EndSelect
        
        
      Case #PB_Event_Menu ; ici on regarde les events du menu
        Select EventMenu()
          Case #menu_1
            ;debug"on a appuyé sur le touche RETURN"
              Message$=GetGadgetText(#text_tchat)
              ici:
              messagecry$=""
              If Message$<>"" And la<>0           
                If connect=1
                  Debug message$
                  For u=1 To Len(message$)
                    c.w=Asc(Mid(message$,u,1))
                    ;Debug ("====")
                    ;Debug c
                    ;encore:
                  For i=1 To cle(pointeurla)
                    FileSeek(#file,pointeur)
                    b.w=ReadByte(#file)
                    If b=0
                      i-1
                      ;Debug ("encore")
                    EndIf
                    ;Debug b
                    c=c ! b
                    pointeur+1
                    If pointeur>=Lof(#file)
                      pointeur=0
                    EndIf
                 Next
                  ;Debug c
                  pointeurla+1
                  If pointeurla>la
                    pointeurla=1
                  EndIf
                  ;If c=0 Or c=9 Or c=10 Or c=13
                  ;  c=32
                  ;EndIf
                  Repeat
                  d.w=Random(200)+55  
                  ;Beep_(150,10)
                  Until c<>d
                  c=c ! d
;                   Debug c
;                   Debug d
                  
                  messagecry$+Chr(c)+Chr(d)
                  Next
                  
                  ;Debug Messagecry$
                  SendNetworkString(ConnectionID, Messagecry$)
                  ;message$=Messagecry$
                  
                
                Repeat
                a$=Left(Message$,80)
                ConsoleColor(12,0)
                PrintN(a$)
                Message$=Mid(Message$,81,Len(Message$)-80)
                Until Message$=""
                
                EndIf
              EndIf
              SetGadgetText(#text_tchat,"")
              SetActiveGadget(#text_tchat)
            
             message$=messagecry$:Gosub recep
            
        EndSelect
        
    EndSelect
  Until Event = #PB_Event_CloseWindow
  
EndIf

End






recep:
 Debug message$


              messagecry$=""
              For u=1 To Len(message$) Step 2
                
                    c.w=Asc(Mid(message$,u,1))
                    d.w=Asc(Mid(message$,u+1,1))
                    Debug("===")
                    Debug c
     ;               End
                    
                    ;encore2:
                    
;                    FileSeek(#file,pointeur2)
                  For i=1 To cle(pointeurla2)
                    FileSeek(#file,pointeur2)
                    b.w=ReadByte(#file)
                      If b=0
                        i-1
                        Debug ("encore")
                      EndIf
                    c=c ! b
                    pointeur2+1
                    If pointeur2>=Lof(#file)
                      pointeur2=0
                    ;FileSeek(#file,pointeur2)
                    EndIf
                  Next
                  c=c ! d
                  ;If c=0 Or c=9 Or c=10 Or c=13
                  ;  c=32
                  ;EndIf
                  messagecry$+Chr(c)
                  pointeurla2+1
                  If pointeurla2>la
                    pointeurla2=1
                  EndIf
                  Next
                  
                  ;; debug Message$
                  ;message$=Messagecry$
                  
                Repeat
                a$=Left(Messagecry$,80)
                ConsoleColor(10,0)
                ;CharToOem_(@Messagecry$, @Messagecry$)
                PrintN(a$)
                Messagecry$=Mid(Messagecry$,81,Len(Messagecry$)-80)
                Until Messagecry$=""
                
Return
Dernière modification par SPH le lun. 01/oct./2012 20:18, modifié 3 fois.
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: HyperCryptTchat

Message par falsam »

Tu livres cette application à n'importe qui et il me met à la poubelle direct :p

Ton application fait serveur et client ?

Ou est la clé ? Je pense que c'est une clé sous forme d'images si je me remémore tes posts ?

En attendant ta réponse, mme si l'ip de ton routeur n'est pas pinguable, un chat de ce type fonctionne, j'ai fait un essai avec mon application de chat en indiquant à une box (Orange comme la tienne) que le ping était désactivé puis j'ai lancé un serveur de chat. Ensuite j'ai fait fonctionné le client sur un modem-câble et le chat fonctionnait correctement.

A ++
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: HyperCryptTchat

Message par SPH »

falsam a écrit :Tu livres cette application à n'importe qui et il me met à la poubelle direct :p
pkoi ? 8O
Ton application fait serveur et client ?
Oui, pour recevoir et emettre (mais je savais que C pas obligatoire)
Ou est la clé ? Je pense que c'est une clé sous forme d'images si je me remémore tes posts ?
La clé est un fichier quelconque, mais plus efficace si c'est un fichier compressé ou MP3 ou AVI
En attendant ta réponse, mme si l'ip de ton routeur n'est pas pinguable, un chat de ce type fonctionne, j'ai fait un essai avec mon application de chat en indiquant à une box (Orange comme la tienne) que le ping était désactivé puis j'ai lancé un serveur de chat. Ensuite j'ai fait fonctionné le client sur un modem-câble et le chat fonctionnait correctement.
Tu parles de mon programme ? Ou d'un code fourni avec PB ?
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: HyperCryptTchat

Message par falsam »

SPH a écrit :pkoi ?
parce que tu le livres sans aucune explication. On le lance et on ne sait pas quoi faire.
SPH a écrit :Oui, pour recevoir et emettre (mais je savais que C pas obligatoire)
C'était juste pour savoir.
SPH a écrit :Tu parles de mon programme ? Ou d'un code fourni avec PB ?
Le mien. je le dis dans mes propos. Je manquais d'information pour ton application.

Une dernière chose, pourquoi en mode console ? Inutile de me répondre "pourquoi pas" :p
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: HyperCryptTchat

Message par SPH »

falsam a écrit :Une dernière chose, pourquoi en mode console ? Inutile de me répondre "pourquoi pas" :p
Pourquoi p.... heu, le coté pratique de la console (je ne sais pas utiliser le bon gadget en fait)
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: HyperCryptTchat

Message par falsam »

SPH a écrit :heu, le coté pratique de la console (je ne sais pas utiliser le bon gadget en fait)
parfois tu m'étonnes !!! A moins que tu te moques.

Un Stringgadget pour la ligne de chat (Ars aurait dit plutôt un editorgadget)
Un ListViewgadget pour visualiser l'historique du chat.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: HyperCryptTchat

Message par SPH »

falsam a écrit :
SPH a écrit :heu, le coté pratique de la console (je ne sais pas utiliser le bon gadget en fait)
parfois tu m'étonnes !!! A moins que tu te moques.
Non, serieux. Je ne manie les gadgets que depuis une semaine ! :idea:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: HyperCryptTchat

Message par G-Rom »

Je ne manie les gadgets que depuis une semaine !
Inscription: Mer 09/Nov/2005 9:53
Messages: 2406
Ouaa... j'espère pour toi qu'avec ta femme que tu manie ta bite depuis plus longtemps que ca...
si elle cherche un mp* , envois moi sa photo par mp ;)

*marteau piqueur

Y a pas mal de zombie sur le forum quand même...
aller , j'y connais rien en poésie, je suis une tanche en francais , mais je vais quand même m'inscrire ici : http://www.forum-poetique.net/ , peu être que dans 7 ou 8 ans cela va m'intéresser finalement, ça ne m'empêchera pas de ramener ma science la bas en tout cas... :mrgreen:
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: HyperCryptTchat

Message par SPH »

Et oui, depuis 2005, je n'avais jamais fait de gadget. Je n'ai fait que des screen open.
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: HyperCryptTchat

Message par SPH »

Voila, j'ai fais une beta stable et secure. Si certains veulent le tester entre eux, dites moi si tout fonctionne. Merci :mrgreen:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
caussatjerome
Messages : 50
Inscription : lun. 24/sept./2012 20:57
Localisation : Somme

Re: HyperCryptTchat

Message par caussatjerome »

Petite proposition : mot de passe de chiffrement aléatoire, généré par cryptrandomdata, échange du mot de passe aléatoire via chiffrement asymétrique (openssl : voir mes codes)
mon code openssl :-)
implémentation d'un protocole
Répondre