Краткое изложение общих заголовков файлов и основных принципов стеганографии в CTF
Краткое изложение общих заголовков файлов и основных принципов стеганографии в CTF

Краткое изложение общих заголовков файлов и основных принципов стеганографии в CTF

Предисловие

Составьте сводку общих заголовков файлов и стеганографии.

  • хвост файла заголовка файла
  • Стеганография изображений
  • аудио стеганография
  • Стеганография электронного документа

1. Заголовок и хвост файла.

1. Картинки

  • JPEG Заголовок файла:FF D8 FF конец файла:FF D9
  • TGA Несжатые первые 4 байта 00 00 02 00 RLE сжимает первые 5 байт 00 00 10 00 00
  • PNG Заголовок файла:89 50 4E 47 0D 0A 1A 0A конец файла:AE 42 60 82
  • GIF Заголовок файла:47 49 46 38 39(37) 61 конец файла:00 3B
  • BMP Заголовок файла:42 4D Идентификатор заголовка файла (2 bytes) 42(B) 4D(M)
  • TIFF (tif) Заголовок файла:49 49 2A 00
  • ico Заголовок файла:00 00 01 00
  • Adobe Photoshop (psd) Заголовок файла:38 42 50 53

2. Офисные файлы

  • MS Word/Excel (xls.or.doc) Заголовок файла:D0 CF 11 E0
  • MS Access (mdb) Заголовок файла:53 74 61 6E 64 61 72 64 20 4A
  • WordPerfect (wpd) Заголовок файла:FF 57 50 43
  • Adobe Acrobat (pdf) Заголовок файла:25 50 44 46 2D 31 2E
  • application/vnd.visio(vsd) Заголовок файла:D0 CF 11 E0 A1 B1 1A E1
  • Email [thorough only] (eml) Заголовок файла:44 65 6C 69 76 65 72 79 2D 64 61 74 65 3A
  • Outlook Express (dbx) Заголовок файла:CF AD 12 FE C5 FD 74 6F
  • Outlook (pst) Заголовок файла:21 42 44 4E
  • Rich Text Format (rtf) Заголовок файла:7B 5C 72 74 66
  • txt файл (текст) Заголовок файла:Unicode:FE FF / Unicode big endian:FF FE / UTF-8:EF BB BF Кодировка /ANSI не имеет заголовка файла.

3. Сжатый пакетный файл.

  • ZIP Archive (zip) Заголовок файла:50 4B 03 04 конец файла:50 4B
  • RAR Archive (rar) Заголовок файла:52 61 72 21

4. Аудио файлы

  • Wave (wav) Заголовок файла:57 41 56 45
  • audio(Audio) Заголовок файла: 4D 54 68 64
  • audio/x-aac(aac)
  • Заголовок файла:FF F1(9)

5. Видео файлы

  • AVI (avi) Заголовок файла:41 56 49 20
  • Real Audio (ram) Заголовок файла:2E 72 61 FD
  • Real Media (rm) Заголовок файла:2E 52 4D 46
  • MPEG (mpg) Заголовок файла:00 00 01 BA(3)
  • Quicktime (mov) Заголовок файла:6D 6F 6F 76
  • Windows Media (asf) Заголовок файла:30 26 B2 75 8E 66 CF 11
  • MIDI (mid) Заголовок файла:4D 54 68 64

6. Файлы кода

  • XML (xml) Заголовок файла:3C 3F 78 6D 6C
  • HTML (html) Заголовок файла:68 74 6D 6C 3E
  • Quicken (qdf) Заголовок файла:AC 9E BD 8F
  • Windows Password (pwl) Заголовок файла:E3 82 85 96

7. Другие типы

  • файл сертификата Windows (der) Заголовок файла:30 82 03 C9
  • CAD (dwg) Заголовок файла:41 43 31 30
  • Windows Shortcut (lnk) Заголовок файла:4C 00 00 00
  • Windows reg(reg) Заголовок файла:52 45 47 45 44 49 54 34

2. Стеганография изображений

1. Дополнительная стеганография изображений

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

