ok

img

HexEditor

<?php

class HexEditor
{
	private $filename;
	private $bin;
	private $size;
	public function __construct()
	{
		if(!isset($_POST["file"]))
		{
			$this->top();
			$this->form();
			$this->bottom();
		}
		else
		{
			$this->deleteFile();
			$this->openFile();
			$this->javascript();
			$this->top();
			$this->show();
			$this->bottom();
		}
	}
	
	private function deleteFile()
	{
		$files = glob('temp/*');
		foreach($files as $file)
		{
			if(is_file($file))
			{
				unlink($file);
			}
		}
	}
	
	private function form()
	{
		print("<h3 style=\"margin-top:220px;\">file</h3>\n");
		print("<form action=\"index.php\" method=\"post\" enctype=\"multipart/form-data\">\n");
		print("Select file:\n");
		print("<input type=\"file\" name=\"fileToUpload\" id=\"fileToUpload\">\n");
		print("<input type=\"submit\" value=\"open\" name=\"file\">\n");
		print("</form>\n");
	}
	
	private function javascript()
	{
		print("<script>\n");
		print("var sel = 0;\n");
		print("function pos(n)\n");
		print("{\n");
		print("\tdocument.getElementById('f_' + sel).style.backgroundColor = '#111';\n");
		print("\tdocument.getElementById('g_' + sel).style.backgroundColor = '#111';\n");
		print("\tsel = n;\n");
		print("\tdocument.getElementById('f_' + sel).style.backgroundColor = '#05f';\n");
		print("\tdocument.getElementById('g_' + sel).style.backgroundColor = '#05f';\n");
		print("\tvar j1 = document.getElementById('f_' + n).value;\n");
		print("\tvar j2 = document.getElementById('f_' + (n + 1)).value;\n");
		print("\tvar j3 = document.getElementById('f_' + (n + 2)).value;\n");
		print("\tvar j4 = document.getElementById('f_' + (n + 3)).value;\n");
		print("\tvar k1 = parseInt('0x' + j1);\n");
		print("\tvar k2 = parseInt('0x' + j2);\n");
		print("\tvar k3 = parseInt('0x' + j3);\n");
		print("\tvar k4 = parseInt('0x' + j4);\n");
		print("\tdocument.getElementById('8bit').innerHTML = k1;\n");
		print("\tdocument.getElementById('16bit').innerHTML = k2 * 256 + k1;\n");
		print("\tdocument.getElementById('24bit').innerHTML = k3 * 65536 + k2 * 256 + k1;\n");
		print("\tdocument.getElementById('32bit').innerHTML = k4 * 16777216 + k3 * 65536 + k2 * 256 + k1;\n");
		print("}\n");
		print("</script>\n");
	}
	
	private function top()
	{
		print("<html>\n");
		print("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n");
		print("<head>\n");
		print("<style>\n");
		print("body{font:15pt Courier New, Monospace; padding:0; margin:0; background-color:#111; color:#ccc;}\n");
		print("input[type=text]{background-color:#111; color:#ccc;}\n");
		print("input:focus{outline:none;}\n");
		print(".field1{border:0; width:80px; text-align:center;}\n");
		print(".field2{border:0; width:30px; text-align:center;}\n");
		print(".field3{border:0; width:15px; text-align:center;}\n");
		print(".top{font:12pt Arial, Helvetica, sans-serif;; width:100%; height:200px; position:fixed; top:0; left:0; background-color:#05f; color:#fff; padding:0 10px;}\n");
		print(".main{margin-top:220px;}\n");
		print(".loadPanel{background-color:#111; padding:20px;}\n");
		print("</style>\n");
		print("</head>\n");
		print("<body onload=\"pos(0)\">\n");
		print("<div class=\"top\">\n");
		print("<h1>Hex Editor</h1>\n");
		print("<div>file name: " . $this->filename . " (" . $this->size . " Bytes)</div>\n");
		print("<div style=\"margin-top:10px\">\n");
		print("<div>int__8-bit: <span id=\"8bit\">0</span></div>\n");
		print("<div>int_16-bit: <span id=\"16bit\">0</span></div>\n");
		print("<div>int_24-bit: <span id=\"24bit\">0</span></div>\n");
		print("<div>int_32-bit: <span id=\"32bit\">0</span></div>\n");
		print("</div>\n");
		print("</div>\n");
	}
	
	private function bottom()
	{
		print("</body>\n");
		print("</html>\n");
	}
	
	private function openFile()
	{
		$this->filename = "temp/" . basename($_FILES["fileToUpload"]["name"]);
		if(move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $this->filename))
		{
			$handle = fopen($this->filename, "rb");
			$this->size = filesize($this->filename);
			$this->bin = fread($handle, $this->size);
			fclose($handle);
		}
		else
		{
			print("<div>file not found...</div>\n");
		}
	}
	
	private function show()
	{
		print("<div class=\"main\">\n");
		$len = strlen($this->bin);
		for($i = 0; $i < strlen($this->bin); $i += 16)
		{
			$hex = dechex($i);
			for($f = 0; $f = 8 - strlen($hex); $f++)
			{
				$hex = "0" . $hex;
			}
			print("<input class=\"field1\" type=\"text\" maxlength=\"8\" value=\"" . strtoupper($hex) . "\" readonly>\n");
			for($g = 0; $g < 16; $g++)
			{
				$hex = "";
				if($i + $g < $len)
				{
					$hex = dechex(ord($this->bin[$i + $g]));
				}
				if(strlen($hex) == 1){$hex = "0" . $hex;}
				print("<input id=\"f_" . ($i + $g) . "\" class=\"field2\" type=\"text\" maxlength=\"2\" onfocus=\"pos(" . ($i + $g) . ")\" value=\"" . strtoupper($hex) . "\">");
			}
			for($g = 0; $g < 16; $g++)
			{
				if($i + $g < $len)
				{
					$k = $this->bin[$i + $g];
					if(ord($k) < 32 || ord($k) > 126){$k = ".";}
					print("<input id=\"g_" . ($i + $g) . "\" class=\"field3\" type=\"text\" onfocus=\"document.getElementById('f_" . ($i + $g) . "').focus();\" value=\"" . $k . "\" readonly>");
				}
			}
			print("<br>");
		}
		print("</div>\n");
	}
}

new HexEditor();
?>

Biografia

Mi chiamo Cosimo Saccone e sono un programmatore napoletano di 44 anni con oltre 35 anni di esperienza nella programmazione (BASIC, Assembly). Realizzo progetti e programmi utilizzando i principali e più diffusi linguaggi (C, C++, PHP, Javascript, HTML) e software per la grafica (Photoshop, Illustrator, 3dsMax). Anche se la grafica rappresenta il mio principale settore di interesse, non disdegno il lavoro di back-end e di organizzazione dati e sono attento agli aspetti di efficienza e di risparmio delle risorse tipica della programmazione di basso livello (specie nel settore della grafica 3d). Realizzo siti internet, applicativi desktop e servizi di vario tipo. Ho una buona conoscenza della libreria OpenGL per lo sviluppo di applicazioni 3d interattive in C/C++. Cerco di adottare uno stile di programmazione fortemente ordinato e modulare. Possiedo, inoltre, una buona capacità di elaborazione della documentazione. Ho vari hobbies tra cui la pittura, la ginnastica e le lunghe passeggiate in solitudine.

facebook instagram youtube
HTML5 Template create by Cosimo Saccone 2022

Al fine di migliorare l’esperienza di navigazione sul nostro sito noi di cosimosaccone.com e i nostri partner selezionati elaboriamo i dati personali, compreso l’indirizzo IP e le pagine visitate, in relazione alla tua navigazione nei contenuti del sito, per i seguenti scopi:

Accesso alle informazioni
Dati precisi di geolocalizzazione
Misurazione del pubblico
Pubblicità e contenuti personalizzati
Ti ricordiamo che il termine cookie si riferisce a una porzione di dati inviati al tuo browser da un web server. Il cookie viene memorizzato sul tuo dispositivo e riconosciuto dal sito web che lo ha inviato in ogni navigazione successiva. Se vuoi saperne di più e compiere una scelta diversa, come il rifiuto del trattamento dei tuoi dati personali, clicca qui sulla nostra privacy policy. Potrai sempre modificare le tue scelte e impostare i singolo cookies selezionando il bottone qui sotto.
OK