
Um proxy SOCKS para Citrix.
Ica2Tcp é uma ferramenta desenvolvida em C que permite fazer proxy de qualquer conexão TCP dentro de uma conexão Citrix ICA. É para Citrix o que ssh -D é para SSH.
Informações adicionais podem ser encontradas aqui: https://www.sstic.org/2022/presentation/ica2tcp/
Esta ferramenta foi desenvolvida como um projeto de estágio e ainda está em desenvolvimento. Ela é publicada "como está", então algumas partes do código ainda estão um pouco sujas. Assim, você pode experimentar algumas falhas ocasionais. Uma versão mais limpa está em andamento e será lançada em breve. No entanto, qualquer observação sobre esta versão é bem-vinda!
Tanto o binário autônomo do lado do servidor quanto a biblioteca compartilhada do lado do cliente devem ser compilados. Consulte o README correspondente para mais detalhes:
Por conveniência, todos os cabeçalhos e bibliotecas Citrix necessários (para o cliente Linux64 e o servidor Win32) foram incluídos neste repositório (em citrix_sdk_files/). Todos eles são originários do Virtual Channel SDK e do WFAPI SDK que estão publicamente disponíveis:
Os arquivos CMakeLists.txt neste repositório permitem compilar os binários do servidor e do cliente com esses arquivos incluídos. Se você quiser usar os arquivos de SDK mais recentes ou compilar para outra arquitetura de destino, sinta-se à vontade para baixar e instalar os SDKs manualmente, porém talvez seja necessário alterar o CMakeLists.txt correspondente.
Depois que tudo for compilado, você precisa instalar a biblioteca compartilhada do cliente.
Primeiro, copie o arquivo de saída da compilação DRIVER.DLL para <CITRIX_INSTALL_FOLER>/ICAClient/<DRIVER_NAME>.DLL
Em seguida, modifique o arquivo de configuração <CITRIX_INSTALL_FOLER>/ICAClient/config/module.ini da seguinte forma:
<VIRTUAL_DRIVER_NAME> na lista VirtualDriver na seção [ICA 3.0] (substitua <VIRTUAL_DRIVER_NAME> por qualquer coisa que desejar).[ICA 3.0], adicione a linha <VIRTUAL_DRIVER_NAME>=On[<VIRTUAL_DRIVER_NAME>] contendo: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
Só isso!
Depois que o driver do lado do cliente estiver instalado corretamente, basta copiar o binário do servidor para o servidor e executá-lo a partir de uma sessão ICA ativa.
Ele abre um serviço SOCKS no lado do cliente, no endereço e na porta especificados no arquivo module.ini.