(1) Дополнительная строка

Самый простой — добавить строку

дополнительные методы

  • winhex напрямую прикрепите, а затем сохраните
  • copy /b a.jpg+b.txt c.jpg,Добавьте содержимое b к изображению a,Получить картинку c

Метод идентификации

  • Смотрите напрямую с помощью winhex
  • Блокнот также может прочитать это
  • строковая команда Linux

приложение

  • Сделать картинку коня, то есть поставить троянского коня в конце картинки.

Пример

  • Aesop_secret
  • Training-Stegano-1
(2) Скрыть сжатые файлы

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

дополнительные методы

  • winhex напрямую прикрепите, а затем сохраните

Метод идентификации

  • Некоторые из них можно использовать, просто изменив расширение.
  • команда binwalk в Linux
  • Стегсолвосепарация
  • winhexскопировать содержимое сжатого файла, пересохранить

Пример

  • a_good_idea
  • Мир атаки и защиты Разное Мастер Продвинутая область 2 очка Ditf
  • Мир атаки и защиты Разное Мастер Продвинутая зона 2 Очки Вопрос Прощай, Ли Хуа
  • Мир атаки и защиты Разное Мастер Продвинутая область 3 очка Вопрос разное
  • Мир атаки и защиты Мастер-разное Продвинутая область 3 балла Вопросы 3–11

2. Стеганография изображений на основе файловой структуры.

В основном для изображений PNG

Стандартная структура файла PNG должна включать:

  • PNG файл логотипа
  • PNGблок данных:ключблок данныхи вспомогательныйблок данные, где обычный ключ — блок данные имеют длину、блок данныхкод типа、блок 4 типа данных данных и CRC
(1) блок данных заголовка файла изображения png (IHDR)

Первый блок данных изображения PNG

  • Изображение PNG имеет только один блок IHDR. данных
  • Включает ширину изображения, высоту, глубину изображения, тип цвета, метод сжатия и другую информацию.

Синяя часть — IHDR.

Вы можете изменить значения высоты или ширины, чтобы скрыть некоторую информацию.

  • Если картинка изначально 800(ширина)*600(высота), то высота картинки меняется с 600 на 500
  • Таким образом, информация в области 800×100 ниже не может быть отображена на изображении.,Мы видим только область 800*500 выше.,Таким образом, цель Стеганографии изображений достигается.
  • Таким же образом видно, что ширину изображения можно изменить аналогичным образом, чтобы скрыть информацию.

Метод идентификации

  • Откройте изображение в редакторе, например winhex или 010Editor.
  • Изменить значение длины или ширины
  • После изменения файла вам необходимо использовать калькулятор CRC для перерасчета и назначения кода проверки CRC, чтобы предотвратить ошибку проверки CRC после изменения изображения, из-за которой изображение не открывается нормально.

Пример

  • Мир атаки и защиты Разное Мастер Продвинутая область 2 очка Ditf
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 3 балла 2-1
(2) Блок данных IDAT
  • Храните фактические данные
  • Поток данных может содержать несколько последовательных изображений блока данных.
  • Запись избыточного IDAT не сильно повлияет на наблюдение изображения невооруженным глазом.

Метод идентификации

  • использоватьpngcheckПроверить изображенияpngcheck -v hidden.png

Может возникнуть блок исключений размером 0.

Скрипт для извлечения контента

Язык кода:javascript
копировать
#!/usr/bin/python

from struct import unpack
from binascii import hexlify, unhexlify
import sys, zlib

# Returns [Position, Chunk Size, Chunk Type, Chunk Data, Chunk CRC]
def getChunk(buf, pos):
    a = []
    a.append(pos)
    size = unpack('!I', buf[pos:pos+4])[0]
    # Chunk Size
    a.append(buf[pos:pos+4])
    # Chunk Type
    a.append(buf[pos+4:pos+8])
    # Chunk Data
    a.append(buf[pos+8:pos+8+size])
    # Chunk CRC
    a.append(buf[pos+8+size:pos+12+size])
    return a

def printChunk(buf, pos):
    print 'Pos : '+str(pos)+''
    print 'Type: ' + str(buf[pos+4:pos+8])
    size = unpack('!I', buf[pos:pos+4])[0]
    print 'Size: ' + str(size)
    #print 'Cont: ' + str(hexlify(buf[pos+8:pos+8+size]))
    print 'CRC : ' + str(hexlify(buf[pos+size+8:pos+size+12]).upper())
    print

if len(sys.argv)!=2:
    print 'Usage: ./this Stegano_PNG'
    sys.exit(2)

buf = open(sys.argv[1]).read()
pos=0

print "PNG Signature: " + str(unpack('cccccccc', buf[pos:pos+8]))
pos+=8

chunks = []
for i in range(3):
    chunks.append(getChunk(buf, pos))
    printChunk(buf, pos)
    pos+=unpack('!I',chunks[i][1])[0]+12


decompressed = zlib.decompress(chunks[1][3])
# Decompressed data length = height x (width * 3 + 1)
print "Data length in PNG file : ", len(chunks[1][3])
print "Decompressed data length: ", len(decompressed)

height = unpack('!I',(chunks[0][3][4:8]))[0]
width = unpack('!I',(chunks[0][3][:4]))[0]
blocksize = width * 3 + 1
filterbits = ''
for i in range(0,len(decompressed),blocksize):
    bit = unpack('2401c', decompressed[i:i+blocksize])[0]
    if bit == '\x00': filterbits+='0'
    elif bit == '\x01': filterbits+='1'
    else:
        print 'Bit is not 0 or 1... Default is 0 - MAGIC!'
        sys.exit(3)

s = filterbits
endianess_filterbits = [filterbits[i:i+8][::-1] for i in xrange(0, len(filterbits), 8)]

flag = ''
for x in endianess_filterbits:
    if x=='00000000': break
    flag += unhexlify('%x' % int('0b'+str(x), 2))

print 'Flag: ' + flag

3. LSB-стеганография

LSB, младший значащий бит, английский — младший значащий бит

  • Большая емкость, высокая скорость встраивания и незначительное влияние на качество изображения носителя.
  • Доступно в форматах PNG и BMP.

принцип

  • Пиксели изображения обычно состоят из трех цветов, а именно из трех основных цветов (красного, зеленого и синего). Из этих трех основных цветов можно составить и другие цвета.
  • В хранилище png-изображений каждый цвет занимает 8 бит, то есть цветов 256, а в кубе всего 256 цветов, то есть 16777216 цветов.
  • Человеческий глаз может различать около 10 миллионов различных цветов, оставляя 6 777 216 неразличимых цветов.
  • Стеганография LSB изменяет младший бит пикселя и скрывает некоторую информацию.

Приведите интуитивный пример

Человеческий глаз не видит разницы в цвете, но самый низкий бит отличается.

Встроить скрипт

Язык кода:javascript
копировать
from PIL import Image
import math
 
