07 Декабря 2023
18

Чебурашка и крокодил глазами Dall-E 3

Что если попытаться сгенерить Чебурашку и крокодила Гену нейросетью, но она вообще не имеет представления, кто это такие? То есть, у нее есть визуальные референсы на диснеевского Винни-Пуха или там на ежика Соника, но тут она может только опираться на словесное описание. Вот что получилось.

Пром был такой, с небольшими вариациями:

"кадр из винтажного рисованного мультфильма 1970-х, добрый крокодил в шляпе с полями и пальто и башмаках и маленькое милое коричневое существо с огромными круглыми ушами и круглым улыбающимся лицом сидят на скамейке"

Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост

И рисованные варианты, местами с переведенным на английский промтом, местами "в стиле Disney" или Hanna-Barbera вместо "советского":

Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Чебурашка и крокодил глазами  Dall-E 3 Арты нейросетей, Нейронные сети, Арт, Мультфильмы, Чебурашка, Гена и Чебурашка, Длиннопост
Показать полностью 11
4

Снова стрельба, но уже в школе

Сегодня утром восьмиклассница 5 гимназии Брянска открыла огонь именно по мальчикам-одноклассникам, девочки не пострадали.
Сама же она похоже застрелилась.
Оружие из которого она стреляла, она взяла у отца.
Предположительно это произошло из за конфликта с одноклассниками.
4 мальчика были ранены и 2 убиты, врачи борятся за жизнь одного из потерпевших.

Снова стрельба, но уже в школе Негатив, Трагедия, Убийство, Преступление, Криминал, Школа, Стрельба, Стрельба в школе, Длиннопост, Telegram (ссылка)
Снова стрельба, но уже в школе Негатив, Трагедия, Убийство, Преступление, Криминал, Школа, Стрельба, Стрельба в школе, Длиннопост, Telegram (ссылка)

Источник - https://t.me/theironsenator/666

Показать полностью 2
4

Создание майнера данных

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

ИНФОРМАЦИЯ ИСКЛЮЧИТЕЛЬНО ДЛЯ ОЗНАКОМЛЕНИЯ!!


В этой статье мы создадим инструмент, проверяющий схему базы данных (например, имена столбцов) в поиске ценной информации. Допустим, нам нужно найти пароли, хеши, номера социального страхования и кредитных карт. Вместо написания единой утилиты, добывающей информацию из различных БД, мы создадим раздельные программы — по одной для каждой БД — и задействуем конкретный интерфейс, обеспечивая согласованность между их реализациями. Такая гибкость может оказаться излишней для данного примера, но она дает возможность создать переносимый код, который можно использовать повторно.

Интерфейс должен быть минимальным, то есть состоять из нескольких базовых типов и функций, требуя реализации всего одного метода для извлечения схемы базы данных. В коде ниже определяется именно такой интерфейс майнера с названием 𝗱𝗯𝗺𝗶𝗻𝗲𝗿.𝗴𝗼.

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

Реализация майнера данных /db/dbminer/dbminer.go

Код начинается с определения интерфейса DatabaseMiner. Для реализующих этот интерфейс типов будет требоваться один-единственный метод — GetSchema(). Поскольку каждая серверная база данных может иметь собственную логику для извлечения данной схемы, подразумевается, что каждая конкретная утилита сможет реализовать эту логику уникальным для используемых БД и драйвера способом.

Далее мы определяем тип 𝗦𝗰𝗵𝗲𝗺𝗮, состоящий из нескольких подтипов, которые определены здесь же. Тип 𝗦𝗰𝗵𝗲𝗺𝗮 задействуется для логического представления схемы БД, то есть баз данных, таблиц и столбцов. Вы могли обратить внимание на то, что функция 𝗚𝗲𝘁𝗦𝗰𝗵𝗲𝗺𝗮() в определении интерфейса ожидает, что реализации вернут *𝗦𝗰𝗵𝗲𝗺𝗮.

