首页 > 其他分享 >iMessage群发协议接触

iMessage群发协议接触

时间:2024-07-19 16:51:28浏览次数:10  
标签:__ Console 接触 iMessage aIndex WriteLine 群发

 Apple公司全线在mac os与ios两个操作系统上内置了FaceTime与iMessage两个应用。完美替代运营商的短信与电话。并且FaceTime与iMessage的帐号不仅仅与Apple ID 绑定,同时也与使用这Apple ID的手机号码绑定,这样的漏洞自然给无孔不入的群发垃圾信息商们提供了后门。
研究怎么实现iMessage群发先是从XMPP协议开始的,因为Apple MAC os上的ichat是XMPP客户端,可以连接iMessage服务器,同时也可连接gtalk与weibo私信。但后面发现iMessage的服务器验证是加密,没办法实现非ichat XMPP客户端连接iMeesage服务器,那就自然没办法实现程序控制往iMeesage服务器批量发送信息。
只能通过MAC OS或者iOS自带的程序往iMeesage服务器发送信息,那要实现群发,自然只能想办法去调用自带的这ichat客户端,在MAC OS系统上Apple公司提供一种叫Apple script的脚本来自动实现任务。可能通过tell application "Messages"就可以激活iMessage客户端自动发送信息。这样实现的群发的思路就很清楚了

 

iMessage协议初接触

public class MyProxy : RealProxy
{
String myURIString;
 MarshalByRefObject myMarshalByRefObject;   
[PermissionSet(SecurityAction.LinkDemand)]
   public MyProxy(Type myType) : base(myType)
   {
      // RealProxy uses the Type to generate a transparent proxy.
      myMarshalByRefObject = (MarshalByRefObject)Activator.CreateInstance((myType));
      // Get 'ObjRef', for transmission serialization between application domains.
      ObjRef myObjRef = RemotingServices.Marshal(myMarshalByRefObject);
      // Get the 'URI' property of 'ObjRef' and store it.
      myURIString = myObjRef.URI;
      Console.WriteLine("URI :{0}", myObjRef.URI);
   }

   [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
   public override IMessage Invoke(IMessage myIMessage)
   {
      Console.WriteLine("MyProxy.Invoke Start");
      Console.WriteLine("");

      if (myIMessage is IMethodCallMessage)
         Console.WriteLine("IMethodCallMessage");

      if (myIMessage is IMethodReturnMessage)
         Console.WriteLine("IMethodReturnMessage");

      Type msgType = myIMessage.GetType();
      Console.WriteLine("Message Type: {0}", msgType.ToString());
      Console.WriteLine("Message Properties");
      IDictionary myIDictionary = myIMessage.Properties;
      // Set the '__Uri' property of 'IMessage' to 'URI' property of 'ObjRef'.
      myIDictionary["__Uri"] = myURIString;
      IDictionaryEnumerator myIDictionaryEnumerator = 
         (IDictionaryEnumerator) myIDictionary.GetEnumerator();

      while (myIDictionaryEnumerator.MoveNext())
      {
         Object myKey = myIDictionaryEnumerator.Key;
         String myKeyName = myKey.ToString();
         Object myValue = myIDictionaryEnumerator.Value;

         Console.WriteLine("\t{0} : {1}", myKeyName, 
            myIDictionaryEnumerator.Value);
         if (myKeyName == "__Args")
         {
            Object[] myObjectArray = (Object[])myValue;
            for (int aIndex = 0; aIndex < myObjectArray.Length; aIndex++)
               Console.WriteLine("\t\targ: {0} myValue: {1}", aIndex, 
                  myObjectArray[aIndex]);
         }

         if ((myKeyName == "__MethodSignature") && (null != myValue))
         {
            Object[] myObjectArray = (Object[])myValue;
            for (int aIndex = 0; aIndex < myObjectArray.Length; aIndex++)
               Console.WriteLine("\t\targ: {0} myValue: {1}", aIndex, 
                  myObjectArray[aIndex]);
         }
      }
      
      IMessage myReturnMessage;
      myIDictionary["__Uri"] = myURIString;
      Console.WriteLine("__Uri {0}", myIDictionary["__Uri"]);

      Console.WriteLine("ChannelServices.SyncDispatchMessage");
      myReturnMessage = ChannelServices.SyncDispatchMessage(myIMessage);

      // Push return value and OUT parameters back onto stack.

      IMethodReturnMessage myMethodReturnMessage = (IMethodReturnMessage)
         myReturnMessage;
      Console.WriteLine("IMethodReturnMessage.ReturnValue: {0}", 
         myMethodReturnMessage.ReturnValue);

      Console.WriteLine("MyProxy.Invoke - Finish");

      return myReturnMessage;
   }
}

 

标签:__,Console,接触,iMessage,aIndex,WriteLine,群发
From: https://www.cnblogs.com/codtina/p/18311822

相关文章

  • idea从0接触第一步需要干什么
    1、下载好idea打开之后,来到welcometoIntellijIDEA页面,点击右下角Configure的Settings。2、选择keymap--》Mainmenu--》Code--》Completion。分别选中Basic和CyclicExpandWord右键Remove掉。3、选中Basic右键选择AddKeyBoardShortcut,按下Alt+/,apply-》ok。4、点击右......
  • 外贸国际短信群发工具的开发源代码!
    在外贸行业中,快速、准确地与客户进行沟通是业务成功的关键之一,随着科技的不断进步,国际短信群发工具成为了外贸从业者不可或缺的工具。本文将通过科普五段源代码,带您深入了解外贸国际短信群发工具的开发原理和实现过程。一、概述外贸国际短信群发工具是一种利用计算机技术和......
  • 如何使用钉钉群机器人给钉钉群发送消息
    钉钉群添加自定义机器人群内添加自定义机器人,从自定义配置中获取到secret以及accessToken代码调用 Longtimestamp=System.currentTimeMillis();Stringsecret="secret";StringaccessToken="accessToken";StringstringToSign=timestamp......
  • 接触
    接触类型Bonded(绑定):默认接触形式,不允许界面或单元相对滑动或分离,即使加载或移除载荷后也能保持接触。法线方向不可分开,切向也不行NoSeparation(不分离):不允许分离,即使加载或移除载荷后,界面不允许接触面分离,但允许相对滑动。相当于相对面间有小范围滑动,即法向不可分离,......
  • 邮箱验证的重要性,EDM邮件营销群发管理工具--Geeksend邮件营销邮箱验证功能的过人之处
    在进行邮件营销之前,我们是否有必要对收件邮箱进行验证?显然是很有必要的!下面我将总结了几点有关邮箱验证的重要性:邮箱验证的重要性提高邮件营销效果:通过验证真实的邮箱地址,确保邮件能够准确地送达目标用户,从而提高邮件营销活动的转化率。降低营销成本:避免向无效或错误的邮箱......
  • 如何运用Geeksend集成式自动化邮件营销管理平台高效群发邮件
    在邮件营销中,提高用户粘性是一个重要的目标,这有助于增强用户与品牌的互动,并促进用户转化为忠诚的顾客。以下是一些具体的策略和方法,以提高邮件营销中的用户粘性:1.个性化推送:根据用户的订阅偏好和需求,推送符合他们兴趣的邮件内容。通过了解用户的购买历史、浏览行为等,可以更......
  • 外贸人做EDM邮件群发营销时都用什么邮箱?目前使用率较高的主流邮箱汇总
    在2024年使用率较高的邮箱如下,列举出的邮箱(包含但不限于)也可与Geeksend--集成式自动化邮件营销管理平台进行连接。高效获取管理潜在客户,营销信息即刻送达,效率和收益持续提高,全方位助力您的营销业务!Gmail(谷歌邮箱):市场份额与活跃度:Gmail是世界上最受欢迎的免费邮箱之一,其活跃......
  • WebRTC群发消息API接口选型指南!怎么用?
    WebRTC群发消息API接口安全性如何?API接口怎么优化?WebRTC技术在现代实时通信中占据了重要地位。对于需要实现群发消息功能的应用程序来说,选择合适的WebRTC群发消息API接口是至关重要的。AokSend将详细介绍WebRTC群发消息API接口的选型指南。WebRTC群发消息API接口:稳定可靠一......
  • 自动群发信息的插件开发会用上哪些源代码?
    在当今数字化时代,自动群发信息的插件成为了许多企业和个人提高沟通效率的重要工具,这类插件可以应用于各种场景,如社交媒体、即时通讯软件、企业内部通讯等。然而,开发一个高效且稳定的自动群发信息插件并非易事,需要深入理解并熟练掌握相关的源代码,本文将从五个方面科普自动群发......
  • 如何实现iMessage自动群发
    Apple公司全线在macos与ios两个操作系统上内置了FaceTime与iMessage两个应用。完美替代运营商的短信与电话。并且FaceTime与iMessage的帐号不仅仅与AppleID绑定,同时也与使用这AppleID的手机号码绑定,这样的漏洞自然给无孔不入的群发垃圾信息商们提供了后门。研究怎么实现iMessa......