class LSB:
  def __init__(self):
    self.im=None
 
  def load_bmp(self,bmp_file):
    self.im=Image.open(bmp_file)
    self.w,self.h=self.im.size
    self.available_info_len=self.w*self.h # не совсем надежный
    print ("Load>> Встраиваемый",self.available_info_len,"битовая информация")
 
  def write(self,info):
    """Сначала вставьте длину информации, а затем вставьте ее"""
    info=self._set_info_len(info)
    info_len=len(info)
    info_index=0
    im_index=0
    while True:
      if info_index>=info_len:
        break
      data=info[info_index]
      x,y=self._get_xy(im_index)
      self._write(x,y,data)
      info_index+=1
      im_index+=1
 
  def save(self,filename):
    self.im.save(filename)
 
  def read(self):
    """Сначала прочитайте длину сообщения, затем прочитайте сообщение"""
    _len,im_index=self._get_info_len()
    info=[]
    for i in range(im_index,im_index+_len):
      x,y=self._get_xy(i)
      data=self._read(x,y)
      info.append(data)
    return info
 
  #===============================================================#
  def _get_xy(self,l):
    return l%self.w,int(l/self.w)
 
  def _set_info_len(self,info):
    l=int(math.log(self.available_info_len,2))+1
    info_len=[0]*l
    _len=len(info)
    info_len[-len(bin(_len))+2:]=[int(i) for i in bin(_len)[2:]]
    return info_len+info
 
  def _get_info_len(self):
    l=int(math.log(self.w*self.h,2))+1
    len_list=[]
    for i in range(l):
      x,y=self._get_xy(i)
      _d=self._read(x,y)
      len_list.append(str(_d))
    _len=''.join(len_list)
    _len=int(_len,2)
    return _len,l
 
  def _write(self,x,y,data):
    origin=self.im.getpixel((x,y))
    lower_bit=origin%2
    if lower_bit==data:
      pass
    elif (lower_bit,data) == (0,1):
      self.im.putpixel((x,y),origin+1)
    elif (lower_bit,data) == (1,0):
      self.im.putpixel((x,y),origin-1)
 
  def _read(self,x,y):
    data=self.im.getpixel((x,y))
    return data%2
 
if __name__=="__main__":
  lsb=LSB()
  # Писать
  lsb.load_bmp('test.bmp')
  info1=[0,1,0,1,1,0,1,0]
  lsb.write(info1)
  lsb.save('lsb.bmp')
  # читать
  lsb.load_bmp('lsb.bmp')
  info2=lsb.read()
  print (info2)

Метод идентификации

  • stegsolve, отрегулируй канал
  • zsteg,богоподобный инструмент

Извлечь скрипт

Язык кода:javascript
копировать
from PIL import Image

im = Image.open("extracted.bmp")
pix = im.load()
width, height = im.size

extracted_bits = []
for y in range(height):
    for x in range(width):
        r, g, b = pix[(x,y)]
        extracted_bits.append(r & 1)
        extracted_bits.append(g & 1)
        extracted_bits.append(b & 1)

extracted_byte_bits = [extracted_bits[i:i+8] for i in range(0, len(extracted_bits), 8)]
with open("extracted2.bmp", "wb") as out:
    for byte_bits in extracted_byte_bits:
                byte_str = ''.join(str(x) for x in byte_bits)
        byte = chr(int(byte_str, 2))
        out.write(byte)

Пример

  • pure_color
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 2 балла stage1
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 2 балла джунгли
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 2 балла Перевернутый магазин
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 2 балла Erik-Baleog-and-Olaf
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 3 балла flag_universe
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 3 балла Excaliflag

4. Стеганография изображений JPG на основе домена DCT.

Формат изображения JPEG использует функцию дискретного косинусного преобразования (DCT) для сжатия изображений.

  • Уменьшите количество бит, необходимых для отображения изображения, путем выявления повторяющихся пикселей среди соседних пикселей в каждом блоке пикселей 8×8.
  • Используйте методы аппроксимации для уменьшения избыточности
  • Технология сжатия с потерями
  • Распространенные методы стеганографии включают JSteg, JPHide, Outguess и F5.

Стеганография Jsteg

  • Встроить секретную информацию в младший бит квантованных коэффициентов DCT.
  • Исходные значения -1,0, за исключением коэффициентов DCT +1.
  • В квантованных коэффициентах ДКП есть отрицательные числа.

выполнить

Язык кода:javascript
копировать
import math
import cv2
import numpy as np
 
def dct(m):
    m = np.float32(m)/255.0
    return cv2.dct(m)*255