Далее идет определение одной функции 𝗦𝗲𝗮𝗿𝗰𝗵() с объемной логикой. Эта функция ожидает передачи экземпляра 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲𝗠𝗶𝗻𝗲𝗿 и сохраняет значение майнера в переменной 𝗺. Начинается она с вызова 𝗺.𝗚𝗲𝘁𝗦𝗰𝗵𝗲𝗺𝗮() для извлечения схемы. Затем функция перебирает всю эту схему в поиске списка соответствующих значений регулярному выражению (𝗿𝗲𝗴𝗲𝘅). При нахождении соответствий схема базы данных и совпадающие поля выводятся на экран.

В завершение мы определяем функцию 𝗴𝗲𝘁𝗥𝗲𝗴𝗲𝘅(). Она компилирует строки регулярных выражений с помощью пакета 𝗚𝗼 𝗿𝗲𝗴𝗲𝘅𝗽 и возвращает срез их значений. Список 𝗿𝗲𝗴𝗲𝘅 состоит из нечувствительных к регистру строк, которые сопоставляются со стандартными или интересующими нас именами полей, например 𝗰𝗰𝗻𝘂𝗺, 𝘀𝘀𝗻 и 𝗽𝗮𝘀𝘀𝘄𝗼𝗿𝗱.

Теперь, имея в распоряжении интерфейс добытчика, можно создать особые реализации утилит. Начнем с добытчика данных из 𝗠𝗼𝗻𝗴𝗼𝗗𝗕.



Реализация майнера данных из MongoDB:


Утилита для работы с MongoDB, показанная в коде ниже, реализует интерфейс из кода Реализации майнера данных, а также интегрирует код подключения к базе данных, который я написал в предыдущем посте (Подключение к базе данных MongoDB).

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

Создание майнера для MongoDB /db/mongo/main.go

Вначале мы импортируем пакет 𝗱𝗯𝗺𝗶𝗻𝗲𝗿, определяющий интерфейс 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲𝗠𝗶𝗻𝗲𝗿. Затем прописываем тип 𝗠𝗼𝗻𝗴𝗼𝗠𝗶𝗻𝗲𝗿, который будет использоваться для реализации этого интерфейса. Для удобства также реализуется функция 𝗡𝗲𝘄(), создающая новый экземпляр типа 𝗠𝗼𝗻𝗴𝗼𝗠𝗶𝗻𝗲𝗿, вызывая метод 𝗰𝗼𝗻𝗻𝗲𝗰𝘁(), который устанавливает подключение к базе данных. В совокупности эта логика производит начальную загрузку кода, выполняя подключение к базе данных аналогичным рассмотренному в листинге 𝟳.𝟲 способом.

Самая интересная часть кода содержится в реализации метода интерфейса 𝗚𝗲𝘁𝗦𝗰𝗵𝗲𝗺𝗮(). В отличие от примера кода 𝗠𝗼𝗻𝗴𝗼𝗗𝗕 из кода (Предыдущий Пост) Подключение к базе данных MongoDB и запрос данных , теперь мы проверяем метаданные 𝗠𝗼𝗻𝗴𝗼𝗗𝗕, сначала извлекая имена баз данных, а затем перебирая эти базы данных для получения имен коллекции каждой. В завершение эта функция получает сырой документ, который, в отличие от типичного запроса 𝗠𝗼𝗻𝗴𝗼𝗗𝗕, использует отложенный демаршалинг. Это позволяет явно демаршалировать запись в общую структуру и проверить имена полей. Если бы не возможность такого отложенного демаршалинга, пришлось бы определять явный тип, скорее всего, использующий атрибуты тега 𝗯𝘀𝗼𝗻, инструктируя программу о порядке демаршалинга данных в определенную нами структуру. В этом случае мы не знаем о типах полей или структуре (или нам все равно), нам просто нужны имена полей (не данные) — именно так можно демаршалировать структурированные данные, не зная структуры заранее.

