USB软件狗的设计及反破解技术

2006-05-07 15:50:09来源: 互联网

图1是一个简化了的TCP/IP协议的分层结构示意图。

  图1在遵循OSI的7层结构的基础上,对TCP/IP协议机制进行了适当的简化。在网络接口层,基于带宽及接口复杂程度的考虑,我们选择Ethernet网卡作为接入网络的接口,并采用ARP的方式对电话进行寻址。网络层仍然用IP数据报的方式封装从上层传来的数据包,它包括传输层的UDP及ICMP两种数据包,这两种数据包分别传送信令数据和语音数据。与TCP的传输方式相比,UDP的传输方式在网络压力不太大的情况下传输效率会更高。

  图2是IP电话的实现框图:以单片机为核心,包括存储、输入输出、与网络的接口及语音的编解码部分。

2 TCP/IP协议的设计

  根据IP电话实现的基本原理,可以将TCP/IP协议固件分为以下4个模块来实现。

(1)ARP模块

  ARP模块主要实现对电话的寻址功能。在网络中,IP电话同计算机一样,每个IP电话对应1个IP地址,用户每次建立连接之前首先要获得电话的IP地址及物理地址。在局域网中,为了减轻单片机的负担,可以在服务器中给用户建立电话号码与IP地址及物理地址的对应。用户建立连接之前,主叫用户首先给服务器发送1个ARP请求,与服务器取得联系,进而再发送ICMP请求。服务器将用户所需的对方的IP地址及物理地址放到ICMP包中,形成应答发送给主叫用户。

  ARP包的首部采用结构的方式来封装,一个ARP的头结构ARPKT如下:

typedef struct{

WORD hrd, /* 硬件类型 */

pro; /* 协议类型 */

BYTE hln, /*物理地址长度*/

pln; /* IP地址长度*/

WORD op; /* ARP操作字段*/

BYTE smac[MACLEN]; /*源物理地址*/

LWORD sip; /* 源IP地址*/

BYTE dmac[MACLEN]; /* 目的物理地址*/

LWORD dip; /* 目的IP地址 */

} ARPKT;

(2)IP模块

  IP模块主要实现对电话信令和语音数据的传输。在一个物理网络中,数据报可以直接从一个IP电话传送到另一个IP电话,因此不必考虑间接投递的问题。当IP电话要传送电话信令或语音数据时,IP层对ICMP或UDP包进行封装,进而传递给物理层形成帧发送出去。当IP数据报到达IP电话时,网络接口软件把它传给IP软件处理。如果其中的目的地址与自己的IP地址匹配,则接收该数据报并上传给合适的高层协议;如果不匹配,则丢弃该数据报。

  IP数据报的头部采用结构的形式进行封装,一个IP数据报的头部结构如下:

typedef struct{

BYTE vhl, /*版本及首部长度*/

service; /*IP服务类型*/

WORD len, /*IP数据报总长度*/

ident, /* 标识 */

frags; /*标志 */

BYTE ttl, /*生存时间*/

pcol; /*数据区所用的协议*/

WORD check; /*首部校验和*/

LWORD sip, /* IP源地址*/

dip; /*IP 目的地址*/

} IPHDR;

(3)ICMP模块

  ICMP模块主要实现对电话信令的封装。ICMP包可分为2种:ICMP请求和ICMP应答。ICMP请求包括2种情况:向服务器发送请求获取对方用户的IP地址及物理地址和向对端用户发送请求进行通话连接。相应的ICMP应答也有2种:服务器发送的应答和普通用户的应答。

  主叫用户与服务器取得联系后,向服务器发送1个ICMP请求并等待应答,从服务器的应答中获取对方的IP地址和物理地址,然后再向对端发送1个ICMP请求包,从叫用户收到主叫用户的请求,做出应答。ICMP包的格式如图3所示。

  用数据区的第1个字节来标识2种情况:若第1个字节全为零,则在后面的数据区域中可填入IP地址及物理地址。若不全为零,则第1个字节为电话信令。电话信令可以自己定义,按照程控交换机的技术规范,只需要以下一些基本信令即可:

Req-ID 请求对应IP地址 Ethernet ID号;

Req-conn 请求连接;

Conn-In 连接指示;

Req-lease 请求释放;

Lease-In 释放指示;

Acknowledge 应答;

ID_In ID 指示。

(4)UDP 模块

  UDP模块主要实现对语音数据的封装。在用户已经确定建立连接之后,将编码后的语音数据放在UDP的数据区域中进行传送。一个UDP的数据包格式如图4所示。

  它包括16bit的源地址、16bit的目的地址、16bit的报文长度及16bit的校验和。为了保证语音数据的质量及传输效率,数据区域的长度应适当选择,不宜过大或过小。

3 IP电话的呼叫过程

  整个IP电话的呼叫流程可分为3部分:连接阶段、通话阶段、拆线阶段。

(1)建立连接阶段

  在空闲状态下,CPU一直循环检测是否有摘机或其它用户呼入的信号。用户摘机时, CPU检测到摘机信号,就发送拨号音给用户并准备接收用户所拨的电话号码。待号码收齐后,CPU给服务器发送ARP请求,收到服务器的应答后再发送ICMP请求,从服务器的ICMP应答中获取对端的IP地址及物理地址,然后开始发起呼叫。通过ICMP包送到Ethernet,等待被叫用户回应,如果等待一段时间,用户未回应,说明用户不在或线路故障,给用户送忙音;如果被叫用户回应,就给话筒送回铃音,同时被叫用户一方振铃;若被叫久不摘机,被叫停止振铃,并发ICMP消息给主叫用户拆线,主叫用户收到此消息,送忙音,等待主叫用户挂机;如果被叫用户在规定时间内摘机,则停止送振铃音,并用ICMP应答信号,通知主叫用户,被叫已应答,主叫用户收到此消息,停止送铃音,通话开始。

(2)通话阶段

  进入通话阶段,主叫用户就开始发送话音数据的IP包。具体过程如下:首先,将编码后的语音数据进行接收,并按照UDP进行封装,再封装成IP包送往Ethernet;同时,将Ethernet Card接收到的语音IP包进行拆包,并按一定节拍将解封语音数据进行解码,从而将被叫用户的话音送到听筒,将话筒的话音送到被叫方。被叫用户在通话阶段与主叫用户通话阶段所处理的过程完全相同。

(3)拆线阶段

  当双方通话阶段结束时,如果主叫先挂机,CPU检测了挂机信号,就经被叫方送拆线信号ICMP。被叫方收到此拆线信号,就给被叫方送忙音,提醒被叫方挂机。如果被叫方挂机,就经主叫方送1个释放应答信号,并停止送忙音,这次通话就宣告结束。相反地,如果被叫方先挂机,其处理过程与上面是相同的。1次通话过程结束后,双方进入空闲状态,CPU再进行循环检测是否有摘机以及其它用户呼入的信号,然后重复上面的处理过程。

结束语

  本设计方案将传统电话的实现方式与网络结合起来,在遵守TCP/IP基本协议的基础上,通过对其进行简化,在局域网内简单地实现IP电话,成本较低。同时,还存在一些缺陷,如时延、数据的丢失及互连互通等问题,这些都影响了话音的传输质量和电话的推广。不过可以通过增设网关来实现IP电话的互连互通性,拓宽网络的带宽可以减少网络的时延等,并且随着网络技术及其它电子技术的发展,这些问题必将迎刃而解!

关键字:软件  软件狗  设计  破解

编辑: 引用地址:http://www.eeworld.com.cn/wltx/qtjs/200605/2635.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
软件
软件狗
设计
破解

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved