从《如何在只有一份错误的协议的情况下,做好网络编程》论人品的重要性

从《如何在只有一份错误的协议的情况下,做好网络编程》论人品的重要性

临近过年,接收到一份“哦打”,为某型产品开发自动测试系统,而该型产品的主要测试仪表是一款国内仪表,使用自家的通信协议进行遥控操作。于是向仪表厂家要了一份通信协议,然后,故事就从这份协议开始了……

咱们先来看看这份协议,部分截图如下:
协议内容
嗯,看起来还是蛮正规的(ps:如果就这样可能就没有这篇博客了)
然后这份协议就一直在讲控制的各种协议和参数的设置,这也没毛病,可是到了最后才发现,没有通信的IP地址,端口号,只写明了TCP协议。
好吧,作为一个有经验(年纪大)的攻城狮,为这点小事还要再找厂家吗?当然不是啊,去仪表上看看……
好消息是仪表上确实有IP地址。
但是……没有监听端口号!?
好吧,作为一个有经验(年纪大)的攻城狮,为这点小事还要再找厂家吗?当然不是啊,去官网上看看……
在官网找了个通用的管理软件,运行一下,发现可以连接到仪表,根据“它能则代表我能”的IT撅铁驴……那么我也获得了通信的端口号(通过抓包)。
然后,事情没有完,这个管理软件只能测试是否连接上仪表,所有的通信协议都没有抓到:(
先不管了,我们先看看他们怎么通信的,没有截图了直接写吧:
首先:管理软件给仪器的10860端口发了一个“08:01”
然后:仪器回了一个“08:01:01:11”
再然后:他们就连上了,然后再也没有然后了……
anyway,起码人家已经通上了嘛,互有来回。然后我也学着给仪器发了一个“08:01”,仪器也真的就回来一个“08:01:01:11”。
其实,到了这里,虽然不明白他的真实含义,不过不影响我真的以为是找到了答案了……
既然跟组织联系上了,那我们继续试着发个协议码过去?
按照那个看起来很正规的协议,我认真的发了个
“FD F0 00 25 00 01 03 1A FE”
它也任性的给我回个
“FF 00 00 00 2B ……”一共43字节,内容不重要,反正不关发啥,基本都回这个内容,除了“08 01”
这个时候我才来重新审视,协议跟实际有反应的指令的区别。
“08 01”看起来很不规范,没头没尾没校验,这么就回了,我认认真真有头有尾有校验有地址有身份有长度怎么就换不回真心呢?
anyway,我还是按照“08 01”的规则来吧,据可靠猜测,08应该是命令ID了,而01则是命令参数,回的内容中,前2字节是返回我的问题,答案在后2位中,“01:11”的意思,据猜测是代表仪器的类别。然鹅,说好的枕头针尾ID和校验呢?好吧,如果能通上,规范算毛啊
根据以上思路,我给它发了个
“03”,没错,就是这么简单
结果5555555……
还是冰冷的43个字节
接着就是为了维护有经验攻城狮的尊严,不断的作尝试,这里省略100万字……
两天,过去了,我都能背出43个字节了……
为了项目,有时候牺牲一下尊严又如何呢?在这个新政策的引导下,我再次打通了客服的电话……
当我表达了我遥控仪表出了点问题,开始怀疑协议是否存在问题的时候,客服说协议没有问题啊,某某公司都实现了云云……
这个时候,我脆弱的心灵已经凉了半截了。为了攻城狮的荣誉,我再次指出协议最起码存在的问题——没有通信端口,这下他应该没法反驳了吧,哈哈哈哈……
冰冷的声音从彼端传来:“通信需要端口的吗?直接IP地址就行了啊,IP地址在仪表上可查……”
@#*&^%$%
剩下的半截也凉凉了……难道他们重新发明了TCP协议吗??????
过来一会,对方可能想到了什么,美妙的呻吟传来——“我们有个DEMO,要不我发给你看看?”
“要的,要的,麻烦了,谢谢!”,根据“它能则代表我能”的IT撅铁驴,我看到了胜利的曙光:)
收到DEMO 后立马打开,开始测试:
1.10860是对的。
2.协议是错的,是错的,是错的
如下图:
在这里插入图片描述
还是那个03的查询指令,看起来正规了,但是跟协议真的不同。
在这里插入图片描述
上图中,可清楚的看到,什么地址啊,校验啊都是不存在的,枕头针尾也是不同的,再看看下图,能更清晰的看到。
在这里插入图片描述
后面的结果自然就水到渠成了,虽然格式是错误的,但是里面的命令内容是对的,可能后面经过什么原因进行了更改吧。
anyway,经过那么坎坷的折腾,能成功靠的是一分的实力+两分的努力+七分的人品,哈哈,当然,称手的工具也是很重要的。
抓包神器,下面顺便来个大特写:
在这里插入图片描述
完……

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值