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