Está en la página 1de 3

Protocolo y Mensajes SMS.

(Texo Explicativo)
www.hackersoft.net
Autor -=#NaPa#=- 13/ENERO/2004

Hola a todos este texto explicativo de los SMS esta hecho por petición especial de Erick de
Kemazon.com así que me gustaría que se dieran una vuelta por su sitio.

Primero que nada que es un SMS? Es una cadena de caracteres escritos en un formato que la mayoría de
los aparatos eléctricos adaptados para entender el protocolo entienden. El envió de estos regularmente se
basa en estándares internos que el ISP (o proveedor de red telefónica) Establece para sus propios SMS
manteniendo un estándar para la programación y el parseo de los mismos en cada celular.
El software que usa cada celular es manufacturado por cada compañía (Motorota, Nokia,
Ericsson, etc) por lo cual también podemos encontrar defectos en su software para envió de mensajes
dependiendo del modelo, así como podemos desactivar y activar la función por computadora.
El formato de lo SMS es muy estricto esto que significa que tiene que mantener las líneas y
campos requeridos para el parseo del mensaje en el que lo recibe de no ser así podemos causar conflictos
en el celular o aparato que lo traduce, esto se ve reflejado en varios errores de celulares que explico abajo.
Antes que explicar el formato y demás me gustaría explicar como es que se descubrió que se
podía enviar mensajes gratis a telcel, así que vamos:

En un principio telcel tiene desactivado el SMS desde su pagina teniendo que contratar el
servicio con ellos para que cambien el status del numero en una base de datos, Unefon, Iusacell, Pegaso, y
ahora Movistar tienen activado ese sistema gratuito ya que no verifican en un principio de quien es el
numero, simplemente envían el mensaje, en Unefon y Iusacell, el mensaje es validado en lado del cliente
es decir lo valida un CGI (Perl) a la hora de Hacer el envió por lo tanto si no es un numero valido de la
compañía simplemente saca un mensaje de error impreso en una pagina estática (HTML), en telcel, al no
encontrarse el status de contratado marca un error y envía un mensaje al celular de un BOT que dice
“Contrata el servicio etc etc.” Sin embargo la red de movistar hace la validación en cliente, esto que es, la
validación la hace un javascript parseado en nuestro navegador, no en el servidor, ya que el servidor de
movistar esta linkeado con otros de la misma compañía pero internacionales, y al momento en que la
Legislación en México cambio para unir los estándares de SMS entre compañías, para los ingenieros de
movistar era muy complicado reescribir la aplicación de envió así que la manera mas fácil fue agregando
un simple Javascript de Validación de rango.

Javascript de Validación de Rango:

{
valor = document.frmenvio.to1.value;
rango = valor.substring(0,6);
valida(rango);
if (flag == "X" )
{
alert("El número de celular "+ document.frmenvio.to1.value
+ " no es válido para Telefónica Movistar.\n\n Favor de verificarlo o borrarlo");
return;
}
}

Este se encuentra en Una función llamada ejecuta(), que es la que a final de cuentas realiza el envió
después de validar el rango de numero. Si el numero es de 10 dígitos, si se dejo en blanco etc, se
encuentra dentro de un ciclo IF de javascript por lo cual es tan sencillo como simplemente borrar el
pedazo de código haciendo esto que a la hora de entrar en el ciclo simplemente no haga nada, así es como
se modifica la forma original de Movistar para que no valide el numero que introducimos, al pasar esta
validación el SMS se va al parser smtp de sistema el cual le da el formato esperado y lo envía a la red
(como si fuera un mail), esta al estar compartida por las compañías llega a la red de telcel pensando que
salio de un celular movistar, (si piensan a quien le están cobrando bueno ahí su respuesta a movistar), el
campo de numero de remitente en el formato viene vació por lo cual aparecerá el numero de Buzón del
celular, (en movistar no me lo se) pero en Telcel el numero que aparece es el mismo del celular al que
llega.
Como puedo modificar el formato de los SMS? Bueno es muy fácil de hecho a veces en telcel de teléfono
a teléfono me ha pasado que llega sin remitente esto es porque el SMS se envió incompleto (esto
dependiendo del celular puede ser peligroso) porque? Porque hay celulares que si no leen todos y cada
uno de los puntos del mensaje se pueden llegar a trabar.

El código de la forma de envió Original de Movistar es:

<form name="frmenvio" method="post" action="smtp/enviar_smtp.envia" target="_self">


<select name="clave_numero" size=1 style="WIDTH: 150px"
onChange="document.frmenvio.clave.value=document.frmenvio.clave_numero.value">
<option value=>Selecciona tu ciudad. </option>
<option value=744>Acapulco, Gro.</option>
<option value=633>Agua prieta, Son. </option>
ETC..
</select>
<input type="hidden" name="Conectado" value="1">
<input type="hidden" name="TipoEnvio2" value="2">
<input maxlength="10" name="clave" disabled size="8">
<input maxlength="10" name="to2" size="12" onKeyPress="if (event.keyCode >31 && (event.keyCode
< 48 || event.keyCode > 57)) event.returnValue = false;">
<textarea cols="35" name="Message" rows="3" onKeyUp="cuenta()" wrap="on"
class="entrada"></textarea>
<input name="Total" size=4 value=120>
<a href="javascript:onclick=borra();">
<a href="javascript:onclick=ejecuta();">

