苹果越狱和免越狱手机实现iMessage自动群发的协议分析
Apple公司全线在mac os与ios两个操作系统上内置了FaceTime与iMessage两个应用。完美替代运营商的短信与电话。并且FaceTime与iMessage的帐号不仅仅与Apple ID 绑定,同时也与使用这Apple ID的手机号码绑定,这样的漏洞自然给无孔不入的群发垃圾信息商们提供了后门。这样iPhone的iMessage时不时就能收到发送者的垃圾iMessage,针对iMessage的群发实现,新闻稿上说是花几分钟写个脚本就可以了。经过研究终于实现了全自动控制苹果手机来自动发送,还可以通过群控方式实现大批量群发。
一、苹果手机上(ios系统)实现imessage群发方式及原理总结
1.通过iphone手机上自带的快捷指令进行群发。 (优点:入门门槛低,iphone自带快捷指令
缺点:发送量过多易被封ID,更换发送数据较麻烦,手机设备较多时,操作起来费时间。)
2.通过编写运行于iphone手机上的脚本来实现群发imessages短信 (优点:发送速率快,无需证书签名,一台电脑或手机能群控N台iphone手机 缺点:iphone手机需要越狱,群控需要付费第三方群控软件)
3.通过编写运行于iphone手机上的按键精灵脚本实现群发imessages短信 (优点:发送速率快,无需证书签名,一台电脑群控N台iphone手机 缺点:iphone手机需要越狱,群控需要付费第三方群控软件)
4.通过编写运行于iphone手机上的app来调用iphone手机上的imessages应用实现群发 (优点:发送速率快,ipa安装包需签名证书,一台电脑群控N台iphone手机 缺点:iphone手机无需越狱,群控需要付费第三方群控软件,每台手机的证书签名都需要付费)
二、快捷指令群发imessage
1:App Store搜索现成的快捷指令脚本(或打开siri浏览器访问 https://apps.apple.com/app/shortcuts/id915249334 进行下载快捷指令)
2:添加完打开设置——快捷指令——高级———允许共享大量数据打开
3:打开苹果手机 通用 中搜索快捷指令,启动发信息的指令(默认是给自己手机通讯录中的联系人发送imessages短信)
4.电脑安装91助手后将手机数据全部导入到当前手机通讯录中,启动快捷指令,进行批量群发。
三、苹果手机安装脚本程序实现自动发送代码
/* iPhone手机安装中控脚本或群发程序来实现无人值守发送,windows电脑上安装群控软件来控制全部iphone手机,实现自动发送,更换手机序列号来实现防封app id,群控软件一键群控所有的手机全自动群发 ,升级版本参考博文首页相关文章: https://www.cnblogs.com/ */
1.windows/mac os电脑上安装群控软件全自动控制同局域网或广域网下的全部手机,群控软件给所有手机分别上传不同或相同的发送数据和发送内容,不用去单独管理手机,群控软件全自动给所有手机安装群发程序,自动启动,停止群发。
main 主库代码示例(部分核心代码如下):
require("TSLib");--导入扩展库 require("lib")--导入方法库 init(0) -- 0表示竖屏 1表示横屏 unlock_iphone() --自动解锁IOS屏幕密码锁,前提是Iphone手机未设置屏幕锁密码 -- 主线任务处理 function 主线任务() --根据不同的IOS设备分辨率去执行不同的任务 local ios_version = get_ios_version(w, h) if ios_version=="640x960" then --分辨率:640x960 机型:iPhone 4,4S, iPod touch 4 iphone4_work("phone.txt") elseif ios_version=="750x1334" then --分辨率:750x1334 机型:iPhone 6(S)/7/8 iphone6_work("phone.txt") elseif ios_version=="1242x2208" then --分辨率:1242x2208 机型:iPhone 6 P/6SP/7P/8P iphone8p_work("phone.txt") end end function iphone4_work(filename) local file = userPath().."/res/".. filename local bool = exists(file) --检测指定文件是否存在 if bool then dialog("iPhone 4,4S, iPod touch 4 分辨率:分辨率:640x960") elseif dialog(filename .. " 数据文件不存在,请检查是否已上传.",0) lua_exit(); end end function iphone6_work(filename) local file = userPath().."/res/".. filename local bool = exists(file) --检测指定文件是否存在 if bool then dialog("iPhone 6 P/6SP/7P/8P 分辨率:分辨率:1242x2208") elseif dialog(filename .. " 数据文件不存在,请检查是否已上传.",0) lua_exit(); end end function iphone8p_work() dialog("iPhone 6 P/6SP/7P/8P 分辨率:分辨率:1242x2208") end -- -- --执行主线任务 if 任务 == "Imagess群发信息" then --启动应用 0:启动成功 1:启动失败 r = runApp("com.apple.MobileSMS"); mSleep(3000); if r == 0 then -- 启动成功则执行 主线任务() else closeApp("com.apple.MobileSMS") dialog("应用启动失败",3); end end
lib辅助库代码示例:
--解锁屏幕密码 function unlock_iphone() --如果要在设备自启动时解锁屏幕直接使用 unlockDevice 函数即可 sysver = getOSVer(); --获取系统版本 local t = strSplit(sysver,".") flag = deviceIsLock(); if flag == 0 then --dialog("未锁定",3); toast("iPhone屏幕锁未锁定") elseif tonumber(t[1]) >= 10 then doublePressHomeKey() unlockDevice(); --按一次 Home 键 mSleep(20) pressHomeKey(0); pressHomeKey(1) mSleep(1000) else pressHomeKey(0); pressHomeKey(1) --解锁屏幕 unlockDevice(); mSleep(1000) end end --获取IOS设备分辨率 function get_ios_version(width, height) if width == 640 and height == 960 then --iPhone 4,4S, iPod touch 4 --iPhonedialog("iPhone 4,4S, iPod touch 4 \n".."分辨率:640x960") return "640x960" elseif width == 640 and height == 1136 then --iPhone SE, 5, 5S, iPod touch 5 --dialog("iPhone SE, 5, 5S, iPod touch 5 \n".."分辨率:640x1136") return "640x1136" elseif width == 750 and height == 1334 then --iPhone 6(S)/7/8 -- dialog("iPhone 6(S)/7/8 \n".."分辨率:750x1334") return "750x1334" elseif width == 1242 and height == 2208 then --iPhone 6 P/6SP/7P/8P --dialog("iPhoneiPhone 6 P/6SP/7P/8P \n".."分辨率:1242x2208") return "1242x2208" elseif width == 1225 and height == 2436 then --iPhone X --dialog("iPhoneiPhoneiPhone X \n".."分辨率:1225x2436") return "1225x2436" elseif width == 828 and height == 1792 then --iPhone XR/11 --dialog("iPhone XR/11 \n".."分辨率:828x1792") return "828x1792" elseif width == 1242 and height == 2668 then --iPhone XS Max/11 Pro Max --dialog("iPhone XS Max/11 Pro Max \n".."分辨率:1242x2668") return "1242x2668" elseif width == 1125 and height == 2436 then --iPhone XS/11 Pro --dialog("iPhone XS/11 Pro \n".."分辨率:1125x2436") return "1125x2436" end end --检测指定文件是否存在 function exists(file_name) local f = io.open(file_name, "r") if f ~= nil then return true and f:close() else return false end end --将指定文件中的内容按行读取 function read_file(path) local file = io.open(path,"r"); if file then local _list = {}; for l in file:lines() do table.insert(_list,l) end file:close(); return _list end end -- 读取取txt文件中一行数据内容 function readFile_one() local file = userPath().."/res/conntent.txt" local bool = exists(file) --检测指定文件是否存在 if bool then local list = read_file(file)--将指定文件中的内容按行读取; 返回 table/nil 文件内容 if #list > 0 then -- #表示取长度 for i=1, #list,1 do --dialog(string.lower(list[i])) return string.lower(list[i]) end end else dialog("话术内容文件 conntent.txt 不存在,请检查是否已上传.",0) lua_exit(); end end --读取txt文件中所有的数据内容 function readFile_all() local file = userPath().."/res/conntent.txt" local bool = exists(file) --检测指定文件是否存在 if bool then local f = io.open(file,'r') local content = f:read('*all') --dialog(content) f:close() return content else dialog("话术内容文件 conntent.txt 不存在,请检查是否已上传.",0) lua_exit(); end end --生成随机数 function randomStr(str, num) local reStr =''; math.randomseed(tostring(os.time()):sub(5):reverse()); for i = 1, num do local getStr = math.random(1, string.len(str)); reStr = reStr .. string.sub(str, getStr, getStr); end return reStr; end --点击操作 function click(x, y, s) local s=s or nil touchDown(0,x,y) mSleep(50) touchUp(0,x,y) end --连续滑动 function clickMove(x1,y1,x2,y2,n) local w = math.abs(x2-x1); local h = math.abs(y2-y1); touchDown(0,x1,y1); mSleep(50); if x1 < x2 then w1 = n; else w1 = -n; end if y1 < y2 then h1 = n; else h1 = -n; end if w >= h then for i = 1 , w,n do x1 = x1 + w1; if y1 == y2 then else y1 = y1 + math.ceil(h*h1/w); end touchMove(0,x1,y1); mSleep(10); end else for i = 1 ,h,n do y1 = y1 + h1; if x1 ==x2 then else x1 = x1 + math.ceil(w*w1/h); end touchMove(0,x1,y1); mSleep(10); end end mSleep(50); touchUp(0,x1,y1); end
2.其他
注意:文中包含的脚本代码、工具、系统、图样只作为技术学习研究,请勿作为非法用途,因违反相关规定而触犯法律的,一切后果自负,与作者无关。
(1)苹果手机在启动全自动发脚本之前,首先手机设备 “通用-信息”中设置 "手机号作为发送号" 并且关闭 "作为短信发送" 功能。
(2)开启苹果手机的飞行模式,并设置连接Wife,通过无线或4G信号网络去发送iMessages信息
(3)全自动群发imessages脚本目前支持以下iphone手机的IOS版本(其他版本的苹果IOS系统可以自行修改开发,有意联系)
机型:iPhone 4,4S, iPod touch 4 分辨率:640x960 支持 机型:iPhone SE, 5, 5S, iPod touch 5 分辨率:640x1136 支持 机型:iPhone 6(S)/7/8 分辨率:750x1334 支持 机型:iPhone 6 P/6SP/7P/8P 分辨率:1242x2208 支持 机型:iPhone X 分辨率:1225x2436 支持 机型:iPhone XR/11 分辨率:828x1792 支持 机型:iPhone XS Max/11 Pro Max 分辨率:1242x2668 支持 机型:iPhone XS/11 Pro 分辨率:1125x2436 支持