0.0.0.0
0.0.0.1
...
255.255.255.254
255.255.255.255
We were troubled by the fact that the instructions said all flags would begin with "The flag is:" (and we weren't going to have that) but decided to go for it and compute the MD5 sum of what we believed the file to be (slightly encouraged by the name of the file referring to every IP address).
The Ada program below correctly computed the MD5 (we also implemented this in Python, but the compiled language ran much faster).
WITH Ada.Text_IO; with gnat.md5; PROCEDURE Every_Ip IS FUNCTION To_String(X : IN Integer) return String IS s : string := integer'image(x); BEGIN RETURN S(S'First+1..S'Last); END To_String; context : gnat.md5.context := gnat.md5.initial_context; BEGIN FOR I IN 0..255 LOOP ada.Text_IO.put_line(integer'image(i)); FOR J IN 0..255 LOOP FOR K IN 0..255 LOOP for l in 0..255 loop gnat.md5.update(context,to_string(i)&"."&to_string(j)&"."&to_string(k)&"."&to_string(l)&ascii.lf); END LOOP; END LOOP; END LOOP; END LOOP; ada.Text_IO.put_line(gnat.md5.digest(context)); end every_ip;
No comments:
Post a Comment