Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Можно ли создать Spoofer при помощи ChatGPT

  • Автор темы Автор темы Vagaban
  • Дата начала Дата начала
Ага, конечно, с таким же успехом можешь просто загуглить, что тебе нужно, т.к. нейронка будет из гугла код брать.
 
можно ли создать Spoofer или же чит при помощи ChatGPT ?
1676796828197.png
 
Ответ: да.
1676799798341.png
1676799808524.png
1676799821279.png

C++:
Expand Collapse Copy
#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Protocol/BlockIo.h>

EFI_STATUS EFIAPI UefiMain(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE* SystemTable)
{
  EFI_STATUS Status;
  EFI_HANDLE Handle = ImageHandle;
  UINTN BlockSize = 0;
  UINT8* BlockBuffer = NULL;
  UINT8 NewSerialNumber[] = "MY_NEWSERIALNUMBER";
  UINTN NewSerialNumberSize = sizeof(NewSerialNumber);

  // Get the handle for the first Block I/O protocol
  EFI_HANDLE* HandleBuffer = NULL;
  UINTN NumHandles = 0;
  Status = gBS->LocateHandleBuffer(ByProtocol, &gEfiBlockIoProtocolGuid, NULL, &NumHandles, &HandleBuffer);
  if (EFI_ERROR(Status)) {
    Print(L"Failed to locate Block I/O protocol handles\n");
    return Status;
  }

  // Open the first Block I/O protocol
  EFI_BLOCK_IO_PROTOCOL* BlockIo = NULL;
  Status = gBS->OpenProtocol(HandleBuffer[0], &gEfiBlockIoProtocolGuid, (VOID**)&BlockIo, Handle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
  if (EFI_ERROR(Status)) {
    Print(L"Failed to open Block I/O protocol\n");
    return Status;
  }

  // Get the block size and allocate a buffer for the block data
  BlockSize = BlockIo->Media->BlockSize;
  BlockBuffer = AllocatePool(BlockSize);
  if (BlockBuffer == NULL) {
    Print(L"Failed to allocate block buffer\n");
    return EFI_OUT_OF_RESOURCES;
  }

  // Read the block data into the buffer
  Status = BlockIo->ReadBlocks(BlockIo, BlockIo->Media->MediaId, 0, BlockSize, BlockBuffer);
  if (EFI_ERROR(Status)) {
    Print(L"Failed to read block data\n");
    return Status;
  }

  // Overwrite the serial number in the block data buffer
  CopyMem(BlockBuffer + 20, NewSerialNumber, NewSerialNumberSize);

  // Write the modified block data back to the disk
  Status = BlockIo->WriteBlocks(BlockIo, BlockIo->Media->MediaId, 0, BlockSize, BlockBuffer);
  if (EFI_ERROR(Status)) {
    Print(L"Failed to write block data\n");
    return Status;
  }

  // Free resources
  FreePool(BlockBuffer);
  FreePool(HandleBuffer);

  return EFI_SUCCESS;
}
 
Ответ: да.
Посмотреть вложение 239122Посмотреть вложение 239123Посмотреть вложение 239124
C++:
Expand Collapse Copy
#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Protocol/BlockIo.h>

EFI_STATUS EFIAPI UefiMain(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE* SystemTable)
{
  EFI_STATUS Status;
  EFI_HANDLE Handle = ImageHandle;
  UINTN BlockSize = 0;
  UINT8* BlockBuffer = NULL;
  UINT8 NewSerialNumber[] = "MY_NEWSERIALNUMBER";
  UINTN NewSerialNumberSize = sizeof(NewSerialNumber);

  // Get the handle for the first Block I/O protocol
  EFI_HANDLE* HandleBuffer = NULL;
  UINTN NumHandles = 0;
  Status = gBS->LocateHandleBuffer(ByProtocol, &gEfiBlockIoProtocolGuid, NULL, &NumHandles, &HandleBuffer);
  if (EFI_ERROR(Status)) {
    Print(L"Failed to locate Block I/O protocol handles\n");
    return Status;
  }

  // Open the first Block I/O protocol
  EFI_BLOCK_IO_PROTOCOL* BlockIo = NULL;
  Status = gBS->OpenProtocol(HandleBuffer[0], &gEfiBlockIoProtocolGuid, (VOID**)&BlockIo, Handle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
  if (EFI_ERROR(Status)) {
    Print(L"Failed to open Block I/O protocol\n");
    return Status;
  }

  // Get the block size and allocate a buffer for the block data
  BlockSize = BlockIo->Media->BlockSize;
  BlockBuffer = AllocatePool(BlockSize);
  if (BlockBuffer == NULL) {
    Print(L"Failed to allocate block buffer\n");
    return EFI_OUT_OF_RESOURCES;
  }

  // Read the block data into the buffer
  Status = BlockIo->ReadBlocks(BlockIo, BlockIo->Media->MediaId, 0, BlockSize, BlockBuffer);
  if (EFI_ERROR(Status)) {
    Print(L"Failed to read block data\n");
    return Status;
  }

  // Overwrite the serial number in the block data buffer
  CopyMem(BlockBuffer + 20, NewSerialNumber, NewSerialNumberSize);

  // Write the modified block data back to the disk
  Status = BlockIo->WriteBlocks(BlockIo, BlockIo->Media->MediaId, 0, BlockSize, BlockBuffer);
  if (EFI_ERROR(Status)) {
    Print(L"Failed to write block data\n");
    return Status;
  }

  // Free resources
  FreePool(BlockBuffer);
  FreePool(HandleBuffer);

  return EFI_SUCCESS;
}
это что получается осталось скомпилирувать и готово ?
 
Назад
Сверху Снизу