Читать книгу Дедукция по коду (Дмитрий Вектор) онлайн бесплатно на Bookz (2-ая страница книги)
bannerbanner
Дедукция по коду
Дедукция по коду
Оценить:

0

Полная версия:

Дедукция по коду

– Хороший вопрос. Если местная, то наверняка кто-то ее знает. Если приезжая, то зачем ей брать чужого кота?

Фрау Кляйн растерянно молчала.

– Не волнуйтесь, – успокоил ее Томас. – У меня есть план.

После ухода клиентки он открыл новый документ и начал создавать то, что назвал "Алгоритмом поиска кота Шрёдингера". На первый взгляд это выглядело абсурдно – применять методы программирования к поиску домашнего животного – но логика подсказывала, что система должна работать.

– Объект поиска: рыжий кот, кличка Шрёдингер.

– Последнее местонахождение: двор дома фрау Кляйн.

– Время исчезновения: вторник, утром.

– Субъект, взявший кота: женщина в синем платье, средних лет.

– Направление движения: к автобусной остановке.

– Женщина взяла кота, считая его бездомным.

– Это говорит о заботливости к животным.

– Вероятно, у нее уже есть домашние животные.

– Или она активист по защите прав животных.

– Радиус поиска: 5 км от автобусной остановки.

– Приоритетные зоны: ветклиники, зоомагазины, приюты.

– Вторичные зоны: парки, районы с развитой инфраструктурой для животных.

Томас распечатал карту района и начал отмечать все релевантные точки. Получилась сетка из примерно тридцати локаций, которые нужно проверить.

– Методичность – наше все, – пробормотал он, складывая карту.

Первая остановка – зоомагазин "Alles für Tiere" в двух кварталах от автобусной остановки. Молодой продавец с множеством татуировок внимательно изучил фотографию Шрёдингера.

– Нет, такого не видел. Но подождите – Он вдруг оживился. – А вы случайно не ищете женщину в синем платье?

Сердце Томаса подпрыгнуло.

– Да! Вы ее знаете?

– Она приходила сюда два дня назад. Покупала корм для кота и переноску. Сказала, что подобрала бездомного котика.

– Можете ее описать?

– Лет сорока, темные волосы собраны в хвост. Очень переживала за кота. Спрашивала, какой корм лучше для стрессовых ситуаций.

– Она местная?

– Не думаю. Расплачивалась картой из другого банка. И еще спрашивала дорогу к ветеринару.

– К какому?

– К доктору Штайнеру на Кастаниналлее.

Томас почувствовал азарт охотника. След становился горячее.

Клиника доктора Штайнера была небольшой, но современной. Администратор, полная женщина средних лет, сразу узнала описание.

– Ах да, фрау как же ее звали Мария, кажется. Приводила рыжего кота на осмотр.

– И что с котом?

– Доктор сказал, что он здоров, но сильно стрессовал. Порекомендовал несколько дней покоя и хороший корм.

– А где она живет?

– К сожалению, такую информацию мы не можем предоставить. Врачебная тайна.

Томас попытался еще несколько подходов, но администратор была непреклонна. Тогда он решил применить более творческий подход.

– Хорошо. А можете передать ей сообщение от владельца кота? Он очень переживает.

– Конечно.

Томас написал записку: "Уважаемая фрау Мария! Шрёдингер – не бездомный кот, у него есть любящая хозяйка фрау Кляйн. Она очень переживает за него. Если у вас есть возможность, пожалуйста, свяжитесь со мной. Томас Мюллер, частный детектив." И оставил свой номер телефона.

– Передайте, пожалуйста, когда она придет.

– Обязательно.

На обратном пути в кафе телефон зазвонил. Неизвестный номер.

– Алло? Это Томас Мюллер?

– Да.

– Это Мария Шмидт. Мне передали вашу записку – Голос женщины звучал встревоженно. – Этот кот действительно не бездомный?

– Нет, у него есть хозяйка. Она его очень любит и ищет уже четыре дня.

Пауза.

– Боже мой Я думала, он потерялся. Он выглядел таким голодным и напуганным.

– Где вы сейчас? Можем встретиться?

– Я я живу в Кройцберге. Кот у меня дома.

– Отлично. Можете привезти его к ветеринару, где мы и встретимся?

– Хорошо. Буду через час.

Томас тут же позвонил фрау Кляйн.

– Я нашел Шрёдингера! Он здоров и скоро будет дома.

На другом конце провода раздался радостный всхлип.

– Правда? Где он был?

– Расскажу при встрече. Приезжайте к клинике доктора Штайнера на Кастаниналлее.

Встреча в ветклинике напоминала сцену из мелодрамы. Мария Шмидт оказалась именно такой, как ее описывали – женщиной средних лет в том самом синем платье, с добрыми, но виноватыми глазами. Шрёдингер сидел в переноске и жалобно мяукал.

– Простите меня, пожалуйста, – сказала Мария, передавая переноску фрау Кляйн. – Я действительно думала, что он бездомный. Он сидел во дворе, выглядел потерянным.

– Все в порядке, – успокоила ее фрау Кляйн, доставая кота из переноски. – Главное, что он цел.

Шрёдингер мурлыкал и терся о руки хозяйки.

– Как вы его нашли? – спросила Мария у Томаса.

– Применил программистский подход к поиску. Составил алгоритм, проанализировал вероятности, проследил маршрут.

– Как в компьютерной игре?

– Скорее как отладка программы. Нужно проверить каждую строчку кода, пока не найдешь ошибку.

Фрау Кляйн расплатилась с Томасом – пятьдесят евро за два дня работы плюс расходы – и еще раз поблагодарила. Мария извинялась и обещала впредь быть внимательнее с чужими животными.

– Мой первый раскрытый случай, – довольно сказал Томас кактусу, вернувшись домой. – Алгоритмический подход работает и в реальном мире.

Но радоваться было рано. На столе лежали банковские документы Лукаса, и второе дело требовало внимания.

Томас снова сел за анализ финансовых операций. Паттерн стал еще более очевидным после дополнительных данных, которые прислал Лукас. Кто-то систематически снимал деньги, используя корпоративные карты, но делал это умно – небольшими суммами, в разное время, создавая видимость случайных трат.

Он построил график активности по дням недели и часам. Получилась интересная картина: большинство операций приходилось на время, когда в офисе находились все трое подозреваемых, но некоторые транзакции происходили поздно вечером или рано утром.

– Кто-то работает сверхурочно, – пробормотал Томас.

Он создал отдельную таблицу для операций вне рабочего времени. Их было немного, но они показывали интересный паттерн: кто-то регулярно использовал корпоративную карту в одном и том же месте – заправочной станции рядом с офисом.

Томас открыл Google Maps и изучил расположение заправки. Оттуда было два основных маршрута – один к дому Лукаса, другой к дому Стефана. Клаус жил в противоположном направлении.

– Интересно, – пробормотал он. – Либо Лукас тратит деньги собственной компании, либо Стефан.

Нужно было больше информации о личной жизни обоих подозреваемых. Томас снова обратился к социальным сетям.

Профиль Лукаса в Instagram показывал умеренный образ жизни – редкие фотографии с друзьями, несколько снимков с корпоративных мероприятий, ничего кричащего о больших тратах.

Стефан был полной противоположностью. Его лента пестрела фотографиями дорогих ресторанов, ночных клубов, новой BMW, отпуска в Швейцарии. Для совладельца стартапа, который только начал приносить прибыль, образ жизни выглядел слишком роскошным.

– Либо у него есть другие источники дохода, либо он тратит деньги компании, – рассуждал Томас.

Он составил план проверки. Завтра нужно поехать на ту самую заправку и поговорить с персоналом. Возможно, они помнят постоянного клиента с корпоративной картой.

Вечером Томас решил прогуляться по Берлину, чтобы очистить голову после насыщенного дня. Поиск кота оказался проще, чем ожидалось – простая логистическая задача с четкими параметрами поиска. А вот финансовое расследование требовало более тонкого подхода.

Он шел по Унтер-ден-Линден, наблюдая за вечерней суетой города. Туристы фотографировались у Бранденбургских ворот, офисные работники спешили домой, уличные музыканты играли для редких прохожих.

У одного из музыкантов – молодого парня с гитарой – собралась небольшая толпа. Он играл что-то мелодичное и грустное, а в открытом футляре лежали монеты и несколько банкнот.

Томас остановился послушать. Музыка помогала думать.

– Хорошо играете, – сказал он, бросив в футляр пару евро.

– Спасибо. – Музыкант был примерно его ровесником, с добрыми глазами и небрежно заплетенными дредами. – Вы выглядите задумчивым.

– Сложный день на работе.

– А кем работаете?

– Частный детектив.

Музыкант засмеялся.

– Серьезно? Как в фильмах?

– Скорее как в IT, только вместо багов ищу людей и разгадываю их мотивы.

– Звучит интересно. Меня, кстати, Олаф зовут.

– Томас.

Они разговорились. Олаф оказался философом по образованию, который выбрал жизнь уличного музыканта как форму свободы от корпоративного мира. Он много наблюдал за людьми и удивительно точно их понимал.

– Знаете, в чем ваша проблема? – сказал Олаф после того, как Томас рассказал ему о финансовом расследовании. – Вы ищете логику там, где ее может не быть.

– То есть?

– Люди не всегда действуют рационально. Иногда они крадут не из-за денег, а из-за обиды, ревности, желания доказать что-то себе или другим.

Томас задумался. В программировании все подчиняется логике – каждая команда выполняется в строгом порядке. Но человеческое поведение может быть непредсказуемым.

– А как понять мотив, если логика не помогает?

– Поговорить с людьми. Настоящий разговор, не допрос. Узнать, что их волнует, чего они боятся, о чем мечтают.

– Звучит сложно.

– Все сложно, пока не научишься. Как игра на гитаре.

Томас поблагодарил Олафа за беседу и отправился домой. Слова уличного музыканта заставили его пересмотреть подход к расследованию. Может быть, стоит меньше времени тратить на анализ данных и больше – на общение с людьми.

Дома он еще раз просмотрел материалы дела. Завтра планировал встретиться с каждым из подозреваемых не как детектив, а как заинтересованный консультант. Посмотреть на их реакции, послушать, как они говорят о деньгах и компании.

– Человеческий фактор, – пробормотал он кактусу. – Самая сложная переменная в любом уравнении.

Кактус молчал, но Томасу показалось, что его колючки наклонены одобрительно.

За окном шумел вечерний Берлин, полный тайн и загадок. Но теперь Томас знал: любую загадку можно решить, если правильно подойти к ее анализу. Нужно только понять, что иногда самые абсурдные методы приводят к самым точным результатам.

Первое дело было раскрыто, второе в процессе. Жизнь частного детектива оказалась интереснее, чем он мог представить.

Глава 4: Баг в матрице.

Томас проснулся с ощущением, что его мозг всю ночь продолжал работать над финансовым делом Лукаса. Во сне он видел бесконечные таблицы Excel, которые трансформировались в лабиринты из цифр, а в центре лабиринта сидел кот Шрёдингер и подмигивал ему, словно знал ответ на все вопросы.

– Доброе утро, коллега, – обратился он к кактусу, наливая кофе. – Сегодня ловим финансового вора.

План дня был четким:

1. Поехать на заправку, где совершались подозрительные операции.

2. Встретиться с каждым подозреваемым отдельно.

3. Провести более глубокий анализ финансовых данных.

4. Найти связь между фактами.

Заправочная станция "Shell" на Фридрихштрассе работала круглосуточно. Томас приехал туда к восьми утра, когда начиналась смена персонала. Утренний кассир, молодая девушка по имени Петра, оказалась на удивление наблюдательной.

– Корпоративная карта "FoodDelivery Solutions"? – переспросила она, изучив распечатку операций. – Конечно помню! Этот клиент приезжает регулярно.

– Можете его описать?

– Молодой парень, лет тридцати. Всегда на BMW, серебристой. Обычно заправляется поздно вечером или рано утром. Покупает премиальный бензин и всегда берет кофе и сэндвич.

– А как часто он приезжает?

– Раза два в неделю. Иногда чаще. Очень вежливый, всегда оставляет чаевые.

Томас показал ей фотографии Лукаса и Стефана из соцсетей.

– Вот он! – Петра сразу указала на Стефана. – Точно помню эту улыбку.

Первая зацепка. Стефан регулярно заправляется за счет компании, причем делает это в нерабочее время. Либо у него есть на это право, либо он скрывает эти траты от партнера.

– А вы случайно не помните, платил ли он за бензин для других машин?

