“…Let Restable be a table of tuples(fragno, fragment, distance) for each packet pkt from attacker Restable.Insert(pkt.fragno, pkt.fragment, pkt.distance) if pkt.distance > maxd then maxd: = pkt.distance Remove duplicates from the Restable /* delete from Restable where ID not in (select min(ID) from Restable group by fragno, fragment, distance) */ Let S d be empty for 0 6 d 6 maxd for d: = 0 to maxd /* Select pkt.fragno, pkt.fragment from Restable pkt, Restable pkt1 where pkt.substr(0,7) = pkt.substr (8,15) and pkt.distance = d ordered by pkt.fragno */ for all ordered combinations and successive fragments if(pkt.substring(8,15) = pkt1.substring(0,7) /* where pkt and pkt1 are two successive fragments */ if(pkt.fragno = 0) S d = pkt.fragment else S d = Concatenate(S d , pkt.substring(8,15)) for d = 0 to maxd firstpart = pkt.substring(0,7); lastpart = pkt.substring(32,40); if(firstpart = lastpart) X dec = S d .substring(0, 32) Convert X dec from decimal to binary and store in X /* Find IP 1 IP 2 IP 3 IP 4 using CRT */ IP 1 = X mod 251 IP 2 = X mod 253 IP 3 = X mod 255 IP 4 = X mod 256 Combined IP address = (IP 1 . IP 2 .…”