DFU 0x1227

From The iPhone Wiki
Revision as of 23:15, 29 December 2012 by 5urd (talk | contribs)
Jump to: navigation, search

DFU 0x1227 is the protocol used to talk to a device in DFU Mode or WTF v2.

Protocol

The protocol is the same as sending a file to a device in Recovery Mode on 2.x.

Code

uint8_t fbuf[FBUF_LENGTH];
uint8_t buf[100];
hexdump(fbuf, usb_control_msg(idev, 0x80, 6, 0x200, 0, fbuf, 0x100, 1000));
printf("WTF: ");
fgets(buf, 100, stdin);
buf[strlen(buf) - 1] = 0;
FILE *f = fopen(buf, "rb");
int s;
int c = 0;
if (f > 0) {
  do {
    s = fread(fbuf, 1, 0x800, f);
    if (usb_control_msg(idev, 0x21, 1, c, 0, fbuf, s, 1000) == s)
      printf(".");
    else
      printf("x");
    if (usb_control_msg(idev, 0xA1, 3, 0, 0, fbuf, 6, 1000) !=  6|| fbuf[4] != 5)
      printf("%d", fbuf[4]);
    c++;
  } while (s > 0);
  printf("\n");
  usb_control_msg(idev, 0xA1, 3, 0, 0, buf, 6, 1000);
  hexdump(buf, 6);
  usb_control_msg(idev, 0xA1, 3, 0, 0, buf, 6, 1000);
  hexdump(buf, 6);
  usb_reset(idev);
  fclose(f);
} else
  printf("file not found\n");
  system("PAUSE");
  return 0;
}