
Un proxy SOCKS pour Citrix.
Ica2Tcp est un outil développé en C permettant de proxifier toute connexion TCP à l'intérieur d'une connexion ICA Citrix. Il est pour Citrix ce que ssh -D est pour SSH.
Des informations supplémentaires peuvent être trouvées ici : https://www.sstic.org/2022/presentation/ica2tcp/
Cet outil a été développé dans le cadre d'un projet de stage et est encore en cours de développement. Il est publié « tel quel », certaines parties du code sont donc encore un peu sales. Par conséquent, vous pouvez rencontrer des plantages occasionnels. Une version plus propre est en cours de développement et sera bientôt publiée. Cependant, toute remarque concernant cette version est la bienvenue !
La bibliothèque partagée côté client et le binaire autonome côté serveur doivent tous deux être compilés. Veuillez vous référer au README correspondant pour plus de détails :
Pour plus de commodité, tous les en-têtes et bibliothèques Citrix requis (pour le client Linux64 et le serveur Win32) ont été inclus dans ce dépôt (dans citrix_sdk_files/). Ils proviennent tous du SDK Virtual Channel et du SDK WFAPI qui sont disponibles publiquement :
Les fichiers CMakeLists.txt de ce dépôt permettent de compiler les binaires serveur et client avec ces fichiers inclus. Si vous souhaitez utiliser les derniers fichiers SDK ou compiler pour une autre architecture cible, n'hésitez pas à télécharger et installer manuellement les SDK, mais vous devrez peut-être modifier le CMakeLists.txt correspondant.
Une fois que tout est compilé, vous devez installer la bibliothèque partagée cliente.
Tout d'abord, copiez le fichier de sortie de compilation DRIVER.DLL vers <CITRIX_INSTALL_FOLER>/ICAClient/<DRIVER_NAME>.DLL
Ensuite, modifiez le fichier de configuration <CITRIX_INSTALL_FOLER>/ICAClient/config/module.ini comme suit :
<VIRTUAL_DRIVER_NAME> dans la liste VirtualDriver de la section [ICA 3.0] (remplacez <VIRTUAL_DRIVER_NAME> par ce que vous voulez).[ICA 3.0], ajoutez la ligne <VIRTUAL_DRIVER_NAME>=On[<VIRTUAL_DRIVER_NAME>] contenant :DriverName = <DRIVER_NAME>.DLL
LogPath = /path/to/logs/folder/
Port = <PORT_NUMBER_FOR_SOCKS> //default: 33556
Address = <LISTENING_IP_ADDRESS> //default: 127.0.0.1, use 0.0.0.0 to open the socks for non local clients
Et voilà !
Une fois le pilote côté client correctement installé, il vous suffit de copier le binaire serveur sur le serveur et de l'exécuter depuis une session ICA active.
Il ouvre un service SOCKS côté client sur l'adresse et le port spécifiés dans le fichier module.ini.