Introduction
If you've ever written anything kernel side for Linux, I'm sure you've bashed your head on the keyboard as many times as I have looking through lackluster documentation and scouring source files to find structure definitions. Here's a little script that will show you the source file and line number of the given structure definition.
First of all, this script relies on a fantastic website that allows you to easily search through the Linux source files http://lxr.linux.no. I simply wrote a script to parse the output to show structure definition locations. Change the URL in the script depending on your current kernel version number.
Example
$ ./structure.py crypto_tfm [-] Searching for all structure definitions of: crypto_tfm [+] drivers/staging/rtl8192e/rtl8192e/rtl_crypto.h, line 186 [+] drivers/staging/rtl8192u/ieee80211/rtl_crypto.h, line 189 [+] include/linux/crypto.h, line 413
The Source
#!/usr/bin/python # Linux Kernel Structure Search import sys from BeautifulSoup import BeautifulSoup import requests def main(argv): struct_search = "http://lxr.linux.no/linux+v3.11/+code=" + argv[0] in_struct = 0 print "[-] Searching for all structure definitions of: " + argv[0] req = requests.get(struct_search) soup = BeautifulSoup(req.text) spanTag = soup.findAll('span') for tag in spanTag: try: myclass = tag['class'] if myclass == 'identtype': if tag.string == "Structure": in_struct = 1 elif in_struct: break if myclass == "resultline" and in_struct: aTag = tag.find('a') print "[+] " + aTag.text except: ohnoez=1 if not in_struct: print "[-] No Structures Found" if __name__ == "__main__": main(sys.argv[1:])
No comments:
Post a Comment