Wireshark 在菜单项"Analyze"下有一个名为"follow tcp stream"的功能.
当我使用它时,会生成一个屏幕捕获过滤器,例如:
tcp.stream eq 1
这个指数来自哪里?
我在包含它的数据包中找不到任何字段...
我正在尝试使用Python打印出HTTP响应的主体.
这是我的代码sofar:
from twisted.web import proxy, http
from twisted.internet import reactor
from twisted.python import log
import sys
log.startLogging(sys.stdout)
class ProxyFactory(http.HTTPFactory):
protocol=proxy.Proxy
reactor.listenTCP(8080, ProxyFactory())
reactor.run()
Run Code Online (Sandbox Code Playgroud)
当我将浏览器连接到localhost:8080时,我可以看到我的所有请求都是通过本地运行的Python代理进行定向的.但是我如何1)打印出响应正文和2)编辑响应正文然后再将其发送回浏览器?
我希望有人可以指出我正确的方向 - 请记住,我是Python的新手!
我正在尝试使用通信协议(S1AP具体),我正在尝试定义要测试的消息.
LTE 36.413规范详细说明了该协议,并在pdf的底部给出了ASN.1文件定义.我已经看到在WireShark的解剖器中使用了ASN文件,我猜我可以使用它来按照规范生成消息.
我想知道你如何使用ASN.1文件.我一直在研究并找到有关ASN.1编译器的信息以及与之相关的其他信息,但所有信息都让我非常困惑,因为没有人清楚地解释如何使用它.有人可以帮我理解如何使用它吗?
如果问题不相关,请移动/关闭此项.
核心:Cortex-M4
微处理器:TI TM4C1294NCPDT.
IP堆栈:lwIP 1.4.1
我正在使用这个微处理器进行一些数据记录,我想通过以下形式通过HTTP请求将一些信息发送到单独的Web服务器:
http://123.456.789.012:8800/process.php?data1=foo&data2=bar&time=1234568789
我希望处理器能够看到响应头(即,如果它是200 OK或出现问题) - 它不必显示/接收实际内容.
lwIP有一个用于微处理器的http服务器,但我正好相反(微处理器是客户端).
我不确定数据包如何与请求/响应头相关联,所以我不确定我是如何实际发送/接收信息的.
我想知道如何通过php的unpack函数读取结构中的结构.当我得到一个IS_MCI数据包时,我检查它的类型以确保它等于ISP_MCI,然后检查NumC以找出该数据包中有多少个CompCar结构.问题是尝试通过单个函数将这些内容解压缩到一个数组中.我总是得到一个未定义的偏移量.所以,我正在寻找一些新的眼睛.
你会如何处理这个数据包?
有问题的结构是这样的:
struct IS_MCI // Multi Car Info - if more than 8 in race then more than one of these is sent
{
byte Size; // 4 + NumC * 28
byte Type; // ISP_MCI
byte ReqI; // 0 unless this is a reply to an TINY_MCI request
byte NumC; // number of valid CompCar structs in this packet
CompCar Info[8]; // car info for each player, 1 to 8 of these (NumC)
};
struct CompCar …
Run Code Online (Sandbox Code Playgroud) 我不想修改帧的以太网部分,但我需要修改IP数据包和帧的数据部分.
我尝试发送一个原始帧,它仍然输入IP信息.我基本上需要发送一个帧而不定义端点,除了我发送的位.
这是我得到的:
Socket s = new Socket(AddressFamily.Unspecified, SocketType.Raw, ProtocolType.Raw);
EndPoint ep = new IPEndPoint(IPAddress.Parse("205.188.100.58"),80);
s.SendTo(GetBytes(""),ep); //im sending nothing, so i expect the frame to just have ethernet stuff
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, false);
Run Code Online (Sandbox Code Playgroud)
我的问题: 使用SendTo添加帧的IP部分,我不希望这样,因为我想欺骗源IP.使用"发送"将崩溃,因为它说我需要指定一个端点.有关该怎么办的任何建议?我只是想发送一个数据包并自己定义IP部分和数据部分.
注意:不,我没有进行DOS攻击,我需要这个才能合法使用!
我知道如何定义IP部分,它只是在没有生成IP部分的情况下实际发送数据.
我的问题是:
如何从网络接口捕获传入的IP数据包,更改其内容并从另一个网络接口重新发送?
当类型为11时,ICMP数据包有效负载的大小是多少,即超过时间?由于它包含IP报头和生成ICMP消息的IP数据包有效负载的前8个字节,我认为其大小为20 + 8 = 28.
我正在重播TTL = 1的一些常见用户流量.在我倾倒的ICMP消息中,我注意到:
由于我需要通过比较这些字节来匹配ICMP超时消息和触发它们的数据包,因此这条信息是必不可少的,但我无法弄清楚为什么会发生这种情况.
最近,我设法在我的PC和Raspberry Pi上创建套接字,以实现两个设备之间的通信.目前,客户端能够自动向服务器发送消息.我想知道,如果有可能修改脚本来发送tcp数据包而不是纯文本消息,因为我非常希望将来使用我的PC来控制覆盆子pi,而不需要ssh/etc.
我看了一些例子,但由于我在编写自己的脚本/代码方面没有太多经验,所以我不太清楚如何去做.如果有人可以通过解释和一些例子(如果可能的话)指导我正确的方向,我将不胜感激.
无论如何这里是我正在运行的服务器/客户端脚本:
客户:
import socket
import sys
import struct
import time
#main function
if __name__ == "__main__":
if(len(sys.argv) < 2) :
print 'Usage : python client.py hostname'
sys.exit()
host = sys.argv[1]
port = 8888
#create an INET, STREAMing socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error:
print 'Failed to create socket'
sys.exit()
print 'Socket Created'
try:
remote_ip = socket.gethostbyname( host )
s.connect((host, port))
except socket.gaierror:
print 'Hostname could not be resolved. Exiting'
sys.exit()
print 'Socket Connected to ' …
Run Code Online (Sandbox Code Playgroud) 我正在尝试剖析数据包,它封装了另一个类似于数据包的结构,称为"标记".结构看起来像这样
+---------+
|Ether |
+---------+
|IP | a tag
+---------+
|UDP | +------------+
+---------+ |tagNumber |
|BVLC | +------------+
+---------+ |tagClass |
|NPDU | +------------+
+---------+ +-+ |LVT field |
|APDU | | +------------+
| +------+--+ | | |
| |Tag 1 | <------+ | data |
| +---------+ | |
| |Tag 2 | +------------+
| +---------+
| |Tag n |
+------------+
Run Code Online (Sandbox Code Playgroud)
为此,我创建了一个派生自现有的类PacketListField
,如下所示:
class TagListField(PacketListField):
def __init__(self):
PacketListField.__init__(
self,
"tags",
[],
guessBACNetTagClass,
Run Code Online (Sandbox Code Playgroud)
引用guessBACNetTagClass
的函数返回解析标记所需的正确类.
BACNetTagClasses = …
Run Code Online (Sandbox Code Playgroud)