Apple公司全线在mac os与ios两个操作系统上内置了FaceTime与iMessage两个应用。完美替代运营商的短信与电话。并且FaceTime与iMessage的帐号不仅仅与Apple ID 绑定,同时也与使用这Apple ID的手机号码绑定,这样的漏洞自然给无孔不入的中国的群发垃圾信息商们提供了后门。
这样iPhone的iMessage时不时就能收到以邮件为发送者的垃圾iMessage,尤其是嘀嗒打车群发的最多,听说是厦门一家公司操刀的。针对iMessage的群发实现,新闻稿上说是花几分钟写个脚本就可以了。经过研究终于实现了全自动控制苹果手机来自动发送,还可以通过群控方式实现大批量群发。
一、苹果手机通过快捷指令群发
1:app store搜索现成的快捷指令脚本
2:添加完打开设置——快捷指令——高级———允许共享大量数据打开
3:打开苹果手机 通用 中搜索快捷指令,启动发信息的指令(默认是给自己手机通讯录中的联系人发送imessages短信)
4.电脑安装91助手后将手机数据全部导入到当前手机通讯录中,启动快捷指令,进行批量群发。
二、苹果手机通过脚本单机群发思路
1.通过LUA脚本来实现苹果手机上群发脚本代码
main.lua代码示例:
1 require("TSLib");--导入扩展库 2 require("lib")--导入方法库 3 4 5 init(0) -- 0表示竖屏 1表示横屏 6 unlock_iphone() --自动解锁IOS屏幕密码锁,前提是Iphone手机未设置屏幕锁密码 7 8 9 -- 主线任务处理 10 function 主线任务() 11 --根据不同的IOS设备分辨率去执行不同的任务 12 local ios_version = get_ios_version(w, h) 13 if ios_version=="640x960" then --分辨率:640x960 机型:iPhone 4,4S, iPod touch 4 14 iphone4_work("phone.txt") 15 elseif ios_version=="750x1334" then --分辨率:750x1334 机型:iPhone 6(S)/7/8 16 iphone6_work("phone.txt") 17 elseif ios_version=="1242x2208" then --分辨率:1242x2208 机型:iPhone 6 P/6SP/7P/8P 18 iphone8p_work("phone.txt") 19 end 20 end 21 22 23 24 function iphone4_work(filename) 25 local file = userPath().."/res/".. filename 26 local bool = exists(file) --检测指定文件是否存在 27 if bool then 28 dialog("iPhone 4,4S, iPod touch 4 分辨率:分辨率:640x960") 29 elseif 30 dialog(filename .. " 数据文件不存在,请检查是否已上传.",0) 31 lua_exit(); 32 end 33 end 34 35 36 37 function iphone6_work(filename) 38 local file = userPath().."/res/".. filename 39 local bool = exists(file) --检测指定文件是否存在 40 if bool then 41 dialog("iPhone 6 P/6SP/7P/8P 分辨率:分辨率:1242x2208") 42 elseif 43 dialog(filename .. " 数据文件不存在,请检查是否已上传.",0) 44 lua_exit(); 45 end 46 end 47 48 49 50 function iphone8p_work() 51 dialog("iPhone 6 P/6SP/7P/8P 分辨率:分辨率:1242x2208") 52 end 53 54 55 -- -- --执行主线任务 56 if 任务 == "Imagess群发信息" then 57 --启动应用 0:启动成功 1:启动失败 58 r = runApp("com.apple.MobileSMS"); 59 mSleep(3000); 60 if r == 0 then -- 启动成功则执行 61 主线任务() 62 else 63 closeApp("com.apple.MobileSMS") 64 dialog("应用启动失败",3); 65 end 66 end
lib.lua代码示例:
1 --解锁屏幕密码 2 function unlock_iphone() 3 --如果要在设备自启动时解锁屏幕直接使用 unlockDevice 函数即可 4 sysver = getOSVer(); 5 --获取系统版本 6 local t = strSplit(sysver,".") 7 flag = deviceIsLock(); 8 if flag == 0 then 9 --dialog("未锁定",3); 10 toast("iPhone屏幕锁未锁定") 11 elseif tonumber(t[1]) >= 10 then 12 doublePressHomeKey() 13 unlockDevice(); 14 --按一次 Home 键 15 mSleep(20) 16 pressHomeKey(0); 17 pressHomeKey(1) 18 mSleep(1000) 19 else 20 pressHomeKey(0); 21 pressHomeKey(1) 22 --解锁屏幕 23 unlockDevice(); 24 mSleep(1000) 25 end 26 end 27 28 29 --获取IOS设备分辨率 30 function get_ios_version(width, height) 31 if width == 640 and height == 960 then --iPhone 4,4S, iPod touch 4 32 --iPhonedialog("iPhone 4,4S, iPod touch 4 \n".."分辨率:640x960") 33 return "640x960" 34 elseif width == 640 and height == 1136 then --iPhone SE, 5, 5S, iPod touch 5 35 --dialog("iPhone SE, 5, 5S, iPod touch 5 \n".."分辨率:640x1136") 36 return "640x1136" 37 elseif width == 750 and height == 1334 then --iPhone 6(S)/7/8 38 -- dialog("iPhone 6(S)/7/8 \n".."分辨率:750x1334") 39 return "750x1334" 40 elseif width == 1242 and height == 2208 then --iPhone 6 P/6SP/7P/8P 41 --dialog("iPhoneiPhone 6 P/6SP/7P/8P \n".."分辨率:1242x2208") 42 return "1242x2208" 43 elseif width == 1225 and height == 2436 then --iPhone X 44 --dialog("iPhoneiPhoneiPhone X \n".."分辨率:1225x2436") 45 return "1225x2436" 46 elseif width == 828 and height == 1792 then --iPhone XR/11 47 --dialog("iPhone XR/11 \n".."分辨率:828x1792") 48 return "828x1792" 49 elseif width == 1242 and height == 2668 then --iPhone XS Max/11 Pro Max 50 --dialog("iPhone XS Max/11 Pro Max \n".."分辨率:1242x2668") 51 return "1242x2668" 52 elseif width == 1125 and height == 2436 then --iPhone XS/11 Pro 53 --dialog("iPhone XS/11 Pro \n".."分辨率:1125x2436") 54 return "1125x2436" 55 end 56 end 57 58 59 --检测指定文件是否存在 60 function exists(file_name) 61 local f = io.open(file_name, "r") 62 if f ~= nil then 63 return true and f:close() 64 else 65 return false 66 end 67 end 68 69 70 --将指定文件中的内容按行读取 71 function read_file(path) 72 local file = io.open(path,"r"); 73 if file then 74 local _list = {}; 75 for l in file:lines() do 76 table.insert(_list,l) 77 end 78 file:close(); 79 return _list 80 end 81 end 82 83 84 -- 读取取txt文件中一行数据内容 85 function readFile_one() 86 local file = userPath().."/res/conntent.txt" 87 local bool = exists(file) --检测指定文件是否存在 88 if bool then 89 local list = read_file(file)--将指定文件中的内容按行读取; 返回 table/nil 文件内容 90 if #list > 0 then -- #表示取长度 91 for i=1, #list,1 do 92 --dialog(string.lower(list[i])) 93 return string.lower(list[i]) 94 end 95 end 96 else 97 dialog("话术内容文件 conntent.txt 不存在,请检查是否已上传.",0) 98 lua_exit(); 99 end 100 end 101 102 103 --读取txt文件中所有的数据内容 104 function readFile_all() 105 local file = userPath().."/res/conntent.txt" 106 local bool = exists(file) --检测指定文件是否存在 107 if bool then 108 local f = io.open(file,'r') 109 local content = f:read('*all') 110 --dialog(content) 111 f:close() 112 return content 113 else 114 dialog("话术内容文件 conntent.txt 不存在,请检查是否已上传.",0) 115 lua_exit(); 116 end 117 end 118 119 120 121 --生成随机数, 生成10位随机字母 122 function randomStr(str, num) 123 local reStr =''; 124 math.randomseed(tostring(os.time()):sub(5):reverse()); 125 for i = 1, num do 126 local getStr = math.random(1, string.len(str)); 127 reStr = reStr .. string.sub(str, getStr, getStr); 128 end 129 return reStr; 130 end 131 132 133 --点击操作 134 function click(x, y, s) 135 local s=s or nil 136 touchDown(0,x,y) 137 mSleep(50) 138 touchUp(0,x,y) 139 end 140 141 142 --连续滑动,好用 143 function clickMove(x1,y1,x2,y2,n) 144 local w = math.abs(x2-x1); 145 local h = math.abs(y2-y1); 146 touchDown(0,x1,y1); 147 mSleep(50); 148 if x1 < x2 then 149 w1 = n; 150 else 151 w1 = -n; 152 end 153 if y1 < y2 then 154 h1 = n; 155 else 156 h1 = -n; 157 end 158 if w >= h then 159 for i = 1 , w,n do 160 x1 = x1 + w1; 161 if y1 == y2 then 162 else 163 y1 = y1 + math.ceil(h*h1/w); 164 end 165 touchMove(0,x1,y1); 166 mSleep(10); 167 end 168 else 169 for i = 1 ,h,n do 170 y1 = y1 + h1; 171 if x1 ==x2 then 172 else 173 x1 = x1 + math.ceil(w*w1/h); 174 end 175 touchMove(0,x1,y1); 176 mSleep(10); 177 end 178 end 179 mSleep(50); 180 touchUp(0,x1,y1); 181 end
2.单台苹果手机自动发送imessages信息:
/* 通过LUA脚本来实现苹果手机上群发脚本代码,值得注意的是,运行脚本发送之前 必须首先用打开91助手或爱思助手登连接苹果手机后,找到 "文件管理" 将发送的数据 phone.txt 和发送内容conntent.txt上传导入 /res/目录下. */
3.电脑端群控所有手机设备群发思路
/* 通过电脑上安装的中控(群控)软件,首先通过中控软件批量扫描自己的局域网或广域网的手机设备后,并上传LUA自动群发imessages脚本,发送的数据 phone.txt 和发送内容conntent.txt 到中控软件,然后使用中控(群控)软件来批量让所有手机设备自动运行群发脚本。
(1)windows/mac os电脑上安装中控(群控)软件
(2)通过电脑上安装的中控(群控)软件批量将所有越狱的苹果手机添加到(中控)群控端,然后通过群控软件一键给所有手机已下达运行群发脚本的指令,使全部手机自动运行群发脚本进行自动群发imessages信息。
注意:自动群发脚本目前只支持以下越狱苹果系统版本(其他版本的苹果系统可以自行更改代码,或者有偿联系作者定制哦咨询或联系 QQ: )
机型:iPhone 4,4S, iPod touch 4 分辨率:640x960
机型:iPhone 6(S)/7/8 分辨率:750x1334
机型:iPhone 6 P/6SP/7P/8P 分辨率:1242x2208