Функция 𝗺𝗮𝗶𝗻() ожидает 𝗜𝗣-адрес экземпляра 𝗠𝗼𝗻𝗴𝗼𝗗𝗕 в качестве единственного аргумента, вызывает функцию 𝗡𝗲𝘄() для начальной загрузки всего, после чего вызывает 𝗱𝗯𝗺𝗶𝗻𝗲𝗿.𝗦𝗲𝗮𝗿𝗰𝗵(), передавая ему экземпляр 𝗠𝗼𝗻𝗴𝗼𝗠𝗶𝗻𝗲𝗿. Напомним, что 𝗱𝗯𝗺𝗶𝗻𝗲𝗿.𝗦𝗲𝗮𝗿𝗰𝗵() вызывает 𝗚𝗲𝘁𝗦𝗰𝗵𝗲𝗺𝗮() в полученном экземпляре 𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲𝗠𝗶𝗻𝗲𝗿. Таким образом происходит вызов реализации функции 𝗠𝗼𝗻𝗴𝗼𝗠𝗶𝗻𝗲𝗿, что приводит к созданию 𝗱𝗯𝗺𝗶𝗻𝗲𝗿.𝗦𝗰𝗵𝗲𝗺𝗮, которая затем просматривается на соответствие списку 𝗿𝗲𝗴𝗲𝘅 из кода Реализация майнера данных.

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

Совпадение найдено! Выглядит она не очень аккуратно, но работу выполняет исправно — успешно обнаруживает коллекцию базы данных, содержащую поле ccnum.

Разобравшись с реализацией для MongoDB, в следующем разделе сделаем то же самое для серверной базы данных MySQL.



Реализация майнера для MySQL




Чтобы реализация 𝗠𝘆𝗦𝗤𝗟 заработала, мы будем проверять таблицу 𝗶𝗻𝗳𝗼𝗿𝗺𝗮𝘁𝗶𝗼𝗻_𝘀𝗰𝗵𝗲𝗺𝗮.𝗰𝗼𝗹𝘂𝗺𝗻𝘀. Она содержит метаданные обо всех базах данных и их структурах, включая таблицы и имена столбцов. Чтобы максимально упростить потребление данных, используйте приведенный далее 𝗦𝗤𝗟-запрос. Он удалит информацию о некоторых из встроенных БД 𝗠𝘆𝗦𝗤𝗟, не имеющих для нас значения:

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

В результате данного запроса вы получите примерно такие результаты:

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

Несмотря на то что использовать этот запрос для извлечения информации схемы довольно просто, сложность кода обусловливается стремлением логически дифференцировать и категоризировать каждую строку при определении функции GetSchema(). Например, последовательные строки вывода могут принадлежать или не принадлежать одной базе данных/таблице, поэтому ассоциирование строк с правильными экземплярами dbminer.Database и dbminer.Table становится несколько запутанным.

В коде снизу показана реализация:

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

Создание майнера для MySQL /db/mysql/main.go/

Бегло просмотрев код, вы можете заметить, что большая его часть очень похожа на пример для MongoDB из предыдущего раздела. В частности, идентична функция main().

Функции начальной загрузки также очень похожи — изменяется лишь логика на взаимодействие с MySQL, а не MongoDB. Обратите внимание на то, что эта логика подключается к базе данных information.schema, позволяя проинспектировать схему базы данных.

Основная сложность этого кода заключена в реализации 𝗚𝗲𝘁𝗦𝗰𝗵𝗲𝗺𝗮(). Несмотря на то что мы можем извлечь информацию схемы, используя один запрос к БД, после приходится перебирать результаты, просматривая каждую строку с целью определения присутствующих баз данных, их таблиц и строк этих таблиц. В отличие от реализации для 𝗠𝗼𝗻𝗴𝗼𝗗𝗕, у нас нет преимущества 𝗝𝗦𝗢𝗡/𝗕𝗦𝗢𝗡 с тегами атрибутов для маршалинга и демаршалинга данных в сложные структуры. Мы используем переменные для отслеживания информации в текущей строке и сравниваем ее с данными из предыдущей строки, чтобы понять, когда встретим новую базу данных или таблицу. Не самое изящное решение, но с задачей справляется.

