User:Cow Taurog/SMS

From Second Life Wiki
< User:Cow Taurog
Revision as of 01:21, 14 March 2009 by Cow Taurog (talk | contribs) (original version)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search



READ THIS ALL!



This script will send an SMS from SL to almost any cell phone. It uses the

email to SMS gateways provided by most carriers. Even the worst carriers I've seen provide this service, if your carrier doesn't have one, then I don't know what they're still doing in business, you should switch immediately. As it is right now, only common carriers in the US are supported, although if you would like me to add a carrier (international or not), leave a message on my talk page, this script's talk page, or drop me an IM, I'd be glad to give it my best shot at finding their gateway. Usually it just requires a little searching, but might even include me calling that carrier and harassing them until they give me an answer, or I've talked to a few (thousand) of their employees and I'm satisfied that they have no such service. There is no way to receive a reply to a message sent by this script, it is a one way shot. Any reply that is sent will go nowhere, and charge the sender for nothing. If you'd really like to have someone be able to reply, you should send them an IM if they have their IM forwarded to email when offline (why wouldn't you have that on anyways?). Recent phones can send email also (and if they don't, they should be able to). I have tested this with success, but only with my own AT&T phone. Results from other carriers would be great to hear about. The email header that SL appends to every message will still be displayed in the text, and there is no way to keep from it being attached to the message. I've tried to make the dialog channel as random as possible, and the script will reset itself after each use. This script has potential for easy harassment, so don't ever share any personal details such as your phone number, or your address, name, etc, which could be used to eventually discover your phone number, and any other detail of your identity. You have all the time in the world to find someone with even a tiny bit of info such as a name and a birthday if you're in the comfort and security of your home on your own computer. Also, due to the nature of any wiki, make sure that the code you're using doesn't send phone numbers to some other place, anyone can modify this page at any time, check the edit history first to be safe. The original script will only keep the target's phone number stored in itself for as long as it takes someone to punch out a message, or 160 seconds, whichever comes first. Also, nobody except the person that pays the bill for the account that the phone is under is responsible for any charges on their bill. With that all being said, this script doesn't create a threat at all, every method it uses has been available to the public for quite some time. Don't come to me if you're getting texts every minute for the rest of your life because you did something stupid, I can't help you, just change your number, that's the least you deserve.


Resale of this script is not permitted (even for L$1 as a "freebie", you can sell for L$0 just as easy).
<lsl> // // This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike // 3.0 United States License. // To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/us/ // or send a letter to Creative Commons, 171 Second Street, Suite 300, // San Francisco, California, 94105, USA. // // You may copy, modify, or distribute this work as long as these notices remain, // and the same license is used. // // == Resale of this work is not permitted. == // (even for L$1 as a "freebie") // // © 2009 (cowtaurog@gmail.com)

integer giDialog; key gkTouch; string gsCarrier; string gsRecepient; string gsSubject; string gsMess; integer DEBUG=0; integer listen0; integer listen1; integer listen2; integer giPrvChan; list glCarrierNames=["AT&T","T-Mobile","Verizon","Sprint","Nextel","Virgin","Boost","Cricket"]; list glCarrierSuffix=["@txt.att.net","@tmomail.net","@vtext.com","@messaging.sprintpcs.com","@messaging.nextel.com","@vmobl.com","@myboostmobile.com","@sms.mycricket.com"]; integer pseudo_random(string text, integer nonce, integer start, integer end){

   // this function (c)(cc-by) Strife Onizuka, http://creativecommons.org/licenses/by/3.0/
   return(integer)("0x"+llGetSubString(llMD5String(text,nonce),start,end));

}

default{

   state_entry(){
       integer iLast;
       integer iNow=30*((integer)llGetGMTclock()/30);
       string sFeed=(string)llRound(llGetGMTclock())+(string)llRound(llGetWallclock())+llSHA1String(llGetRegionName()+llGetSimulatorHostname());
       giDialog=pseudo_random(sFeed,(iLast=iNow),2,7);
       llSetObjectName("Send SMS");
   }
   touch_start(integer num){
       gkTouch=llDetectedKey(num-1);
       state running;
   }

} state running{

   state_entry(){
       listen0=llListen(giDialog,"","","");
       llDialog(gkTouch,"Pick the recepient's carrier.",glCarrierNames,giDialog);
   }
   listen(integer chan,string name,key id,string mess){
       gsCarrier=llList2String(glCarrierSuffix,llListFindList(glCarrierNames,[mess]));
       state number;
   }

} state number{

   state_entry(){
       listen2=llListen(giDialog+3,"",gkTouch,"");
       llInstantMessage(gkTouch,"Say the number of the recepient on /"+(string)(giDialog+3)+". Must be numbers only, no spaces, parenthesis, hyphens, or other formatting.");
   }
   listen(integer chan,string name,key id,string mess){
       gsRecepient=mess;
       state subject;
   }

} state subject{

   state_entry(){
       listen2=llListen(giDialog+4,"",gkTouch,"");
       llInstantMessage(gkTouch,"Say the subject on /"+(string)(giDialog+4)+".");
   }
   listen(integer chan,string name,key id,string mess){
       gsSubject=mess;
       state body;
   }

} state body{

   state_entry(){
       listen2=llListen(giDialog+5,"",gkTouch,"");
       llInstantMessage(gkTouch,"Say the body of the message on /"+(string)(giDialog+5)+".");
   }
   listen(integer chan,string name,key id,string mess){
       gsMess=mess;
       state send;
   }

} state send{

   state_entry(){
       llEmail(gsRecepient+gsCarrier,gsSubject,gsMess);
       llInstantMessage(gkTouch,"SMS sent.");
       llResetScript();
   }

} </lsl>