找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15498|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! X( z$ \; h" q" T
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# h- d0 ]0 I. [' v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" I+ D: ?& T" @1 F5 ~1 xusage: himr <address> <value>. sample: himr 0x80040000 0x0' B3 ^# u9 d$ f$ ?; p

  _4 A+ V  e1 ?7 K. ~7 t$ H* k
( H+ f/ `$ W+ P% J* |不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( \' O$ }2 f% p4 m3 c" b: f
3 H! `) l  D, D2 [& u6 A( v4 g
补充内容 (2012-3-8 09:42):  f" q6 E# F6 L+ H* P. E, L
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; [+ a9 ^9 k5 a& r这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。  I- a7 m- U, L

1 t" ]( m8 s1 X) Lhimr <address> <value>. sample: himr 0x80040000 0x0
6 m+ R; X* E. Z5 |8 S5 R
9 d  B$ s* Y1 E5 t* [例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; c: y: r* _, n4 J7 qhimr 0x80040000 0x00
5 `7 x( q7 m4 B& p$ s5 o' B7 ghimr 0x80040001 0x11
4 @! G: |% n; N4 p4 D0 E; ^  phimr 0x80040002 0x22
! ~* _$ \6 s7 i+ U1 L0 r; u4 Hhimr 0x80040003 0x332 [& P+ ?) v4 M$ ~8 p
himr 0x80040004 0x443 `% L. f( Y" _8 c4 Y5 h
himr 0x80040005 0x555 p- C$ B+ g, f8 l' ~& }# S  |9 J/ \% ~0 F( J

9 E; a; V5 C: h7 \6 r8 S# XSN也是类似。
3 M$ a0 g2 z) q8 G) V9 n7 D
3 k4 x/ f$ c. ]0 L( g4 D现在主要是,谁告诉我们MAC和SN的地址?5 @2 P8 P* ^, [. a4 f% E  F* |" a! `
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # M; ?2 |2 I7 q1 r9 N9 \( V
一直想找到运程修改MAC和SN的办法,苦于无解啊

0 g. v8 H" O( p" X( d源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 p9 D& x3 Q2 |3 c5 @2 E* j1 L6 r
修改的代码早有了。到今天不会编译。
5 U3 \: ?! O* b: i# m* W  x! z) I需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' a8 P9 w" ]5 N! c0 k
  2. #include <malloc.h>
    6 j+ s$ M4 s  h: ~4 M
  3. #include <sys/types.h>: ]+ M" \1 h. T9 V
  4. #include <sys/stat.h>+ @6 z% k' x# t' d" m
  5. #include <sys/ioctl.h>9 r. [. q) Q& X2 Y+ |4 s+ t5 P
  6. #include <stdio.h>
    6 d- }+ S0 G# G/ B6 B
  7. #include <string.h>
    ( b1 [5 d" v6 y+ ]

  8. " s' M( v% N8 _; e  M% m
  9. typedef struct {. C' d% g+ ?# T7 B' X& ~$ t
  10.         unsigned int        e2prom_cmd_sub_addr;7 R5 U" k, R0 f, K
  11.         unsigned int        sub_addr_count;
    , V+ G) V3 S/ n! L0 v
  12.         unsigned char*        e2prom_cmd_data;
    & D1 c, M3 d5 U+ j( y6 n& G- |
  13.         unsigned int        data_count;
    7 m- g( c6 M: k% k) B0 {- u9 M
  14. } e2prom_s_cmd;
    1 g* ^, R9 m" m
  15. % W, w0 F2 \  B! a$ k. c& ?
  16. #define E2PROM_CMD_READ 1
    : p$ D. N' V  k* J! G) t3 B# [
  17. #define E2PROM_CMD_WRITE 2
    ) n# ]) z) {8 l# R# U6 Q. f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    " e. H2 k& u: t# E' D
  19. , w( H4 a4 B/ O/ V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / n; B7 l0 ^' q8 b/ L/ n/ i
  21. {
    3 l4 K3 N* x. l
  22.         int fd, ret;3 \- A( y3 a; n/ T2 V. }# X
  23.         e2prom_s_cmd arg;. h5 ~) D4 p9 l6 Q/ }7 `! g$ Y+ v
  24.         unsigned char buf[0x18];
    7 h5 s( B7 }) o4 D7 v

  25. 1 L+ N/ |+ [, ?( f2 l1 R
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ X4 `- C( I& S9 a, _5 V
  27.         if (fd  < 0) {
    & W6 p) J( |4 z8 M/ M& X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 C0 g" D0 C/ |7 Y1 t( W3 j- N
  29.                 return -1;9 X$ [$ R  g" b8 x( _& y
  30.         }! d$ i/ I1 i5 a3 j% d8 Q% k/ s
  31.         arg.sub_addr_count      = 2;
    1 e- j7 B; X% q2 s9 i
  32.         arg.data_count          = 0x18;! `) ?/ R1 ]! D+ ^9 p/ T
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 @2 `4 G, E% e' a: R6 |  l
  34.         arg.e2prom_cmd_data     = buf;
    ; h0 O2 d0 Y1 R  I1 u& {8 l' @1 G% t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ i( |0 U  L4 B. B" X3 R
  36.         if (ret != 0) {
    & d% l- T0 V' x* K5 U) K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- V3 m9 Q% u  @1 T" X# J
  38.                 return -1;- R% R% N- s3 p2 c$ v
  39.         }
    6 R: e2 V' V5 V
  40.         memcpy(mac, buf, 6);
    : M' d$ Y1 c3 a
  41.         memcpy(stbid, &buf[6], 18);
    * T. r) D2 z& H) y; E
  42.         stbid[18] = '\0';
    " H3 I3 F- v5 k" r, f; z

  43. " k( w7 v; o: ?1 m9 J
  44.         return 0;% S! y4 N, v# x$ [# [- {
  45. }
    $ E) A  d8 W) B, i7 i1 d
  46. 7 q# c1 b: ~+ L- ~. k+ `! q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 m7 Z$ P" ?( N" [
  48. {
    ( d  G# k1 n5 k# l' c' x5 r
  49.         int fd, ret;/ ^/ r2 K. Q4 R+ z7 k! ^
  50.         e2prom_s_cmd arg;
    ; C' H. U7 B# c+ \  I
  51.         unsigned char buf[0x18];) P/ ]" x/ \$ N8 f1 x
  52. ; L  Y6 O4 |# L, e" D7 _
  53.         memcpy(buf, mac, 6);' F/ _2 u5 F2 z
  54.         memcpy(&buf[6], stbid, 18);
    + u7 y' w; j6 R3 x5 M
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # u% C1 y# X; m6 b) M* G5 e. N
  56.         if (fd  < 0) {
      a0 M9 a& W: {# T0 H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : ]. O) R4 G. N& m- Y
  58.                 return -1;
    / u7 }# b& e7 Q' v0 {
  59.         }; Y" e) I, ?3 o4 q* b) n
  60.         arg.sub_addr_count      = 2;5 T! S* {8 H) K! ], a
  61.         arg.data_count          = 0x18;
    , z1 |! |0 J' R  z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    - G- r! O! A- \. g
  63.         arg.e2prom_cmd_data     = buf;
    3 p5 V0 L5 i8 @" w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ a+ {) @0 M6 r
  65.         if (ret != 0) {
    6 F, p, C; |9 a7 c# N7 k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 B3 s: t9 @1 ]( H4 {9 I) e8 g
  67.                 return -1;( A& e! s' I+ O. Z; B5 P, i
  68.         }* ^4 Y$ K$ M: a$ N& O' I2 U
  69. 7 r9 _' g, b0 Q# ?; N& ]
  70.         return 0;$ K. i" z" f, @7 s6 f- G: b
  71. }: d3 q3 Z; M# z

  72. 8 H' U6 l$ b' \- G0 c
  73. int main()
    0 K: E/ F% r; J  i! ?
  74. {
    9 x. {. r* x, R  B8 N: T6 m
  75.         char c;
    6 D) N% i8 z/ ?4 i9 S9 c& h
  76.         int i, macs[6];
    ) r8 J% h6 a8 T! F; s2 ?9 w
  77.         unsigned char mac[6];& @6 L  j* N3 }
  78.         unsigned char stbid[256];& K+ H# d4 Y4 A* i4 `9 ^; j

  79. 1 Z* i; _" ^9 Z
  80.         if (readparam(mac, stbid) < 0)
    % n- s) s& ^9 `8 [, a
  81.                 return 1;' [6 P6 M6 A* e& O, x
  82. 5 |' O8 Y$ M0 I+ i5 K
  83.         printf("Current parameters: \n");. ?+ D; k0 y, C( G
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - b( _8 |# W$ L4 l  h! |7 ~* U! H
  85.         printf("  STBID: %s\n", stbid);
    7 A$ R4 o% e& T& k# O
  86.         4 j* w6 t( f+ S% a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 t6 v8 O) a: p2 k$ M: Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 ?, |8 O9 V* @! c8 ^& y% D9 {
  89.                 printf("Input MAC error\n");
    5 E7 z( ~6 A# {' d% f4 ?$ j/ u: y
  90.                 return 1;
    8 U3 P1 @$ V8 b, B8 l. y' B* x3 x9 D
  91.         }8 T4 T# V# J* S# n" f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, M' D) p5 t+ D. }' [! _
  93.         printf("\nPlease input new STBID: ");( D6 @, a7 E' `2 [. l
  94.         scanf("%s", stbid);8 a. o; T: ]. r, f* B  o# }0 |
  95.         if (strlen(stbid) != 18) {! e6 V! S, l. A4 `( d2 B4 Z
  96.                 printf("Invalid stbid\n");4 X3 S+ _9 H  y- t& |' p
  97.                 return 1;
    ' o; A* a  S$ s) C0 ]+ S
  98.         }
    4 U8 _" _2 T4 S8 j
  99.         printf("\nNew parameters: \n");+ r# `* x$ Z, `1 }) a2 v4 [1 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 Z8 }: s2 U/ B0 s/ c
  101.         printf("  STBID: %s\n", stbid);$ }# d* N* m" O+ [, C" r. e
  102. 2 n. `; q# D' ?. b! P9 N6 T! p
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 j  @. h) U. {; _, _: j3 E+ o
  104.         for (;;) {
    6 R- f+ e) X+ T. ?
  105.                 c = getchar();
    - h+ A4 q6 F, c0 u9 z
  106.                 if (c == 'y' || c == 'Y')' t. _5 F$ K5 ^! R- v
  107.                         break;
    4 [* j; t; n. M9 j* `
  108.                 if (c == 'n' || c == 'N') {5 L* l3 q* z1 X; {: {2 N' `
  109.                         printf("\nAborted.\n");0 Y4 [. B% y' @2 n
  110.                         return 1;
    & g3 S! ^2 L5 T9 R1 p, y
  111.                 }! Z' k- ]) W, N) P/ F
  112.         }
    * [, X. e* M2 u  J
  113.         if (writeparam(mac, stbid) == 0)
    ' N5 J9 r7 H) J# ~& u' Z
  114.                 printf("Parameters changed.\n");+ {. n, F8 r  s* p
  115. 7 B7 w: L) ^. q
  116.         return 0;3 M. R" l, P; R) ~* L2 w3 z- a8 V
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
: f# H6 ?# V$ N' X  N5 d: V在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 j& p. ]+ ~/ y- N$ c. n你用的编译命令行格式是什么?, J% ~9 U( T; |* P8 C4 Q' G5 [
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-11 19:13 , Processed in 0.025972 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表