Changeset 895:879144443345
- Timestamp:
- 08/31/08 00:33:01
(4 months ago)
- Author:
- Phil <phil@secdev.org>
- Message:
Move RandDHCPOptions to layers/dhcp.py
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r871 |
r895 |
|
| 11 | 11 | from scapy.layers.inet import UDP |
|---|
| 12 | 12 | from scapy.base_classes import Net |
|---|
| | 13 | from scapy.volatile import RandField |
|---|
| 13 | 14 | |
|---|
| 14 | 15 | dhcpmagic="c\x82Sc" |
|---|
| … | … | |
| 146 | 147 | |
|---|
| 147 | 148 | |
|---|
| | 149 | class RandDHCPOptions(RandField): |
|---|
| | 150 | def __init__(self, size=None, rndstr=None): |
|---|
| | 151 | if size is None: |
|---|
| | 152 | size = RandNumExpo(0.05) |
|---|
| | 153 | self.size = size |
|---|
| | 154 | if rndstr is None: |
|---|
| | 155 | rndstr = RandBin(RandNum(0,255)) |
|---|
| | 156 | self.rndstr=rndstr |
|---|
| | 157 | self._opts = DHCPOptions.values() |
|---|
| | 158 | self._opts.remove("pad") |
|---|
| | 159 | self._opts.remove("end") |
|---|
| | 160 | def _fix(self): |
|---|
| | 161 | op = [] |
|---|
| | 162 | for k in range(self.size): |
|---|
| | 163 | o = random.choice(self._opts) |
|---|
| | 164 | if type(o) is str: |
|---|
| | 165 | op.append((o,self.rndstr*1)) |
|---|
| | 166 | else: |
|---|
| | 167 | op.append((o.name, o.randval()._fix())) |
|---|
| | 168 | return op |
|---|
| | 169 | |
|---|
| 148 | 170 | |
|---|
| 149 | 171 | class DHCPOptionsField(StrField): |
|---|
| r862 |
r895 |
|
| 206 | 206 | return ".".join(oid) |
|---|
| 207 | 207 | |
|---|
| 208 | | |
|---|
| 209 | | |
|---|
| 210 | | class RandDHCPOptions(RandField): |
|---|
| 211 | | def __init__(self, size=None, rndstr=None): |
|---|
| 212 | | if size is None: |
|---|
| 213 | | size = RandNumExpo(0.05) |
|---|
| 214 | | self.size = size |
|---|
| 215 | | if rndstr is None: |
|---|
| 216 | | rndstr = RandBin(RandNum(0,255)) |
|---|
| 217 | | self.rndstr=rndstr |
|---|
| 218 | | self._opts = DHCPOptions.values() |
|---|
| 219 | | self._opts.remove("pad") |
|---|
| 220 | | self._opts.remove("end") |
|---|
| 221 | | def _fix(self): |
|---|
| 222 | | op = [] |
|---|
| 223 | | for k in range(self.size): |
|---|
| 224 | | o = random.choice(self._opts) |
|---|
| 225 | | if type(o) is str: |
|---|
| 226 | | op.append((o,self.rndstr*1)) |
|---|
| 227 | | else: |
|---|
| 228 | | op.append((o.name, o.randval()._fix())) |
|---|
| 229 | | return op |
|---|
| 230 | 208 | |
|---|
| 231 | 209 | |
|---|