– Как это?

– Ну, заправлял не только свою BMW, но и другие автомобили.

Петра задумалась.

– Вы знаете да! Пару раз он приезжал с девушкой на красном Mini Cooper. Заправлял обе машины одной картой.

Интересно. Томас записал эту информацию. Стефан не только тратит корпоративные деньги на себя, но и на свою девушку.

Следующая остановка – офис "FoodDelivery Solutions" в районе Митте. Лукас встретил его с надеждой.

– Есть новости?

– Работаю над этим. Мне нужно поговорить с вашими партнерами. Можете организовать встречи?

– Конечно. Клаус сейчас в офисе, Стефан приедет после обеда.

Офис стартапа располагался в бывшем промышленном здании, переделанном под IT-центр. Открытое пространство, стеклянные перегородки, несколько рабочих мест с мониторами – типичная атмосфера молодой технологической компании.

Клаус Беккер работал за угловым столом, окруженный распечатками финансовых отчетов. Мужчина выглядел усталым и напряженным.

– Вы частный детектив? – удивился он, когда Лукас представил Томаса. – Серьезно? Я думал, такие остались только в кино.

– Современные детективы больше работают с данными, чем с увеличительными стеклами, – улыбнулся Томас. – Можно задать вам несколько вопросов о финансах компании?

– Конечно, но я не понимаю, зачем нужен детектив. Обычная ошибка в банковских операциях.

– Лукас считает, что деньги исчезают слишком системно для обычной ошибки.

Клаус пожал плечами.

– Могу показать все документы. У нас полная прозрачность.

Следующие полчаса Томас изучал документооборот компании. Клаус действительно ведел учет очень аккуратно – каждая операция документирована, каждый расход обоснован. Но именно эта педантичность заставила Томаса насторожиться.

– А кто имеет доступ к корпоративным картам? – спросил он.

– Официально – все трое. Но я использую только одну, для офисных расходов. Лукас – свою, для деловых встреч. Стефан – свою, для – Клаус замялся.

– Для чего?

– Ну, Стефан отвечает за PR и маркетинг. Иногда нужно развлекать потенциальных инвесторов, клиентов.

– Понятно. А вы знаете, что он заправляется за счет компании почти каждый день?

Лицо Клауса изменилось.

– Каждый день? Но это же сколько это стоит?

Томас показал ему распечатку операций на заправке.

– За последний месяц около восьмисот евро только на бензин.

– Восемьсот евро? – Клаус побледнел. – Но наш бюджет на транспортные расходы всего триста евро в месяц!

– Получается, Стефан превышает бюджет без согласования?

– Если эти цифры верны, то да.

Томас увидел, как в глазах Клауса появляется подозрение. Финансовый директор явно не знал о масштабах трат своего коллеги.

– А в ресторанах и клубах он тоже бывает за счет компании?

Клаус молча кивнул, изучая документы.

– Боже мой Вот откуда берутся наши убытки.

После разговора с Клаусом Томас решил прогуляться по городу, чтобы обдумать полученную информацию. Картина становилась яснее: Стефан систематически тратит корпоративные деньги на личные нужды, а Клаус и Лукас об этом не знают.

Но что-то в этой схеме казалось слишком простым. Неужели совладелец компании настолько наивен, что думает, будто его траты останутся незамеченными? Или он рассчитывает на что-то еще?

Размышления прервал телефонный звонок. Незнакомый номер.

– Томас Мюллер слушает.

– Здравствуйте! Это Анна Хоффман, мы вчера встречались по поводу кота. Помните?

– Конечно. Что-то случилось?

– Нет, все хорошо. Просто мой сын все время спрашивает про детектива. Можно встретиться? Он хочет узнать, как работают настоящие сыщики.

Томас улыбнулся. Детское любопытство было именно тем, что ему сейчас не хватало в работе.

– Конечно. Я как раз неподалеку от вас.

Они встретились в том же кафе "Zur Alten Eiche", где теперь находился неофициальный офис Томаса. Маленький Лукас Хоффман смотрел на него широко раскрытыми глазами.

– А вы настоящий детектив? – спросил мальчик.

– Настоящий.

– А у вас есть пистолет?

– Нет, – засмеялся Томас. – Я использую более мощное оружие.

– Какое?

– Логику.

