Ir al contenido


Foto

Envio masivo de mensajes de texto a celulares


  • Por favor identifícate para responder
3 respuestas en este tema

#1 cHackAll

cHackAll

    Advanced Member

  • Administrador
  • 599 mensajes

Escrito 17 noviembre 2009 - 10:12



delphi
  1. program BulkSMS; // by cHackAll
  2.  
  3. uses Windows;
  4.  
  5. function _itoa(Value: Integer; lpBuffer: PChar; Radix: Integer): PChar; cdecl external 'ntdll';
  6.  
  7. var
  8. hKey: Windows.HKEY;
  9. lpFile, lpBuffer: PChar;
  10. Buffer: array [0..255] of Cardinal;
  11. hFile, hDevice, hOutput, uBytes: Integer;
  12.  
  13. function SendCommand(lpBuffer: PChar): ShortString;
  14. var uBytes: Integer;
  15. begin
  16. repeat uBytes := 0;
  17.   repeat Inc(uBytes);
  18.   until lpBuffer[uBytes - 1] < #27;
  19.   Inc(lpBuffer, _lwrite(hDevice, lpBuffer, uBytes));
  20.   _lwrite(hOutput, #10, 1);
  21.  
  22.   repeat uBytes := _lwrite(hOutput, @Result, _lread(hDevice, @Result, SizeOf(Result)));
  23.   until (Result[uBytes - 2] = '>') or (Result[uBytes - 4] = 'O');
  24. until lpBuffer[0] = #0;
  25. end;
  26.  
  27. begin
  28. hFile := _lopen('SMS.txt', OF_READ);
  29. if hFile = -1 then Exit;
  30. Buffer[0] := 5;
  31. RegOpenKey(HKEY_LOCAL_MACHINE, 'HARDWARE\DEVICEMAP\SERIALCOMM', hKey);
  32. if RegQueryValueEx(hKey, '\Device\USBSER000', nil, nil, @Buffer[1], @Buffer) <> 0 then Exit;
  33. Buffer[0] := $5C2E5C5C;
  34. hDevice := _lopen(@Buffer, OF_READWRITE);
  35. if hDevice = -1 then Exit;
  36. Buffer[1] := Buffer[1] and 0;
  37. Buffer[0] := Buffer[0] and 20;
  38. SetCommTimeouts(hDevice, PCommTimeouts(@Buffer)^);
  39. SetCommState(hDevice, PDCB(PChar(#28#0#0#0#0#132#3#0#21#32#0#0#0#0#10#0#10#0#8#0#0#17#19#0#0#0#0#0))^);
  40.  
  41. uBytes := GetFileSize(hFile, nil);
  42. lpFile := Ptr(LocalAlloc(LMEM_ZEROINIT, uBytes + 1));
  43. _lread(hFile, lpFile, uBytes);
  44.  
  45. AllocConsole;
  46. hOutput := GetStdHandle(STD_OUTPUT_HANDLE);
  47. SendCommand(#27'AT'#13'ATZ'#13'AT+CSCS="HEX"'#13'AT+CMGF=1'#13);
  48.  
  49. repeat
  50.   PInt64(@lstrcpy(@Buffer, 'AT+CMGS="')[9])^ := PInt64(lpFile)^;
  51.   PCardinal(@PChar(@Buffer)[17])^ := $D22;
  52.   lpBuffer := @PChar(@Buffer)[19];
  53.   Inc(lpFile, 8);
  54.   while lpFile[-1] <> #13 do
  55.   begin
  56.     _itoa(Ord(lpFile[0]), lpBuffer, 16);
  57.     Inc(lpBuffer, 2);
  58.     Inc(lpFile);
  59.   end;
  60.   PWord(lpBuffer - 1)^ := 26;
  61.   SendCommand(@Buffer);
  62.   if lpFile[0] = #10 then
  63.   Inc(lpFile);
  64. until lpFile[0] = #0;
  65. end.



  • Abrimos un archivo de texto con los números telefónicos y mensajes SMS
  • Obtenemos el puerto serial (virtual USB) y lo abrimos
  • Inicializamos el teléfono como si fuese un modem
  • Cargamos los números telefónicos y mensajes en memoria
  • Preparamos el celular para el envío de mensajes
  • "Armamos" una "línea" con el código AT de envío de un SMS,
    • el número de teléfono (de 8 dígitos) y
    • el mensaje (en exadecimal)
  • Repetimos el anterior paso hasta terminar el contenido del archivo

Ejemplo de contenido del archivo "SMS.txt";



delphi
  1. 74035366Esta es una prueba de envío masivo de mensajes de texto para mis clientes
  2. 74058089Recuerde que por el mes de las madres, por la compra de un celular le activamos su línea gratis!
  3. 74058118Su cuenta preferencial en nuestra cantina, vence el mes de febrero...
  4. 74058160Su horóscopo dice que va a recibir una cuenta muy especial este día.
  5. 74058092Siii esto es SPAM por celular!!!, compre, compre, compreeee!!
  6. ...
  7. 12345678[mensaje de 160 caracteres][Cr ó CrLf]
  8. ...
  9. 74056266DelphiAccess les desea un muy feliz día laboral



Como verán el ejemplo no está validado para ignorar líneas en blanco, números telefónicos de dimensiones variables u otros y no habrá de funcionar en todos los celulares (es lo mínimo necesario).

Enjoy!
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 17 noviembre 2009 - 12:25

Que interesante code little bro. (y)

74058092Siii esto es SPAM por celular!!!, compre, compre, compreeee!!


:D :D :D

Salud OS


  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 17 noviembre 2009 - 12:27

A ver si entiendo,

- ¿se abre un archivo previamente creado o se crea al momento, o debemos crearlo manualmente y llamar el archivo como SMS.txt?
- luego de lo anterior ¿ya el code hace todo el trabajo?.
  • 0

#4 cHackAll

cHackAll

    Advanced Member

  • Administrador
  • 599 mensajes

Escrito 17 noviembre 2009 - 03:54

A ver si entiendo,

- ¿se abre un archivo previamente creado o se crea al momento, o debemos crearlo manualmente y llamar el archivo como SMS.txt?
- luego de lo anterior ¿ya el code hace todo el trabajo?.


  • 0




IP.Board spam blocked by CleanTalk.