45 lines
1.4 KiB
Rust
45 lines
1.4 KiB
Rust
use futures_util::{SinkExt, StreamExt};
|
|
use rnex_core::prudp::types_flags::{TypesFlags, flags::NEED_ACK, types::SYN};
|
|
use tokio_tungstenite::tungstenite::{Message, client::IntoClientRequest, http::header};
|
|
|
|
use crate::packet::{LiteHeader, LitePacket, PacketSpecificData, StreamTypes, create_packet_from};
|
|
|
|
mod packet;
|
|
|
|
const KEY: &str = "4eb18d39";
|
|
|
|
const URL: &str = "wss://g2DF33D01-lp1.s.n.srv.nintendo.net";
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let login = URL.into_client_request().unwrap();
|
|
let (mut stream, response) = tokio_tungstenite::connect_async(login).await.unwrap();
|
|
|
|
println!("response: {:?}", response);
|
|
|
|
let packet = create_packet_from(
|
|
LiteHeader {
|
|
stream_types: StreamTypes::new(10, 10),
|
|
source_port: 1,
|
|
destination_port: 1,
|
|
fragment_id: 0,
|
|
types_flags: TypesFlags::default().types(SYN).flags(NEED_ACK),
|
|
sequence_id: 0,
|
|
..Default::default()
|
|
},
|
|
&[PacketSpecificData::SupportedFunctions(0x8)],
|
|
&[],
|
|
);
|
|
|
|
println!("sending ack");
|
|
stream.send(Message::Binary(packet.into())).await.unwrap();
|
|
println!("waiting for response");
|
|
let packet = stream.next().await.unwrap();
|
|
let Message::Binary(packet) = packet.unwrap() else {
|
|
panic!()
|
|
};
|
|
let packet = LitePacket::new(packet);
|
|
|
|
let header = packet.header().unwrap();
|
|
|
|
println!("{:?}", header);
|
|
}
|