Мальчик выглядел разочарованным.

– А как ловить преступников без пистолета?

– Смотри, – Томас открыл ноутбук. – Допустим, кто-то крадет деньги из банка. Как думаешь, что важнее – бегать за вором с пистолетом или понять, как он совершает кражи?

– Понять как, – неуверенно ответил мальчик.

– Правильно! Если ты понимаешь, как работает вор, ты можешь его поймать. А если просто бегаешь с пистолетом, он убежит и будет красть дальше.

Анна внимательно слушала их разговор.

– А у вас сейчас есть дело? – спросила она.

– Да. Кто-то крадет деньги из компании.

– И вы уже знаете кто?

– Подозреваю. Но нужны доказательства.

– А как их найти?

Томас задумался. Хороший вопрос. В программировании ты можешь поставить точку останова и посмотреть, что происходит с данными в каждый момент времени. Но в реальной жизни такой возможности нет.

– Нужно создать ситуацию, в которой вор проявит себя, – сказал он.

– Как ловушку?

– Именно.

После встречи с Анной и маленьким Лукасом Томас вернулся в офис "FoodDelivery Solutions". Стефан уже был на месте – высокий блондин в дорогой рубашке, с идеальной улыбкой и уверенными манерами.

– Вы детектив? – удивился он, пожимая руку Томасу. – Круто! Как в «Шерлоке»!

– Скорее как в IT-поддержке, – ответил Томас. – Ищу баги в системе.

– А какие баги у нас могут быть? – засмеялся Стефан.

– Финансовые. Деньги исчезают, и никто не знает почему.

– Ах да, Лукас упоминал. Наверное, проблемы с банковской системой. У меня недавно карта глючила.

Томас внимательно наблюдал за реакцией Стефана. Никаких признаков нервозности, полная открытость. Либо он действительно ни при чем, либо очень хорошо умеет скрывать эмоции.

– А можете рассказать о ваших тратах за последний месяц?

– Конечно! У меня все честно. Деловые встречи, презентации, иногда нужно инвесторов в ресторан сводить.

– А заправки каждый день?

– Ну да, я много езжу. Встречи с клиентами, поставщиками.

– На BMW?

– Конечно. Имидж важен в нашем бизнесе.

– А красный Mini Cooper – тоже для деловых встреч?

Впервые за разговор Стефан замялся.

– Простите?

– Вы заправляли красный Mini Cooper корпоративной картой. Это тоже деловые расходы?

– А это – Стефан потер затылок. – Это машина моей девушки. Иногда мы ездим на встречи вместе.

– Понятно. А она работает в компании?

– Нет, но ну, вы же понимаете.

Томас кивнул, делая заметки. Первая трещина в безупречном фасаде.

– А в каких ресторанах проходят ваши деловые встречи?

– По-разному. "Berliner Republik", "Hackescher Hof"

Томас узнал названия – это дорогие заведения в центре Берлина.

– И с кем встречались, например, на прошлой неделе?

– Эм С представителем инвестиционного фонда. Хансом Хансом Мюллером.

– Можете дать его контакты? Для подтверждения расходов.

– Конечно, но у меня их сейчас нет под рукой. Пришлю позже.

Томас был почти уверен, что никаких контактов он не получит. Ганс Мюллер – слишком распространенное имя, чтобы быть правдой.

После разговора со Стефаном он остался в офисе еще на час, анализируя полученную информацию. Картина становилась яснее:

1. Стефан систематически тратит корпоративные деньги на личные нужды.

2. Он пытается выдать это за деловые расходы.

3. Клаус и Лукас не контролируют его траты.

4. Стефан не ожидал, что кто-то будет детально анализировать финансы.

Но все еще оставался главный вопрос: почему Стефан думал, что это сойдет ему с рук?

Вечером Томас сидел дома, составляя подробный отчет по делу. На столе лежали распечатки банковских операций, фотографии чеков, записи разговоров со свидетелями. Все указывало на вину Стефана, но что-то не давало покоя.

– В чем проблема? – спросил он кактуса.

Кактус молчал, но Томас вдруг понял, что именно его беспокоило. Слишком просто. Слишком очевидно. Как будто кто-то хотел, чтобы подозрения пали именно на Стефана.

