Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smallyou/inetworkpacketparser
INetworkPacketParser是一个轻量级的面向对象的TCP/IP协议栈解析工具
https://github.com/smallyou/inetworkpacketparser
dns ios ip ippacket network objective-c oc packet parser tcp udp
Last synced: 4 months ago
JSON representation
INetworkPacketParser是一个轻量级的面向对象的TCP/IP协议栈解析工具
- Host: GitHub
- URL: https://github.com/smallyou/inetworkpacketparser
- Owner: smallyou
- License: apache-2.0
- Created: 2019-03-12T07:59:23.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-04-28T15:44:23.000Z (almost 6 years ago)
- Last Synced: 2024-09-18T02:44:13.824Z (5 months ago)
- Topics: dns, ios, ip, ippacket, network, objective-c, oc, packet, parser, tcp, udp
- Language: Objective-C
- Homepage:
- Size: 49.8 KB
- Stars: 10
- Watchers: 4
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# INetworkPacketParser
[![CI Status](https://img.shields.io/travis/smallyou/INetworkPacketParser.svg?style=flat)](https://travis-ci.org/smallyou/INetworkPacketParser)
[![Version](https://img.shields.io/cocoapods/v/INetworkPacketParser.svg?style=flat)](https://cocoapods.org/pods/INetworkPacketParser)
[![License](https://img.shields.io/cocoapods/l/INetworkPacketParser.svg?style=flat)](https://cocoapods.org/pods/INetworkPacketParser)
[![Platform](https://img.shields.io/cocoapods/p/INetworkPacketParser.svg?style=flat)](https://cocoapods.org/pods/INetworkPacketParser)`INetworkPacketParser`是一个轻量级的面向对象的`TCP/IP`协议栈解析工具。
## 简介
`INetworkPacketParser`是一个轻量级的面向对象的`TCP/IP`协议栈解析工具。
#### 数据包解析(Wire data 解析成 OC对象)
> 支持从网络传输的二进制数据转换成OC对象`
* 网络层协议解析:支持`IP Packet` 数据包解析
* 传输层协议解析:支持`TCP/UDP/ICMP`数据段解析
* 应用层协议解析:`DNS`报文解析(包括请求和响应报文)#### 数据包构造(OC对象 转换成 Wire Data)
> 支持将OC对象属性修改,并转换成可网络直接传输的二进制数据
* 网络层协议构造: 支持`IP Packet`报文构造及篡改
* 传输层协议构造: 支持`TCP/UDP`的数据段构造及篡改
* 应用层协议构造: 暂不支持#### 更新计划
- [x] IP数据包解析及构造
- [x] TCP/UDP数据段解析
- [x] DNS报文解析
- [ ] TCP/UDP数据段构造
- [ ] DNS 请求报文构造
- [ ] DNS 响应报文构造
- [ ] 其他应用层报文支持## 依赖
#### 系统版本
* iOS ~> 9.0
* MacOS ~> 10.0#### 库依赖
* 系统库: `resolv.lib`(CocoaPods自动安装)
## 安装
支持cocoapods安装
```ruby
pod 'INetworkPacketParser'
```## 示例
```
- (void)test {
// 网络二进制报文
NSString *hex = @"4500003c 734f0000 ff114f69 0a0a0a0a 72727272 cd240035 00284c24 63780100 00010000 00000000 03777777 0669636c 6f756403 636f6d00 00010001";
NSData *rawData = [self dataFromHexString:hex];
// IP数据包解析
IPPacket *packet = [[IPPacket alloc] initWithRawData:rawData];
if (packet.header.transportProtocol == UDP) {
// UDP解析
IPUDPSegment *udpSegment = [[IPUDPSegment alloc] initWithRawData:packet.payload];
if (udpSegment.header.destPort == 53) {
// DNS解析
IPDNSMessage *dnsMessage = [[IPDNSMessage alloc] initWithRawData:udpSegment.payload];
dnsMessage.dnsHeader;
dnsMessage.dnsQuery;
dnsMessage.dnsAnswers;
}
}else if (packet.header.transportProtocol == TCP) {
// TCP解析
IPTCPSegment *tcpSegment = [[IPTCPSegment alloc] initWithRawData:packet.payload];
}
}
```
## Authorsmallyou, [email protected]