抓包工具的进展(二)

    技术2022-05-11  24

    抓包工具的进展(二)

    (一)完成程序框架,调试,出错显示"数据被截断",且三个数据表均有此错误.   解决方法:   见 http://topic.csdn.net/t/20010831/10/264795.html 将CRecordSet继承的和表相关的类的cpp文件中的 RFX_Text(pFX,_T("[Data]"),m_Data);改为RFX_Text(pFX,_T("[Data]"),m_Data,400);原本在数据库表中定义的此项长度为300,可能因为长度较长的原因,导致数据被截断.一般在255以下不会截断.   (二)主窗口OnInitDialog返回return TRUE时出错。 debug后发现是在m_SPeer调用Find成员函数时,执行Open()时出错,解决方法是将Open()的调用去掉,因为在主窗口初始化时已经Open过了。 试图打开已经打开的表会出现内存写的错误。   目前尚不能实现的: IsSkype()判断是否为Skype通话的函数还未实现,其实现依赖于Skype通话的识别研究的结果。   下一步计划: 一.m_SPeer中增加一项数据用以存储正在通话过程中的可以发送的干扰数据包,已经填弃好IP头和TCP/UDP头及干扰包的数据。等到需要发送的时候直接将此项的数据作为干扰包发送出去,不必再重复自己填充数据包。 而对于新发现的skype通话,则在存储至m_SPeer的过程中,就计算好待发送的干扰数据包头及数据内容。   实现步骤: 1.在存储通话至m_SPeer时,计算好干扰数据包并存储. 2.在需要发送干扰数据包时,从m_SPeer中取出已计算好的即可. 3.发送干扰数据包的函数SendPkt的参数只需两个,一个是数据包的总长,另一个是数据包的内容char *型.   1.计算干扰数据包 FillPacket 将CString转换为char* 的方法 CString str; str = "aaa"; char *p = (char *)(LPCTSTR)str; 参见: http://www.cndiy8.com/ask18/how107610.htm   2.在子线程中判定为skype通话后,再查m_SPeer中是否已存在此通话,如未存在,则分析计算数据并存储至m_SPeer,如已存在,则取出其中计算好的数据包直接调用send发送   3.send的参数需增中目的IP地址及目的端口,这样在调用SEND函数时无需再分析数据,直接sendto至指定目的地址及端口.     目前进度:   可运行,但中途会死.原因待查.

    最新回复(0)