class Jsteg:
  def __init__(self):
    self.sequence_after_dct=None
 
  def set_sequence_after_dct(self,sequence_after_dct):
    self.sequence_after_dct=sequence_after_dct
    self.available_info_len=len([i for i in self.sequence_after_dct if i not in (-1,1,0)]) # не совсем надежный
    print ("Load>> Встраиваемый",self.available_info_len,'bits')
  
  def get_sequence_after_dct(self):
    return self.sequence_after_dct
 
  def write(self,info):
    """Сначала вставьте длину информации, а затем вставьте ее"""
    info=self._set_info_len(info)
    info_len=len(info)
    info_index=0
    im_index=0
    while True:
      if info_index>=info_len:
        break
      data=info[info_index]
      if self._write(im_index,data):
        info_index+=1
      im_index+=1
 
 
  def read(self):
    """Сначала прочитайте длину сообщения, затем прочитайте сообщение"""
    _len,sequence_index=self._get_info_len()
    info=[]
    info_index=0
 
    while True:
      if info_index>=_len:
        break
      data=self._read(sequence_index)
      if data!=None:
        info.append(data)
        info_index+=1
      sequence_index+=1
 
    return info
 
  #===============================================================#
 
  def _set_info_len(self,info):
    l=int(math.log(self.available_info_len,2))+1
    info_len=[0]*l
    _len=len(info)
    info_len[-len(bin(_len))+2:]=[int(i) for i in bin(_len)[2:]]
    return info_len+info
 
  def _get_info_len(self):
    l=int(math.log(self.available_info_len,2))+1
    len_list=[]
    _l_index=0
    _seq_index=0
    while True:
      if _l_index>=l:
        break
      _d=self._read(_seq_index)
      if _d!=None:
        len_list.append(str(_d))
        _l_index+=1
      _seq_index+=1
    _len=''.join(len_list)
    _len=int(_len,2)
    return _len,_seq_index
 
  def _write(self,index,data):
    origin=self.sequence_after_dct[index]
    if origin in (-1,1,0):
      return False
 
    lower_bit=origin%2
    if lower_bit==data:
      pass
    elif origin>0:
      if (lower_bit,data) == (0,1):
        self.sequence_after_dct[index]=origin+1
      elif (lower_bit,data) == (1,0):
        self.sequence_after_dct[index]=origin-1
    elif origin<0:
      if (lower_bit,data) == (0,1):
        self.sequence_after_dct[index]=origin-1
      elif (lower_bit,data) == (1,0):
        self.sequence_after_dct[index]=origin+1
 
    return True
 
  def _read(self,index):
    if self.sequence_after_dct[index] not in (-1,1,0):
      return self.sequence_after_dct[index]%2
    else:
      return None
 
if __name__=="__main__":
  jsteg=Jsteg()
  # Писать
  sequence_after_dct=[-1,0,1]*100+[i for i in range(-7,500)]
  jsteg.set_sequence_after_dct(sequence_after_dct)
  info1=[0,1,0,1,1,0,1,0]
  jsteg.write(info1)
  sequence_after_dct2=jsteg.get_sequence_after_dct()
  # читать
  jsteg.set_sequence_after_dct(sequence_after_dct2)
  info2=jsteg.read()
  print (info2)

Алгоритм Outgusee

  • Предложен метод устранения недостатков алгоритма Jsteg.
  • Процесс внедрения не изменяет коэффициенты DCT, значения коэффициента ECT которых равны 0 и 1.
  • Используйте интервал, сгенерированный генератором случайных чисел, чтобы определить позицию следующего коэффициента DCT, который будет внедрен.
  • Корректирующий процесс исключает возникновение парных эффектов.

Метод идентификации

  • Stegdetect: обнаруживается с помощью JSteg, JPHide, OutGuess, Invisible. Secrets、F5、appendXиCamouflageПодождите этих скрытых Писатьинструментскрытая информация
  • JPHS: для JPHide
  • Outguess: для OutGuess

5. Стеганография цифровых водяных знаков

цифровой водяной знак

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

слепой водяной знак

  • Преобразование Фурье выполняется над изображением, начиная с двумерного дискретного преобразования Фурье. Частота изображения относится к интенсивности преобразования в оттенках серого изображения.
  • После изменения двумерного изображения из пространственной области в частотную область значение каждой точки изображения становится комплексным числом, которое представляет собой так называемую комплексную частотную область. Через действительную и мнимую часть комплексного числа. , амплитуда и фаза, для расчета амплитуды необходимо взять значение по модулю комплексного числа и отобразить матрицу после получения значения по модулю, которая является ее спектральной диаграммой.
  • Затем возьмите логарифм значения модуля и нормализуйте его в диапазоне 0–255. Только так можно точно отразить его на изображении, найти разницу между данными и различить высокочастотные и низкочастотные составляющие. .

