Jak wysłać smsa, a następnie zastąpić go kolejnym na telefonie adresata

Cześć,
Minęło już trochę czasu od chwili kiedy poznałem sposób w jaki kodowane są smsy. W jednym z poprzednich wpisów przedstawiłem PDU, czyli ramkę zawierającą całego zakodowanego smsa, gotowego do wysyłki.
Chcę wam pokazać że smsy są podatne na manipulacje.

Nie odpowiadam za nielegalne używanie tego sposobu.
Pokazuję go tylko po to, by pokazać ukryte funkcjonalności smsów

Dlatego dzisiaj pokażę co należy zrobić żeby wysłać SMSa, a następnie go podmienić ;)
Potrzebujemy 3 rzeczy:
  • Modemu GSM który można się podłączyć do komputera(połączenie szeregowe) - (można wykorzystać moduł GSM A6 z konwerterem usb-uart)
  • Programu PDUSPY - służy do wygenerowania ramki PDU - działa pod windowsem, dostępny na stronie twórcy - można go uruchomić pod linuxem
    używając PlayOnLinux(pduspy należy uruchomić z parametrem -enablefulllength - żeby odblokować wszystkie jego możliwości)
  • Programu Cutecom - dostępny na linuxa - sposób połączenia z modemem i jego sterowania został pokazany w poprzednim artykule 
Wyślemy dwa SMSy - jeden z wiadomością "Będę w domu o 23" a drugi "Będę w domu o 5tej nad ranem". Ten drugi zastąpi pierwszy ;).
Najpierw wygenerujmy  ramkę PDU z PDUSPY.


Ustawienia
Tworzenie wiadomości


  • Wybieramy preset wiadomości Replace
  • Używany alfabet 16 bitowy UCS - polskie znaki
















  • Wpisujemy numer SMSC - numer centrum smsowego naszego operatora - jest do znalezienia w internecie - tutaj numer virgin mobile
  • Wpisujemy numer adresata wiadomości
  • Wpisujemy treść wiadomości









  • Kopiujemy wygenerowane PDU
    i wklejamy je do programu
    zmieniającego znaki ASCII
    na HEX - może to być konwerter online - cokolwiek


  • Sprawdzamy długość PDU
  • Odejmujemy od niego liczbę 8
  • Otrzymaną liczbę wstawiamy później
    do komendy "AT+CMGS=x" w miejsce x











 I tak oto otrzymaliśmy PDU  - które zamieniliśmy na postać HEX i obliczyliśmy wartość którą musimy wpisać  do AT+CMGF=x - w tym przypadku x = 28 - bo PDU ma długość 36

Teraz musimy naszego smsa jeszcze wysłać.
  • Najpierw łączymy się z modemem poprzez połączenie szeregow
  • Ustawiamy tryb wysyłania smsów komendą - "AT+CMGF=0"
    (TEXT - 1 , PDU - 0)
  • Wpisujemy polecenie które pozwoli nam wysłać smsa - podajemy w nim długość PDU minus 8 - czyli w naszym przypadku gdy długość pdu to 36 - 28 - "AT+CMGS=28"
  • Przechodzimy w Cutecomie na tryb HEX input - i wklejamy naszego HEXa na końcu dodając jeszcze 1A - i zatwierdzamy enterem
  • I leci SMS
Żeby wysłać drugiego smsa, powtarzamy wszystko, z tym, że parametr CMGS  będzie inny(bo sms będzie dłuższy). Zastąpi on poprzedni sms na telefonie adresata ;).
Najpierw u adresata pojawiła się ta pierwsza wiadomość...
(po lewej)

Dopiero po chwili, gdy wysłaliśmy drugą, pierwsza zamieniła się w drugą(po prawej)







Dobrego dnia
M.

Komentarze

  1. Czy akcja zadziała z modemem na usb ?takim np do aero2 ?

    OdpowiedzUsuń
    Odpowiedzi
    1. czy jest to usb, czy na porcie szeregowym to bez znaczenia - ten na porcie usb tworzy wirtualny port szeregowy (np. COM7) - w rzeczywistości może być więcej niż jeden port - trzeba odnaleźć ten, który jest udostępniony dla modemu. Po otwarciu portu można sprawdzić poleceniem AT, czy można tak się komunikować z modemem.

      Usuń
    2. Można, tak właśnie jak opisał micra

      Usuń
  2. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  3. Bardzo fajnie napisany artykuł, widziałem na PDUSpy, że możesz też modyfikować UDH: "you may set and reset the message indications in the receiving phone, and you may instruct the phone to immediately delete the message (without displaying the message, but with setting the indicators). It is NOT NICE to do this with other peoples phones", testowałeś to może? ;)

    OdpowiedzUsuń

Prześlij komentarz

Popularne posty