banner
뉴스 센터
우리의 약속은 신뢰할 수 있고 효율적인 전문 기술과 솔루션을 제공하는 것입니다.

로직 분석기: Raspberry Pi의 비밀 활용

Sep 02, 2023

오늘 저는 해킹 기술을 완전히 새로운 수준으로 끌어올리고 큰 비용을 들이지 않고도 이를 수행할 수 있는 도구를 강조하고 싶습니다. 실제로 얼마나 많은 디버깅 시간을 절약할 수 있는지, 얼마나 많은 재미있는 작업을 잠금 해제할 수 있는지를 고려하면, 그리고 추가할 수 있는 수많은 기능이 있으므로 이 도구는 여러분이 얻을 수 있는 가장 저렴한 도구 중 하나일 수 있습니다. 이상한 문제를 디버깅하든, 코드를 최적화하든, 리버스 엔지니어링 중인 가젯을 조사하든, 누군가의 오픈 소스 라이브러리를 이해하려고 하든, 로직 분석기가 없으면 많은 것을 놓칠 수 있습니다. !

일부 해커들이 아직도 로직 분석기가 제공하는 가치를 모르고 있다는 사실이 제게는 가슴 아픈 일입니다. 계속해서 로직 분석기의 전술적 적용을 통해 제가 해킹하고 있던 것에 대해 완전히 다른 관점을 볼 수 있게 되었으며, 이것이 바로 제가 오늘 시연하고 싶은 것입니다.

로직 분석기에는 여러 개의 디지털 입력이 있으며 이러한 디지털 입력의 상태를 지속적으로 읽어 컴퓨터로 보내거나 화면에 표시합니다. 이는 로직 레벨 전용 오실로스코프와 같습니다. 센서를 제어하는 ​​하나의 MCU가 있는 I2C 버스가 있는 경우 로직 분석기를 클록 및 데이터 핀에 연결하고 접지를 연결한 다음 컴퓨터에서 로직 분석기 소프트웨어를 실행하고 실제로 무슨 일이 일어나는지 확인하십시오.

예를 들어, Raspberry Pi GPIO 커넥터의 ID_SC 및 ID_SD 핀을 본 적이 있습니까? 그것들이 무엇을 위한 것인지 궁금하십니까? 이 핀에서 실제로 무슨 일이 일어나는지 확인하고 싶지 않으신가요? 지금 당장 해보자!

나는 Aliexpress나 Amazon에서 구입할 수 있는 10달러짜리 로직 분석기, 노트북, SD 카드와 전원 공급 장치가 있는 Raspberry Pi를 사용하고 있습니다. 여기서는 배선되어 있습니다. 3개의 암-암 와이어, 2개의 신호 및 1개의 접지만 필요합니다. "SD" 및 "SC"는 I2C처럼 들립니다. 일반적인 I2C 주파수는 일반적으로 100kHz 또는 400kHz입니다. 경험에 따르면 주파수를 캡처하려는 데이터 스트림의 클럭 주파수보다 3~4배 크게 설정하는 것이 좋습니다. 따라서 로직 분석기의 샘플링 속도를 2MHz로 설정할 계획입니다. 전송되는 데이터를 따라잡기에는 너무 느린 것으로 판명되면 샘플링 속도를 높이고 샘플링을 다시 수행할 수 있습니다.

제가 사용하고 있는 소프트웨어는 Pulseview입니다. 이는 로직 분석기를 위한 훌륭한 GUI이며 다양한 로직 분석기와 인터페이스할 수 있습니다. 오픈 소스이고, Linux 친화적이며, 해킹이 가능하고, 최근에 유지 관리되지 않았더라도 좋은 UX를 갖추고 있습니다. 배포판 저장소에서 설치하거나 Windows를 사용하는 경우 .exe를 다운로드할 수 있습니다. 로직 분석기가 연결된 상태에서 USB 포트에 연결하고 Pulseview를 실행하고 샘플링 속도와 판독 기간을 무한대로 설정하고 관심 있는 두 채널을 제외한 모든 채널을 비활성화한 다음 'Capture'를 누르고 Pi를 연결합니다. 권력에.

Pi를 연결한 후 3.3V 전원이 나타나면서 두 핀 모두의 로직 레벨이 올라가고 몇 초 후에 이 두 핀에 짧은 활동이 발생합니다. 확대하면 활동이 실제로 I2C처럼 보입니다. Pulseview에서는 디코딩하기가 매우 쉽습니다! 설정 작업 표시줄에서 "프로토콜 디코더" 버튼을 누르고, 키보드에서 "I2C"를 입력하고, I2C 디코더를 선택한 다음, 왼쪽의 디코더 태그를 두 번 클릭하고 어떤 채널이 SCL과 SDA인지 선택하세요. 쉽게 알 수 있습니다. SCL이 보일 것입니다. 최고점과 최저점이 동일한 클록 신호와 같지만 SDA의 최고점과 최저점 간격은 다양합니다. 위 그림에서 D1은 SCL이고 D0은 SDA입니다. 디코딩된 I2C 이벤트를 확대하면 이 활동이 주소 0x50에서 데이터를 읽기 위한 I2C 요청임을 알 수 있으며 이러한 요청 뒤에는 NACK 이벤트(빨간색 표시)가 나타나 응답을 받지 못한다는 의미입니다.

이제 Raspberry Pi HAT 설계를 살펴보면 이러한 I2C 요청이 Pi가 장치를 로드할 수 있도록 HAT 장치 정보가 포함된 I2C EEPROM을 찾는 Raspberry Pi 부트로더에서 온다는 것을 이미 짐작할 수 있습니다. 트리 오버레이 데이터를 사용하여 해당 데이터를 사용하여 연결된 HAT의 하드웨어를 구성합니다. 이 프로세스에 대해 온라인에서 얻을 수 있는 작은 정보에 의존할 필요가 없습니다. 로직 분석기를 사용하면 실제로 무슨 일이 일어나는지 조사하고 숨겨진 기능과 주의 사항을 찾을 수 있으므로 독점 하드웨어라도 방해가 되지 않습니다. 가능한 한.