Page 1 sur 1

HyperCryptTchat

Publié : ven. 07/sept./2012 7:14
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

Re: HyperCryptTchat

Publié : ven. 07/sept./2012 9:10
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 ++

Re: HyperCryptTchat

Publié : ven. 07/sept./2012 9:21
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 ?

Re: HyperCryptTchat

Publié : ven. 07/sept./2012 9:28
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

Re: HyperCryptTchat

Publié : ven. 07/sept./2012 9:31
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)

Re: HyperCryptTchat

Publié : ven. 07/sept./2012 9:41
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.

Re: HyperCryptTchat

Publié : ven. 07/sept./2012 9:42
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:

Re: HyperCryptTchat

Publié : ven. 07/sept./2012 18:32
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:

Re: HyperCryptTchat

Publié : ven. 07/sept./2012 19:39
par SPH
Et oui, depuis 2005, je n'avais jamais fait de gadget. Je n'ai fait que des screen open.

Re: HyperCryptTchat

Publié : dim. 09/sept./2012 19:25
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:

Re: HyperCryptTchat

Publié : dim. 22/nov./2015 6:51
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