Он снова открыл банковские выписки и начал анализировать их с другой стороны. А что, если кто-то использует карту Стефана без его ведома? Что, если настоящий вор намеренно создает след, ведущий к партнеру?

Томас построил новый график – не по времени операций, а по их типу. Получилась интересная картина: крупные траты в ресторанах и заправки действительно могли быть работой Стефана. Но мелкие регулярные списания, те самые, с которых все началось, имели другой характер.

Они были слишком маленькими, слишком регулярными, слишком незаметными. Как будто кто-то тестировал систему, проверял, заметит ли кто-нибудь исчезновение небольших сумм.

– Два разных паттерна, – пробормотал Томас. – Два разных вора.

Он открыл календарь и сопоставил даты мелких списаний с рабочим графиком офиса. Большинство операций происходило в те дни, когда в офисе находился только один человек – Клаус.

Томас почувствовал, как в голове загорается лампочка. Клаус. Педантичный, аккуратный Клаус, который ведет безупречную отчетность и возмущается тратами коллег. А что, если именно эта безупречность – прикрытие?

Он вспомнил реакцию Клауса на информацию о тратах Стефана. Слишком театрально. Слишком эмоционально для человека, который должен был знать о всех финансовых операциях компании.

– Классическая схема, – сказал Томас кактусу. – Отвлечь внимание от себя, переключив его на коллегу.

Но это была только теория. Нужны были доказательства.

Томас создал новую таблицу, отделив крупные траты Стефана от мелких систематических списаний. Паттерн стал очевиден: мелкие кражи происходили только в присутствии Клауса, а крупные траты – только когда в офисе был Стефан.

– Два преступления, два преступника, – пробормотал он.

Стефан действительно тратил корпоративные деньги на личные нужды, но в рамках своих полномочий совладельца. Неэтично, но не криминально.

А Клаус совершал настоящие кражи – небольшие, но систематические. И когда Лукас начал подозревать неладное, Клаус решил переключить внимание на более очевидного подозреваемого.

Теперь оставалось это доказать.

Томас подумал о словах уличного музыканта Олафа: иногда люди действуют не из логических побуждений, а из эмоциональных. Что могло заставить респектабельного финансиста красть у собственной компании?

Он снова изучил профиль Клауса в социальных сетях. Ничего подозрительного – редкие фотографии, консервативные посты, никаких признаков роскошной жизни.

Но может быть, дело не в роскоши?

Томас решил покопаться глубже. Поиск по имени и фамилии в новостных сводках дал неожиданный результат: три месяца назад Клаус Беккер подавал заявление о разводе. Развод часто означает раздел имущества, алименты, юридические расходы.

– Вот оно, – прошептал Томас.

Он нашел несколько публичных документов судебного процесса. Жена Клауса требовала алименты в размере 2000 евро в месяц плюс половину совместно нажитого имущества. Для человека с зарплатой финансового директора стартапа это были серьезные деньги.

Мотив найден. Клаус крал небольшие суммы, чтобы покрыть расходы на развод, а когда кражи стали заметны, решил подставить Стефана.

Но доказать это будет непросто. Нужна была ловушка.

Томас вспомнил совет маленького Лукаса Хоффмана: создать ситуацию, в которой вор проявит себя.

Он открыл новый документ и начал составлять план операции под кодовым названием "Отладка системы".

За окном наступила ночь, но Томас продолжал работать. Завтра предстояло поймать не одного, а двух воров. И сделать это нужно было так, чтобы никто не смог отрицать очевидное.

– Завтра будет интересный день, – сказал он кактусу.

Глава 5: Человеческий фактор.

Томас проснулся с ощущением, что его план "Отладка системы" может сработать, но для этого нужно действовать очень осторожно. В программировании одна неточность может обрушить всю систему, а в детективной работе одна ошибка может предупредить преступников и лишить его всех доказательств.

За завтраком он еще раз проработал детали плана. Нужно было заставить и Стефана, и Клауса проявить себя в контролируемых условиях, чтобы получить неопровержимые доказательства их вины.

– Сегодня ловим сразу двух рыбок, – сказал он кактусу, допивая кофе.

Первым делом Томас позвонил Лукасу.

– Мне нужна ваша помощь, – сказал он. – Я почти раскрыл дело, но для окончательных доказательств нужно провести небольшую операцию.

bannerbanner