Я пытаюсь создать поток трафика, используя https или http
У меня возникла проблема с созданием пакетов уровня ssl на dport за пределами dport 443. У меня также возникают проблемы с созданием обычных пакетов с необработанными данными на dport 443.
первый пакет, который я создаю, имеет tcp dport = 443, и когда я использую show2 (), появляется слой SSL
p = Ether()/IP(src="1.2.3.4", dst='4.3.2.1',flags="DF")/TCP(sport=12345, dport=443, flags="PA", ack=1111, seq=3222)/SSL(records=[TLSRecord()/TLSHandshake()])
p.show2()
###[ Ethernet ]###
dst= 00:26:52:ce:5f:49
src= 34:23:87:20:76:59
type= IPv4
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len= 49
id= 1
flags= DF
frag= 0L
ttl= 64
proto= tcp
chksum= 0x30bd
src= 1.2.3.4
dst= 4.3.2.1
\options\
###[ TCP ]###
sport= 12345
dport= https
seq= 3222
ack= 1111
dataofs= 5L
reserved= 0L
flags= PA
window= 8192
chksum= 0x27d5
urgptr= 0
options= []
###[ SSL/TLS ]###
\records\
|###[ TLS Record ]###
| content_type= handshake
| version= TLS_1_0
| length= 0x4
|###[ TLS Handshake ]###
| type= client_hello
| length= 0x0
второй созданный мной пакет идентичен первому, за исключением того, что у него tcp dport = 4443, но когда я использую show2 (), уровень SSL воспроизводится Raw
p2 = Ether()/IP(src="1.2.3.4", dst='4.3.2.1',flags="DF")/TCP(sport=12345, dport=4443, flags="PA", ack=1111, seq=3222)/SSL(records=[TLSRecord()/TLSHandshake()])
p2.show2()
###[ Ethernet ]###
dst= 00:26:52:ce:5f:49
src= 34:23:87:20:76:59
type= IPv4
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len= 49
id= 1
flags= DF
frag= 0L
ttl= 64
proto= tcp
chksum= 0x30bd
src= 1.2.3.4
dst= 4.3.2.1
\options\
###[ TCP ]###
sport= 12345
dport= 4443
seq= 3222
ack= 1111
dataofs= 5L
reserved= 0L
flags= PA
window= 8192
chksum= 0x1835
urgptr= 0
options= []
###[ Raw ]###
load= '\x16\x03\x01\x00\x04\x01\x00\x00\x00'
третий пакет создается без уровня ssl, но находится на tcp dport = 443, когда я использую show2 (), уровень ssl присутствует, и я не ожидаю его
p3 = Ether()/IP(src="1.2.3.4", dst='4.3.2.1',flags="DF")/TCP(sport=12345, dport=443, flags="PA", ack=1111, seq=3222)/Raw(load="g\x05ZN`")
p3.show2()
###[ Ethernet ]###
dst= 00:26:52:ce:5f:49
src= 34:23:87:20:76:59
type= IPv4
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len= 45
id= 1
flags= DF
frag= 0L
ttl= 64
proto= tcp
chksum= 0x30c1
src= 1.2.3.4
dst= 4.3.2.1
\options\
###[ TCP ]###
sport= 12345
dport= https
seq= 3222
ack= 1111
dataofs= 5L
reserved= 0L
flags= PA
window= 8192
chksum= 0x2189
urgptr= 0
options= []
###[ SSL/TLS ]###
\records\
###[ Raw ]###
load= 'g\x05ZN`'
вопросов:
как я могу создать пакет, в котором слой ssl отображается в другом порту, отличном от 443?
почему необработанные данные появляются на уровне SSL, где dport = 443
я застрял, используя dport 443 для ssl / tls?
Я также застрял на использовании! 443 dport, когда не использую ssl / tls?
другая информация, возможно, связанная
scapy версия 2.3.1
scapy-ssl_ tls-версия 1.2.2
инструкция по установке:
install requirements from requirements.txt
copy scapy_ssl_tls/* to scapy_installation/scapy/layers
modify scapy_installation/scapy/config.py to autoload SSL/TLS