Метод идентификации

  • bwm

Пример

  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 3 балла warmup
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 3 балла Если сигнал плохой, сначала повесьте трубку.

6. Стеганография толерантности к изображениям

Толерантность

  • Диапазон выбора, установленный при выборе цветов
  • Чем больше Толерантность, тем больше диапазон выбора.
  • Его значение находится в диапазоне 0-255.

Толерантностьотносительно скрытый Писать

  • Если есть две картинки,Затем сравните каждый пиксель двух изображений.,Установите пороговое значение α для толерантности.,Пиксели, превышающие этот порогRGBЗначение установлено на(255,255,255),Если оно не превышает пороговое значение, установите значение RGB пикселя на (0,0,0)。поэтому,Регулируя различные значения α,Изображения, полученные путем сравнения, могут дать иную картину. Например, две фотографии абсолютно одинаковы.,Установите порог α на любое значение,Окончательные изображения для сравнения будут только полностью черными. Если каждый пиксель двух изображений различен,Порог α установлен на 1,Тогда изображение сравнения будет полностью белым. Если вы прикрепляете скрытую информацию к определенным пикселям,В это время скрытую информацию можно увидеть, отрегулировав порог α.
  • Если это изображение, оценка основывается на значении пикселей вокруг каждого пикселя, а также устанавливается пороговое значение, если текущий пиксель превышает среднее значение окружающих пикселей или какое-либо другое правило, значение RGB. для пикселя установлено значение (255 255 255), иначе он не будет обрабатываться или будет установлен все 0. Таким образом, также можно получить скрытую информацию.

Метод идентификации

  • вне всякого сравнения, сравнить фотографии

7. Нарушить шестнадцатеричную систему

Например, перевернуть всю двоичную последовательность Получите кучу бреда

Метод идентификации

  • Winhex, проверь, поменялись ли начало и конец файла местами и в обратном порядке

Пример

  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 2 балла Reverse-it

8. Комбинация GIF-файлов

Каждый кадр gif является частью определенной картинки. Извлеките каждый кадр, а затем соедините его

инструмент

  • ps

Пример

  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 2 балла glance-50
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 3 балла Два цветных блока

3. Аудиостеганография

Просто краткое упоминание

  • Информация о карте спектра
  • Старший и младший бит в двоичном формате
  • Код Зангоры
  • MP3Stego
  • В аудио также есть младшие разряды.

Я изначально хотел разобраться во всем сам Я увидел, что г-н Гогуан был очень всеобъемлющим. Просто поставь ссылку

Некоторое резюме аудиостеганографии в CTF

Пример

  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 2 балла Hear-with-your-Eyes
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 3 балла Очень обычная дискотека
  • Атакуйте и защищайте мир Разное мастер-продвинутая область вопрос на 4 балла intoU

4. Стеганография электронного документа

1. Скрытый текст

Разговаривайте, рассматривая картинки

2. Скрытие файлов

Скрытые файлы похожих изображений Давайте просто посмотрим на пример Мир атаки и защиты Разное Мастер Продвинутая область 3 очка Вопрос Маленький PDF

Заключение

Сводка общих заголовков файлов и стеганографии изображений и аудиодокументов.


Коммандос Хунке был создан в 2019 году под руководством капитана К. Лонга и совместно с аспирантами многих ведущих университетов страны. С момента своего создания его команда участвовала во многих международных соревнованиях по сетевой безопасности и добилась хороших результатов, а также накопила богатый опыт соревнований. В настоящее время группа насчитывает более 30 официальных членов и несколько резервных сотрудников, а также несколько подчиненных объединенных групп. Hongke Commando всегда придерживается принципа: сначала человек, а потом технологии, и стремится создать ведущую международную команду сетевой безопасности.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose