Serviço Windows para captura remota de impressões digitais usando dispositivos biométricos Nitgen.
FingertechTerminalService é um serviço Windows (Windows Service) desenvolvido em .NET Framework 4.5.1 que funciona como um servidor TCP para captura de digitais. Ele permite que aplicações remotas solicitem a captura de impressões digitais através de conexão de rede, utilizando dispositivos biométricos Nitgen.
- ✅ Serviço Windows com inicialização automática
- ✅ Servidor TCP na porta 13000
- ✅ Integração com SDK Nitgen para leitores biométricos
- ✅ Retorno de dados em formato TextFIR
- ✅ Registro de eventos no Event Log do Windows
- ✅ Comunicação via protocolo TCP/IP simples
- .NET Framework 4.5.1
- C#
- Windows Services
- TCP/IP Sockets
- Nitgen SDK (NITGEN.SDK.NBioBSP)
Antes de instalar e executar o serviço, certifique-se de ter:
- Windows (7, 8, 10, 11 ou Server)
- .NET Framework 4.5.1 ou superior instalado
- SDK Nitgen (NITGEN.SDK.NBioBSP) instalado
- Dispositivo biométrico Nitgen conectado ao computador
- Permissões de administrador para instalação do serviço
Abra o projeto no Visual Studio e compile em modo Release:
Build → Build Solution (Ctrl+Shift+B)
Crie o arquivo de configuração em C:\Windows\fingertechts.ini contendo o endereço IP onde o servidor irá escutar:
192.168.1.100
Nota: Substitua pelo IP da máquina onde o serviço será executado.
Abra o Prompt de Comando como Administrador e navegue até a pasta onde está o executável compilado:
cd D:\Envio\Devices\Hamster\Software\rdp\FingertechTerminalService-master\TsService\bin\ReleaseInstale o serviço usando o InstallUtil:
%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe TsService.exeVia linha de comando:
net start TsServiceOu pelo Gerenciador de Serviços do Windows:
- Pressione
Win + Re digiteservices.msc - Localize o serviço FingertechTs
- Clique com o botão direito e selecione Iniciar
O serviço escuta conexões TCP na porta 13000. O protocolo é simples baseado em comandos ASCII:
| Comando | Descrição | Resposta |
|---|---|---|
1 |
Captura impressão digital | String TextFIR com os dados da digital |
using System;
using System.Net.Sockets;
using System.Text;
class Program
{
static void Main()
{
try
{
// Conecta ao servidor
TcpClient client = new TcpClient("192.168.1.100", 13000);
NetworkStream stream = client.GetStream();
// Envia comando de captura
byte[] comando = Encoding.ASCII.GetBytes("1");
stream.Write(comando, 0, comando.Length);
// Recebe a digital
byte[] buffer = new byte[15000];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string digital = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Digital capturada:");
Console.WriteLine(digital);
client.Close();
}
catch (Exception ex)
{
Console.WriteLine("Erro: " + ex.Message);
}
}
}import socket
def capturar_digital(ip, porta=13000):
try:
# Conecta ao servidor
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((ip, porta))
# Envia comando de captura
client.send(b'1')
# Recebe a digital
digital = client.recv(15000).decode('ascii')
client.close()
return digital
except Exception as e:
print(f"Erro: {e}")
return None
# Uso
digital = capturar_digital('192.168.1.100')
print(f"Digital capturada: {digital}")const net = require('net');
function capturarDigital(ip, porta = 13000) {
return new Promise((resolve, reject) => {
const client = new net.Socket();
client.connect(porta, ip, () => {
console.log('Conectado ao servidor');
client.write('1');
});
client.on('data', (data) => {
resolve(data.toString('ascii'));
client.destroy();
});
client.on('error', (err) => {
reject(err);
});
});
}
// Uso
capturarDigital('192.168.1.100')
.then(digital => console.log('Digital:', digital))
.catch(err => console.error('Erro:', err));FingertechTerminalService/
├── TsService/
│ ├── Program.cs # Ponto de entrada do serviço
│ ├── Service1.cs # Implementação do servidor TCP
│ ├── Service1.Designer.cs # Designer do serviço
│ ├── utilsNitgen.cs # Classe para comunicação com Nitgen
│ ├── ProjectInstaller.cs # Instalador do serviço
│ ├── ProjectInstaller.Designer.cs # Designer do instalador
│ ├── App.config # Configuração da aplicação
│ └── Properties/
│ └── AssemblyInfo.cs # Informações do assembly
└── README.md
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Cliente │───Conecta────▶ │ TsService │────Comando────▶│ Leitor Nitgen │
│ TCP/IP │ Porta │ (Servidor) │ Captura │ Biométrico │
└─────────────┘ 13000 └──────────────┘ └─────────────────┘
▲ │ │
│ │ │
└────────TextFIR────────────────┴───────────Digital─────────────┘
O serviço registra eventos no Event Log do Windows. Para visualizar:
- Pressione
Win + Re digiteeventvwr - Navegue até Logs do Windows → Aplicativo
- Procure por eventos da origem TsService ou service1
- ✅ Inicialização do serviço
- ✅ Início do servidor TCP
- ✅ Conexões de clientes
- ✅ Capturas de digitais
- ❌ Erros de socket
- ❌ Interrupções do serviço
net stop TsService%windir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u TsService.exeEdite o arquivo Service1.cs, linha onde está definida a porta:
Int32 port = 13000; // Altere para a porta desejadaEdite o arquivo Service1.cs, linha onde o IP é lido:
IPAddress ip = IPAddress.Parse(File.ReadAllText(@"C:\Windows\fingertechts.ini"));⚠️ Segurança: Este serviço não possui autenticação. Qualquer cliente que se conecte pode solicitar captura de digitais⚠️ Firewall: Certifique-se de liberar a porta 13000 no firewall do Windows⚠️ Processamento Serial: O servidor processa uma requisição por vez⚠️ Device ID: O código usa o device ID 255 (abre qualquer dispositivo Nitgen disponível)⚠️ Buffer: Tamanho máximo de resposta é 15000 bytes
Para ambientes de produção, considere:
- Implementar autenticação de clientes
- Usar SSL/TLS para criptografar a comunicação
- Adicionar rate limiting para prevenir abuso
- Restringir IPs permitidos via firewall
- Implementar logging mais robusto
Para problemas ou dúvidas:
- Verifique os logs do Event Viewer
- Confirme que o dispositivo Nitgen está conectado
- Verifique se o SDK Nitgen está instalado corretamente
- Confirme que o arquivo
C:\Windows\fingertechts.iniexiste e contém um IP válido
Versão Atual: 1.0.0.0
Data: 2019
Framework: .NET Framework 4.5.1
Desenvolvido para integração com dispositivos biométricos Nitgen em ambientes Windows