public async Task Search(string byteText, int start, int stop)
        {
            byteText = byteText.Trim(' ', '\r', '\n');

            _messages.AddHeading($"Searching For Byte Array {byteText}");

            var bytes = byteText.ToByteArray();

            for (var blockNumber = start; blockNumber <= stop; blockNumber++)
            {
                if (_messages.Cancel)
                {
                    break;
                }

                var fileName = Path.Combine(Settings.Default.InputPath, $"blk{blockNumber:D5}.dat");

                _messages.Add($"File: {Path.GetFileNameWithoutExtension(fileName)}", MessageType.Heading);

                if (Path.GetFileName(fileName) == "blk00000.dat")
                {
                    continue;
                }

                Blocks.ClearAll();
                await Blocks.Add(fileName);

                foreach (var transaction in Blocks.TransactionList)
                {
                    SearchTransaction(transaction.Value, bytes);
                }
            }

            _messages.AddCompletion();
        }
        public async Task Search(int start, int stop)
        {
            _messages.AddHeading("Finding Wikileak Hashes stored in the BlockChain");

            for (var blockNumber = start; blockNumber <= stop; blockNumber++)
            {
                if (_messages.Cancel)
                {
                    break;
                }

                var fileName = Path.Combine(Settings.Default.InputPath, $"blk{blockNumber:D5}.dat");

                _messages.Add($"File: {Path.GetFileNameWithoutExtension(fileName)}", MessageType.Heading);

                if (Path.GetFileName(fileName) == "blk00000.dat")
                {
                    continue;
                }

                Blocks.ClearAll();
                await Blocks.Add(fileName);

                SearchTransaction();
            }

            _messages.AddCompletion();
        }
示例#3
0
        public async Task Search(string txId)
        {
            txId = txId.Trim(' ', '\r', '\n');

            _messages.AddHeading("Finding Transactions in Wikileaks Hash Trailer");

            try{
                await SearchTransaction(txId);
            }
            catch (Exception ex) {
                _messages.Add(ex.Message, MessageType.Error);
            }

            _messages.AddCompletion();
        }
        public async Task Search(string txId)
        {
            txId = txId.Trim(' ', '\r', '\n');

            _messages.AddHeading("Walking down Transactions");

            try{
                await SearchTransaction(txId);
            }
            catch (Exception ex) {
                _messages.Add(ex.Message, MessageType.Error);
            }

            _messages.AddCompletion();
        }
        public void Download(string txId)
        {
            txId = txId.Trim(' ', '\r', '\n');

            _messages.AddHeading("Combining all strange transactions");

            var fileData = _block.DownloadStrangeFile(txId);

            if (fileData == null)
            {
                throw new InvalidDataException($"The transaction ID {txId} was not found");
            }

            // Now check for headers

            var fileName = Path.Combine(Settings.Default.OutputPath, Path.ChangeExtension(txId, fileData.Extension));

            File.Delete(fileName);
            File.WriteAllBytes(fileName, fileData.Data);

            _messages.Add($"File saved to {fileName}");

            _messages.AddCompletion();
        }
        public async Task Search(int start, int stop)
        {
            _messages.AddHeading("Searching for Known Extensions");

            for (var blockNumber = start; blockNumber <= stop; blockNumber++)
            {
                var fileName = Path.Combine(Settings.Default.InputPath, $"blk{blockNumber:D5}.dat");

                _messages.Add($"File: {Path.GetFileNameWithoutExtension(fileName)}", MessageType.Heading);

                if (Path.GetFileName(fileName) == "blk00000.dat")
                {
                    continue;
                }

                Blocks.ClearAll();
                await Blocks.Add(fileName);

                foreach (var block in Blocks)
                {
                    if (_messages.Cancel)
                    {
                        break;
                    }

                    foreach (var transaction in block.Transactions)
                    {
                        if (_messages.Cancel)
                        {
                            break;
                        }

                        var fileData = Blocks.GetFile(transaction.ToString());

                        if (fileData == null)
                        {
                            continue;
                        }

                        var message = $"{fileData.Extension}: {transaction}";

                        switch (fileData.Extension)
                        {
                        case "dat":
                            break;

                        case "gif":
                        case "jpg":
                        case "png":
                            var data = transaction.Outs.GetFileBytes();

                            try{
                                var imageSource = GetImageSource(data);
                                _messages.Add(message, imageSource);
                            }
                            catch {
                                _messages.Add(message);
                            }

                            break;

                        case "txt":
                            _messages.Add(message);
                            _messages.Add(Encoding.ASCII.GetString(fileData.Data));
                            break;

                        default:
                            _messages.Add(message);
                            break;
                        }
                    }
                }
            }

            _messages.AddCompletion();
        }