Muchos de ustedes le entenderán muchos tal ves no, pero no es tan difícil el primer tag indica a donde se
va el mensaje (motor de envió) action="smtp/enviar_smtp.envia" , El segundo tag es meramente
informativo de que ciudad lo envías y le pone la clave lada, el tercero hace el status de conectado de 0 =
false a 1 = trae y lo demás son mas parámetros validados con javascript. Si notan al enviar todo esto se
ejecuta la función “ejecuta()” que es quien hace las validaciones si son correctas esto hace submit a la
acción de la forma.

Código Modificado:

<FORM name=frmenvio action=http://appsweb.pegasopcs.com.mx/smtp/enviar_smtp.envia method=post


target=_self>
<INPUT type=hidden value=2 name=TipoEnvio>
<input type="hidden" style="WIDTH: 150px"
onchange=document.frmenvio.clave.value=document.frmenvio.clave_numero.value size=1
name=clave_numero value="55">
<INPUT type="hidden" disabled maxLength=10 size=8 name=clave></td></tr>
<INPUT name=to1 onkeypress="if (event.keyCode >31 &amp;&amp; (event.keyCode < 48 ||
event.keyCode > 57)) event.returnValue = false;" size=12 maxLength=10><font size="2">
<INPUT name=to2 onkeypress="if (event.keyCode >31 &amp;&amp; (event.keyCode < 48 ||
event.keyCode > 57)) event.returnValue = false;" size=12 maxLength=10><font size="2">
<INPUT size=4 value=150 name=Total>
<TEXTAREA class=entrada onkeyup=cuenta() name=Message rows=3 wrap=on
cols=33></TEXTAREA>
<input type="submit" value="Enviar" name="B1">
</form>

Aquí si notan enviamos la forma directamente por lo que nos podemos deshacer de toda la función
ejecuta() sin ningún problema, sin embargo aun utilizamos las validaciones de cuenta() y valores de
fromenvio de variables para que la forma siga teniendo consistencia.
Bien después de explicar como hacer para enviar mensajes gratis a cualquier numero, vamos a meternos
un poco en SMS.
Todo llega a una central después de ser validado la cual Checa nuestro saldo en una base de datos en otro
sistema aislado que no esta en el central. Después de esto el mensaje se envía ( si va de celular) ya que si
va de Internet, se va directo al envió ya que toma como que lo envía la central.

Cuando un mensaje esta corrupto puede causar errores el ejemplo claro son los modelos:

• Nokia 5110, Nokia 6210, Siemens S55, (algunos otros Nokia)

Que si uno les envía 160 Puntos quedan trabados y hay que sacarles la batería (por eso las telefónicas
limitan a 150 cuando mucho el mensaje).

El formato de la cabecera del mensaje es:

BEGIN:CARD
N:REGISTRADENAME
TEL:+5555555555
END:VCARD

En los modelos: Nokia 5xxx, 6210, 6250, 7110, (Algunos otros Nokia) Si separamos una letra del
header con espacio, o bien le damos un renglón nuevo o adherimos algo, el celular queda pasmado al
igual que los demás (los que sufren de mayor problemas son los nokia).

Todo esto se envía en formato hexadecimal es decir lo que envía es lo siguiente:

42 45 47 49 4E 3A 43 41 52 44 0D 0A 4E 3A 52 45
47 49 53 54 52 41 44 45 4E 41 4D 45 0D 0A 54 45
4C 3A 2B 35 35 35 35 35 35 35 35 35 35 0D 0A 45
4E 44 3A 56 43 41 52 44 0D 0A

El teléfono lo pasa a Decimal y convierte a strings las cadenas haciendo el header del teléfono y
el mensaje que se envía igual.

El teléfono cuenta con varios status es decir hace varias tareas cuando enviamos un mensaje SMS-
DELIVER y de SMS-SUBMIT son los encargados de avisar y entregar el mensaje los SMS-DELIVER-
REPORT y el SMS-SUBMIT-REPORT avisan si no fue entregado con éxito o viceversa, el El SMS-
STATUS-REPORT dice si el mensaje fue entregado y en que diferencia con la hora de envió del mensaje
(que también es enviada con el mismo), El texto se codifica a 7 bits , la capacidad máxima posible, es de
160 caracteres (7 x 160 = 1120). 1120 es el total de cifras en binario que puede recibir un teléfono. El
SMSC = Short Message Service Centre es el servidor de correo encargado de entregar los mensajes y los
mantiene en memoria hasta que encuentre al receptor del mismo.(se supone) que es el numero de teléfono
conectado a la red, o bien otro SMSC según los acuerdos establecidos, este es el que se conecta con mas
SMSC según los acuerdos nacionales para enviar mensajes a través de ellos y que lleguen a distintos ISP
(Proveedores de servicio)
Dado a la pasada explicación podrán notar que lo que se hizo con la Legislatura nacional es simplemente
conectar en red los centros de mensajeria de las telefónicas, sincronizándolas como un solo SMSC, sin
embargo no tomaron en cuenta las validaciones para evitar mensajes “piratas” que puedan ser enviados de
una a otra, el mensaje al salir por el celular pasa una serie de testeos (para acumular el crédito) pero al
salir de otro SMSC va directo al SMSC de la compañía siguiente sin pasar por el testeo, por eso es que es
posible hacer el envió de mensajes gratis por varias maneras distintas (no las explicare todas) pero si
explique la manera que ya ha sido publicada en www.hackersoft.net y que ha sido copiada en varios
sitios.

Espero que este texto le haya ayudado a comprender mejor el envió de SMS y se den cuenta que no es
cuestión de copiar código hay que saber como funcionan las cosas. Saludos a Kemazon.com a hakim.ws y
sitios afiliados nos vemos en mi próximo texto.

-=#NaPa#=-
napa@hackersoft.net
www.hackersoft.net
Hackersoft Security Networks – México.

También podría gustarte