문제

이것은 회색 영역 주제 일 수도 있고 아닐 수도 있지만, 나의 의도는 확실하지 않기 때문에 나의 의도는 역 공학 주제에 대한 윤리적 논쟁을 자극하지 않는 것입니다.

저는 현재 펌프 요법을 받고있는 제 1 형 당뇨병 환자입니다. 나는이다 옴니 포드 사용자, 그것은 내 몸을 준수하고 3 일 동안 인슐린을 분배하는 일회용 포드입니다. 개인 당뇨병 관리자 [PDM] (아래 참조)에 의해 통제되는데 (아래 참조) 식사 중에 분배 할 인슐린이 얼마나 많은지를 제어하고, 이동 중 탄수화물 계산을위한 식품 지수가 포함되어 있습니다.

alt text
(원천: myomnipod.com)

새로운 PDM에는 데이터 다운로드를위한 USB 포트가 있습니다. 이 소프트웨어는 Windows 사용자 (Copilot이라는 패키지)에 무료이지만 Mac 지원은 없습니다.

PDM을 Mac에 연결하면 다른 USB 장치와 마찬가지로 장착되었으며 IBF 확장 기능이있는 단일 파일이있는 읽기 가능한 볼륨을 제시했습니다. 무게는 16kb입니다.

나의 첫 번째 본능은 그것을 텍스트 편집기를 통해 전달하는 것이었고 매우 이진 모양의 파일이 제시되었습니다. 그런 다음 문자열 (아래 참조)을 통과하고 16 진 편집자와 함께 열었습니다. 아래 줄을 제외하고는 많은 정보를 얻을 수 없었습니다. 압축 형식 세부 사항이나 다른 것이 없습니다.

$ strings omnipoddata.ibf 
Insulet
OmniPod
basal 1
Post-meal
e-meal
Pre-meal
e-bedtime
Pre-bedtime
.(@P
.(@P
.(@P

이 과정에서 다음 단계는 무엇입니까? 나는 역동적 인 언어 사람이므로 루비를위한 모든 자원은 훌륭하거나 파이썬이 될 것입니다. 테스트 중심의 리버스 엔지니어링 프로세스가 있습니까?

내가 얻고 자하는 데이터에 관한 한, 내 진전 (인슐린 섭취, 혈당 판독, 타임 스탬프)에 대한 자세한 정보를 얻기 위해 차트를 작성하고자하는 정보입니다. Windows 소프트웨어 패키지에서 모두 가능합니다.

도움이 되었습니까?

해결책

다음에 내가 할 일은 숫자를 찾는 것입니다. 숫자를 인코딩 할 수있는 방법에는 여러 가지가 있습니다.

  • ints (1, 2, 4 바이트, 다양한 엔지니어)
  • 부동 소수점 (다양한 크기)
  • 고정 지점 또는 다른 이상한 형식

화면의 데이터를 볼 수 있기 때문에 거기에있을 숫자를 아는 것이 좋습니다. 그래서 나는 파일에서 그 숫자를 찾습니다 (위의 다양한 형식). 이것은 최소한 몇 가지 데이터를 제공해야합니다.

다음으로 타임 스탬프를 언급합니다. 타임 스탬프는 일반적으로 32 비트 부호없는 INTS가 있기 때문에 일반적으로 매우 쉽고, 좋은 야구장 범위 (Time () +/- 몇 100,000)이 있습니다. 그러니 거기 근처의 int를 찾으십시오.

육각 편집기와 함께이 모든 것을 손으로 할 수 있거나 작은 스크립트를 쓸 수 있습니다. 데이터를 꺼내기 시작하면 패턴을 찾으십시오. 이것은 더 흥미로운 분야를 찾는 데 많은 도움이 될 것입니다. 행운을 빕니다!

다른 팁

알려진 값의 16 진실을 찾기 시작했습니다. (그림과 같이) 장치에 화면이 있습니까? 아니면 Windows에서 볼 수 있습니까?

예를 들어 Windows 버전에서 찾은 16 진수에서 일련의 숫자를 찾을 수 있다면 '레코드'형식을 알아낼 수 있습니다. 그것을 살펴보면, 그것은 일종의 헤더/버전 정보와 16 진수로 인코딩 된 숫자 값이있는 일련의 레코드를 포함하는 것 같습니다.

그것은 당신에게 좋은 출발점을 제공해야합니다.

Windows 버전 용 VM을 실행하고 OLLYDBG를 사용하여 리버스 조립을합니다. 이것이 바이너리 파일을 응시하고 어떤 변수가 어떤 오프셋과 관련이 있는지 추측하는 대신 가장 좋은 방법입니다.

자신의 인슐린 펌프를 엉망으로 만드는 것은 아마도 가장 똑똑한 아이디어가 아닐 것입니다. 파일이 펌프를 조작한다고 가정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top