Далее идет проверка соответствия имен баз данных текущей и предыдущей строк. Если они совпадают, создается новый экземпляр 𝗺𝗶𝗻𝗲𝗿.𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲. Если это не первая итерация цикла, таблица и база данных добавляются в экземпляр 𝗺𝗶𝗻𝗲𝗿.𝗦𝗰𝗵𝗲𝗺𝗮. С помощью аналогичной логики мы отслеживаем и добавляем экземпляры 𝗺𝗶𝗻𝗲𝗿.𝗧𝗮𝗯𝗹𝗲 в текущую 𝗺𝗶𝗻𝗲𝗿𝗗𝗮𝘁𝗮𝗯𝗮𝘀𝗲. В завершение каждый столбец добавляется в 𝗺𝗶𝗻𝗲𝗿.𝗧𝗮𝗯𝗹𝗲.

Теперь запустите готовую программу в отношении экземпляра 𝗗𝗼𝗰𝗸𝗲𝗿 𝗠𝘆𝗦𝗤𝗟, чтобы убедиться в корректности ее работы:

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

Вывод должен получиться практически идентичным выводу для 𝗠𝗼𝗻𝗴𝗼𝗗𝗕. Причина в том, что 𝗱𝗯𝗺𝗶𝗻𝗲𝗿.𝗦𝗰𝗵𝗲𝗺𝗮 не производит никакого вывода — это делает функция 𝗱𝗯𝗺𝗶𝗻𝗲𝗿.𝗦𝗲𝗮𝗿𝗰𝗵(). В этом заключается сила интерфейсов. Можно использовать конкретные реализации ключевых возможностей, задействуя при этом одну стандартную функцию для обработки данных прогнозируемым эффективным способом. В следующем разделе мы отойдем от БД и рассмотрим кражу данных из файловых систем.

Получение данных из файловых систем:



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

Данная утилита просматривает именно имена файлов, а не их содержимое. При этом скрипт существенно упрощается тем, что пакет Go path/filepath предоставляет стандартную функциональность, с помощью которой можно эффективно обходить структуру каталогов. Сама утилита приведена в коде ниже.

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

Обход файловой системы /filesystem/main.go

В отличие от реализации майнеров данных из БД, настройка и логика инструмента для кражи информации из файловой системы могут показаться слишком простыми. Аналогично тому, как мы создавали реализации для баз данных, вы определяете список для определения интересующих имен файлов. Чтобы максимально сократить код, мы ограничили этот список всего несколькими элементами, но его вполне можно расширить, чтобы он стал более практичным.

Далее идет определение функции walkFn(), которая принимает путь файла и ряд дополнительных параметров. Эта функция перебирает список регулярных выражений в поиске совпадений, которые выводит в stdout. Функция walkFn() используется в функции main() и передается в качестве параметра в filepath.Walk(). Walk() ожидает два параметра — корневой путь и функцию (в данном случае walkFn()) — и рекурсивно обходит структуру каталогов, начиная с переданного корневого пути и попутно вызывая walkFn() для каждого встречающегося каталога и файла.

Написав утилиту, перейдите на рабочий стол и создайте следующую структуру каталогов:

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

Выполнение утилиты в отношении той же папки targetpath производит следующий вывод, подтверждая, что код работает исправно:

Создание майнера данных Информационная безопасность, Программирование, Интернет, Golang, Взлом, Хакеры, Длиннопост

Вот и все, что касается данной темы. Вы можете улучшить этот образец кода, включив в него дополнительные регулярные выражения. Я также посоветую вам доработать его, применив проверку regex только для имен файлов, но не каталогов. Помимо этого, рекомендую найти и отметить конкретные файлы с недавним временем доступа или внесения изменений. Эти метаданные могут привести к более важному содержимому, включая файлы, используемые в значимых бизнес-процессах.

ССЫЛКА НА ТЕЛЕГРАМ КАНАЛ АВТОРА

Показать полностью 11
6

Cекрет успеха (написано под впечатлением от посещения поэтических салонов Москвы)

Cекрет успеха (написано под впечатлением от посещения поэтических салонов Москвы) Стихи, Лирика, Поэзия, Литература, Современное искусство, Театр, Современность

Вздумаешь только если -

Сможешь ты стать поэтом!

Располагайся в кресле,

Я поделюсь секретом.

Яркий наряд, кричащий,

Лучше, вообще, орущий!

Грим поплотней, почаще.

Волосы чтоб, как кущи!

Лучше вообще прическа,

Будто, гнездо сороки!

Чтоб там терять расчески

В волосяном пороке.

Музыка плотным фоном,

Словно, ведром, по рельсам!

Можно добавить стоны,

Чтобы народ согрелся.

Нужно читать с апломбом!

С понтом, кусая губы!

Чтоб вылетали пломбы.

Чтобы крошились зубы.

В тексте побольше мата.

Лучше, чтоб мат и только.

Дикция «жую вату!»

Темы - сплошная койка.

Можно кричать, кривляться!

Биться башкой о сцену.

Главное, не бояться!

Это поднимет цену.

Если там кровь из уха

Вдруг начала х@рачить!

Это, вообще, везуха.

Это, капец, удача!

Если ты сможешь голым,

Даже, пускай, не сразу!

Ты – основатель школы

Первой такой заразы!

Лучше, чтоб ты не слышал

Блока и Мандельштама,

Чтоб не вскочить в их лыжи,

Не выдавать их штампы!

Кончен концерт! Повисла

Слава твоя в проходе!

Кто-то спросил про смыслы.

Не отвечай – разводят!

Показать полностью 1
1

Прошу помочь советом

