Funkce unpack – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Funkce unpack – PHP – Fórum – Programujte.comFunkce unpack – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Mixxy0
Newbie
13. 5. 2015   #1
-
0
-

Zdravím,

snažím se pomocí PHP funkce unpack() dekódovat pakety uložené v binárním pcap filu, který jsem dostal z WireSharku. Můj problém je, že si nejsem jistý, jaký datový typ bych měl pro jednotlivá pole paketů použít. Řešil někdo podbný problém, nebo má s tím někdo zkušenosti?

Mám 2 soubory, jeden je binární a jeden je textový(s hexadecimálními čísly), obě obsahují záznam stejných dat.

Pro dekódovaní jsem si udělal jednoduchou třídu(my.php):

<?
class parser
{
	private $f;		//odkaz na soubor
	private $u32="V";	//rozbaleni 32bit unsigned long formatu(z bin formatu LSB)
	private $u16="v";	//rozbaleni 16bit unsigned long formatu(z bin formatu LSB)
	private $header;	//hlavicka paketu
	private $packet;	//část paketu

	function openFile($file)			//metoda pro otevreni souboru
	{
		$this->f = fopen($file, "r");		//otevreni souboru a ulozeni odkazu do f
		$r = $this->readHeader();		//zavolani metody readHeader()
		$this->closeFile();
		return $r;
	}

	function closeFile()				//metoda pro zavreni souboru
	{
		fclose($this->f);
	}

	function readHeader()
	{
		$buffer = fread($this->f, 2);		//nacteni prvnich 2 bytu ze souboru
		$packet=unpack("vprvni",$buffer);	//konverze nactenych dat do pole
		return $this->packet = $packet['prvni'];
	}
	
	public function echoPacket()			//vypiš část paketu
	{
		echo hextodec($this->packet);
	}
}
?>

A následujícím kódem ji volám a vkládám do ní data:

<?
require("my.php");
$file="ieee802.15.4_capture_16bit_addr.pcap";
if (!isset($file) || !file_exists($file)) 
	die("Missing file\n");

$p = new parser();
$r = $p->openFile($file);
$p->echoPacket();
?>

Mé zdrojové soubory jsou zde:

http://dipl.mixxy.cz/ieee802.15.4_capture_16bit_addr.pcap

http://dipl.mixxy.cz/ieee802.15.4_capture_16bit_addr.txt

Nahlásit jako SPAM
IP: 85.132.138.–
Dřív jsem býval namyšlený, ale teďka už nemám chybu!
Reklama
Reklama
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 60 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý