Рубрика: Программирование

  • Python для хакеров: Как написать скрипт, который удивит даже системного администратора.

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

    компьютер, экран, код, python, хакер

    Идея скрипта: Обнаружение необычной сетевой активности

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

    Код скрипта на Python

    Вот пример скрипта, который использует модуль `psutil` для получения информации о сетевых соединениях и модуль `datetime` для работы со временем:

    
    import psutil
    import datetime
    
    def analyze_network_connections():
        """
        Анализирует сетевые соединения и выводит информацию о подозрительных активностях.
        """
        now = datetime.datetime.now()
        suspicious_ips = {}
    
        for connection in psutil.net_connections():
            if connection.status == psutil.CONN_ESTABLISHED:
                remote_ip = connection.raddr.ip
                if remote_ip == "192.168.1.100": # Пример подозрительного IP
                    if remote_ip not in suspicious_ips:
                        suspicious_ips[remote_ip] = []
                    suspicious_ips[remote_ip].append(now.strftime("%Y-%m-%d %H:%M:%S"))
    
        if suspicious_ips:
            print("Обнаружена подозрительная активность:")
            for ip, timestamps in suspicious_ips.items():
                print(f"IP: {ip}, Время соединений: {', '.join(timestamps)}")
        else:
            print("Подозрительная активность не обнаружена.")
    
    if __name__ == "__main__":
        analyze_network_connections()
    
    
    код, python, скрипт, анализ, сеть

    Разбор кода


    1. Импорт модулей:

      Мы импортируем `psutil` для получения информации о процессах и сети, а также `datetime` для работы с датой и временем.

    2. Функция



      analyze_network_connections()



      :

      Эта функция выполняет основной анализ.

    3. Получение информации о соединениях:

      Мы используем

      psutil.net_connections()

      для получения списка активных сетевых соединений.

    4. Фильтрация соединений:

      Мы фильтруем соединения, оставляя только установленные (

      psutil.CONN_ESTABLISHED

      ).

    5. Анализ IP-адресов:

      Мы проверяем IP-адрес удаленной стороны (

      connection.raddr.ip

      ) и, если он соответствует заранее определенному “подозрительному” IP-адресу (в примере –

      "192.168.1.100"

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

    6. Вывод результатов:

      Мы выводим информацию о подозрительных IP-адресах и времени их соединений.

    Как это может удивить системного администратора?

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

    Дальнейшее развитие

    Этот пример – лишь отправная точка. Вот несколько идей для дальнейшего развития:


    • Динамический список подозрительных IP-адресов:

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

    • Анализ портов:

      Проверяйте, на каких портах устанавливаются соединения.

    • Анализ процессов:

      Определяйте, какие процессы устанавливают соединения.

    • Создание отчетов:

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

    • Интеграция с SIEM:

      Интегрируйте скрипт с системой управления информацией о безопасности (SIEM) для централизованного мониторинга.
    сервер, сеть, мониторинг, безопасность, python

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

    #Python #Безопасность #Скрипты #Автоматизация #СистемныйАдминистратор #Хакерство #psutil #СетевойМониторинг

  • 5 советов, как начать использовать большие языковые модели (LLM) в своем коде уже сегодня.

    Большие языковые модели (LLM) перестали быть просто академическим увлечением. Они становятся мощным инструментом, доступным для разработчиков всех уровней. Если вы хотите начать использовать LLM в своем коде уже сегодня, вот 5 практических советов, которые помогут вам сделать первые шаги.

    LLM, схема, нейронная сеть, взаимодействие

    1. Начните с готовых API

    Вместо того, чтобы пытаться обучать свою собственную LLM (что требует огромных ресурсов), воспользуйтесь готовыми API, предоставляемыми крупными компаниями. OpenAI, Google AI Platform, Cohere и другие предлагают мощные модели, доступные через простые HTTP-запросы. Для начала используйте Python, поскольку многие библиотеки специально разработаны для работы с этими API.

    # Пример использования OpenAI API на Python
    import openai
    
    openai.api_key = "YOUR_OPENAI_API_KEY"
    
    completion = openai.Completion.create(
      engine="text-davinci-003",
      prompt="Напиши короткую историю о коте.",
      max_tokens=100
    )
    
    print(completion.choices[0].text)
    
    код, python, openai api, пример

    2. Создайте простые “промты” (Prompts)

    LLM работают на основе “промтов” – текстовых инструкций, которые вы им даете. Чем лучше сформулирован ваш промт, тем лучше будет результат. Начните с простых задач и экспериментируйте с разными формулировками. Попробуйте добавлять в промт примеры желаемого ответа (few-shot learning).

    Например, вместо простого “Напиши письмо”, попробуйте “Напиши формальное письмо с просьбой о предоставлении информации. Начни с вежливого приветствия и заверши предложением связаться по телефону.”

    промт, пример, формулировка, инструкция

    3. Используйте LLM для генерации документации

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

    # Пример: Сгенерировать docstring для Python функции
    import openai
    
    openai.api_key = "YOUR_OPENAI_API_KEY"
    
    def generate_docstring(function_code):
      prompt = f"Напиши docstring для следующей функции Python:\n{function_code}"
      completion = openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=150
      )
      return completion.choices[0].text
    
    #Пример функции
    function_code = """
    def calculate_sum(a, b):
      \"\"\"
      #Вставьте docstring, сгенерированный LLM
      \"\"\"
      return a + b
    """
    docstring = generate_docstring(function_code)
    print(docstring)
    
    документация, код, LLM, генерация

    4. Автоматизируйте задачи тестирования

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

    тестирование, LLM, автоматизация, ошибки

    5. Экспериментируйте с “Chain-of-Thought” Prompting

    Для сложных задач попробуйте “Chain-of-Thought” prompting. Это означает, что вы просите LLM не просто дать ответ, а объяснить ход своих мыслей. Это помогает модели лучше понять задачу и улучшить качество решения. Например, вместо “Реши математическую задачу: 2 + 1 * 4”, попробуйте “Реши математическую задачу: 2 + 1 * 4. Объясни каждый шаг решения.”

    prompting, chain-of-thought, LLM, объяснение

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

    #LLM #ИИ #AI #Разработка #Программирование #Prompting #Автоматизация #Python #OpenAI

  • Как эффективно использовать ChatGPT для автоматизации рутинных задач программирования.

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

    Генерация шаблонного кода

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

    скриншот чата с запросом к ChatGPT для создания класса на Python, описание класса содержит поля и методы


    Пример запроса:

    “Создай класс на Python для работы с базой данных PostgreSQL, с методами для подключения, выполнения запросов и обработки результатов.” ChatGPT сгенерирует начальный код класса, который вы сможете доработать и адаптировать под свои нужды.

    Автоматическое документирование кода

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

    скриншот чата с запросом к ChatGPT для документирования функции на JavaScript, функция обрабатывает массив чисел


    Пример запроса:

    “Напиши JSDoc комментарии для следующей функции:

    function calculateAverage(numbers) { ... }

    ” ChatGPT сгенерирует JSDoc комментарии, описывающие функцию и ее параметры.

    Поиск и исправление ошибок

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

    скриншот чата с запросом к ChatGPT для объяснения ошибки в коде на C++, описание ошибки содержит указание на Segmentation fault


    Пример запроса:

    “Объясни, что не так в следующем коде на C++ и предложи варианты исправления:

    ...

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

    Рефакторинг кода

    Рефакторинг кода – это процесс улучшения структуры и читаемости кода без изменения его функциональности. ChatGPT может помочь вам автоматизировать часть этой работы. Вы можете попросить ChatGPT упростить сложный фрагмент кода, сделать его более читаемым или оптимизировать его для повышения производительности.


    Пример запроса:

    “Оптимизируй следующий код на Java для повышения производительности:

    ...

    Генерация тестовых случаев

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

    Важные предостережения

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

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

    #ChatGPT #Автоматизация #Программирование #AI #ИскусственныйИнтеллект #Разработка #Код #ИнструментыПрограммиста #Эффективность #Productivity