Всем привет!
Я на Пикабу с 2013 года, но всегда лишь читал посты, сам не регистрировался, но на днях в моей жизни произошло событие, о котом я и напишу ниже, и мне нужна помощь.
Мне 27 лет, но так вышло что до конца 2022 года у меня ни разу в жизни не было серьезных отношений. Но я ноябре прошлого года в сервисе для знакомств я завел общение с девушкой, пригласил её на свидание, 31 декабря я предложил ей стать парой, и вот мы уже без малого год вместе.
Конечно, у нас бывают мелкие ссоры, которые заканчиваются примирением в течение получаса, но в целом мы живем хорошо, мирно, и я действительно вижу, что человек меня любит, а я люблю ее.
Но недавно я узнал, что примерно 7 месяцев назад моя любимая девушка мне изменила.
Дело было на майские праздники 2022 года, я работал, а она попросила разрешения съездить со своими друзьями на 2 дня в Сочи. Якобы муж ее лучшей подруги едет туда по работе и они зовут мою девушку с собой. У меня тогда на работе были тяжелые времена и я ее сразу об этом предупредил, что денег на отдых сейчас нет, предложил немного подождать и потом съездить вместе, но она сказала, что друзья ей оплатят переезд и проживание. Я очень удивился такой внезапной щедрости, но я считаю и продолжаю считать, что отношения должны строится на доверии и, конечно, разрешил ей поехать.
На тот момент мы были вместе 4 месяца, важно, что тогда в наших отношениях был не лучший период, как я уже отметил, были проблемы с работой, зп сократилось примерно на 15%, девушка работала, но её заработная плата была не большая и зачастую нам хватало денег только на поесть, оплатить кварт.плату и все. Плюс мне нужно было помогать своей маме, которая живет одна и получает небольшую пенсию. Девушку очень нервировало, что от моей и так сократившейся зп нам приходится выделять средства на помощь моей маме и она об этом говорила.
Так вот, моя девушка уехала на Сочи и практически пропала на эти 2 дня. Общение было сведено к минимуму, она могла часами не отвечать на мои сообщения, не отвечать на звонки, когда я дозвонился до подруги, с которой она поехала, та сказал, что моя девушка выпила и спит. В итоге она пару раз вяло ответила мне на сообщения, в конце вечера позвонила, нетрезвым голосом пожелала спокойной ночи и я лег спать. Беспокойство о происходящем уже тогда терзало мою душу, но я старался гнать негативные мысли.
На следующее утро я отправился на работу, моя девушка мне сообщила, что уже в примерно в 10 утра была дома, меня удивило, что она вернулась так рано, но я предвкушал нашу вечернюю встречу, потому что скучал по ней.
И вот, когда я вечером пришел домой, моя девушка печальным голосом сообщила мне, что чувства ко мне у нее закончились, и она предлагает закончить наши отношения. Я пытался узнать реальную причину этого, появился ли у нее кто то, но она говорила, что нет.
В итоге мы сошлись на том, что мы какое то время поживем отдельно, сделаем небольшой перерыв и решим потом, что делать в итоге.
На следующий день девушка собрала вещи, села на такси и уехала к маме. Но однако вечером она написала мне, что не может представить, что будет спать без меня и...вернулась. Перерыв в наших отношениях составил примерно часов 6-8.
Это была предыстория, чтобы Вы понимали контекст ситуации.
Вчера я вынужден был взять телефон своей девушки, чтобы расплатится QR-кодом в магазине, и что то заставило меня зайти в вотс апп и открыть переписку моей девушки с её лучшей подругой. Я всегда был против этого, всегда считал, что у человека должно быть его личное пространство и проверять переписки и т.д. своей половинки это низость, но почему то я решил так поступить.
И в итоге я узнаю, что в Сочи тогда она ездила не только с друзьями, но и с неким парнем, с которым она познакомилась в общей компании, как потом выяснилось именно он ее и пригласил и это было не так, что она мне тупо не огласила весь список отдыхающих, а ехала она конкретно к нему, и как она мне призналась, думала о том, чтобы уйти к нему от меня.
Данный парень снял для себя и для моей девушки один номер, но по словам моей девушки она по итогу отказалась с ним оставаться, и в доказательство того показала переписку со своей лучшей подругой, где моя девушка пишет ей, что оставаться в одном номере со своим новым ухажером не хочет и она уезжает. В итоге по ее словам она в 22:00 покинула гостиницу и была на вокзале до 05:00 утра, пока не приехала электричка, что и стало причиной ее раннего приезда.
Свой поступок она объяснила тем, что на тот момент чувствовала себя в отношениях ущемленной, потому что из за проблем с финансами мы не могли отдыхать, а я еще и отправляю деньги на помощь маме, что жизнь превратилась в рутину, и она боялась повторения своих предыдущих негативных отношений. Говорила, что на тот момент мы встречались не долго и она хотела уйти, чтобы не углублять наши отношения, а вернулась потому что поняла, что любит меня.
И так, в чем собственно нужен совет: по словам девушки интима у них с парнем, что пригласил ее в Сочи, не было, но само собой это известно лишь с ее слов, сейчас же она поняла, насколько я для нее важен, как она меня любит и хочет быть только со мной.
В виду того что я действительно чувствую любовь, заботу и уважение от своей девушки, а её измена произошла довольно давно, я склонен простить ее и дать второй шанс, но меня не покидает ощущение, что тогда у нее просто не получилось построить новые отношения за моей спиной и она вернулась ко мне как на запасной аэродром. Сейчас финансовое положение более менее стабильно, но если завтра у меня опять возникнут проблемы, и я не смогу удовлетворить какие то ее хотелки, она опять "поедет в Сочи"?

Показать полностью
Мои подписки
Подписывайтесь на интересные вам теги, сообщества, авторов, волны постов — и читайте свои любимые темы в этой ленте.
Чтобы добавить подписку, нужно авторизоваться.

Отличная работа, все прочитано! Выберите