proc hexn {v} { set b "0123456789abcdef" set v [expr $v & 15] return [string range $b $v $v] } proc hexb {v} { return [hexn [expr $v/16]][hexn $v] } proc hexw {v} { return [hexb [expr $v/256]][hexb $v] } proc hexl {v} { return [hexw [expr $v/65536]][hexw $v] } proc privpass {cookie} { regsub -all " " $cookie "" a set b [string tolower $a] set i [string first ":" $b] if {$i < 0} { set i -1 } set b [string range $b [expr $i+1] 666] set o 0 for {set i 0} {$i < 8} {incr i} { set a "0x[string range $b 0 3]" set b [string range $b 4 666] set o [expr $o + $a] } set i [expr $o & 0xffff] return [hexw $i] } puts [privpass "04 ff c1 8b 46 4f 43 31 31 33 33 34 34 56 54 40"] puts [privpass "0x00: 04 ff c1 8b 4a 41 45 30 38 31 32 37 36 50 37 09"]