Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[Sockets] ICMP als data carrier

Hallo mensen, Ik weet niet zeker of dit de juiste categorie is om dit te posten, maar het leek mij de beste. Ik ben aan het experimenteren met ICMP in C op Windows (Winsock), het is weinig moeilijk om een ping applicatie in elkaar te draaien en dat lukt dan ook wel. Wat ik echter eigenlijk zou willen is de payload van de ICMP Echo packet gebruiken om data over te sturen naar de ontvanger. Dit is kennelijk problematisch. Aan de kant van de ontvanger heb ik een progje draaien dat een raw ICMP socket bind op een "port", het nummer van deze "port" moet overeen komen met het ID van het binnenkomende ICMP packet heb ik gelezen - dat komt ook keurig overeen. In principe zou deze bound raw ICMP socket dus door middel van select() en recv() calls de data moeten kunnen ontvangen die de "client" stuurt. Dit gaat echter niet. Ik heb in mijn registry al DisableRawSecurity op 1 gezet en nog gaat het niet. Als ik met Ethereal alle ICMP packets oppak dan zie ik wel degelijk de ICMP Echo voorbij komen en de ontvanger stuurt een ECHO REPLY terug (dat doet het OS uit zichzelf denk ik zomaar). Op mijn applicatie komt echter geen packet binnen en ik krijg geen data. Nu vraag ik me af of het uberhaupt mogelijk is om dit te doen. Of misschien moet ik een ICMP Packet soort gebruiken die niet predefined is, omdat Echo misschien al op OS niveau wordt onderschept? Ik heb ergens een *nix-based tunnel app gezien die TCP traffic over ICMP tunneled, dus het lijkt me dat een dergelijke constructie op Windows ook mogelijk moet zijn. De sources die ik tot nu toe heb geproduceerd zijn hier te downloaden; http://dump.lycantrope.com/icmp Om te compileren wel wsock32.lib in de lijst met libraries zetten. Hopelijk kan iemand me op weg helpen. - Fahr

Fahr