找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15763|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 }9 h& E+ {( Q3 p2 v- Y8 {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 p9 _3 c! l2 D; X4 P+ f+ a  O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% o: t% U/ h5 m8 l9 F% b' _usage: himr <address> <value>. sample: himr 0x80040000 0x0& x# S+ z0 X% n! B

; S7 _1 @6 S: Q, L3 L, g$ @) f+ s: O/ x" `4 P
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 Z& A+ U9 S5 C6 P2 f7 q( Y# S* w; d' ?! g+ V' T8 T: S$ {1 i' M
补充内容 (2012-3-8 09:42):
) }+ L9 ?5 S9 zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 j, J6 k" U% O9 P这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 C7 z+ ], \+ a6 c/ w2 G* W
# ^% K, ^! Y6 p9 xhimr <address> <value>. sample: himr 0x80040000 0x0/ T) Z" p& Y$ v6 K
; E- q0 ~6 Q# C3 q' u
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! D1 G4 J) L: X! M" Z* x7 D
himr 0x80040000 0x00" ?- ]5 P) ^  m7 t9 B. J1 p' U  i
himr 0x80040001 0x11
3 |1 I! I8 P! \+ _* ?5 ]himr 0x80040002 0x22" b, A% `7 |# U8 g, t, p
himr 0x80040003 0x33/ j+ f  F) d# H3 r9 a& F0 g6 Z# G
himr 0x80040004 0x443 U/ w$ I8 ~: e, C
himr 0x80040005 0x559 W4 o$ B  q0 h0 L# D% \* ^" F

0 t, x8 Z' D+ U- P9 F$ z% h" _SN也是类似。
" N, f: Q/ c, c" h4 {  W; a/ q1 E7 _' z
/ c  ?7 N  I0 V! l* C. G" U现在主要是,谁告诉我们MAC和SN的地址?
$ _& b5 ]/ T; ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" I5 f+ q7 v2 C; T, {" |一直想找到运程修改MAC和SN的办法,苦于无解啊

/ y1 L, o: b7 V" X3 V源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( u/ V3 w  k2 @
7 n, {- [; V1 t% O* R! h
修改的代码早有了。到今天不会编译。
. j$ E; z2 G" F3 i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, p8 L9 y: F/ W) G& z" A- E
  2. #include <malloc.h>
    9 G7 ]2 @' N1 N. ~: F* y
  3. #include <sys/types.h>8 K: k4 i3 \( G5 O& _% }! f
  4. #include <sys/stat.h>
    ' w5 B6 K+ P8 K" T  {
  5. #include <sys/ioctl.h>3 J$ i; t* F9 @4 d1 ~. L( A
  6. #include <stdio.h>* Z/ V7 Z$ k2 ~1 ?* q
  7. #include <string.h>% ^; H  _2 v  g/ [' `/ e* A

  8. & z- Y! Q& Z! Y  B
  9. typedef struct {
    % o+ a& a+ N6 G( y/ H0 m
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 ^' p4 l$ o- [
  11.         unsigned int        sub_addr_count;6 K: M* S8 h* W! T
  12.         unsigned char*        e2prom_cmd_data;
      \" b! ]- u0 x$ K! I; w
  13.         unsigned int        data_count;
    ( B: h/ j7 I0 \* f6 K
  14. } e2prom_s_cmd;9 d1 z6 s3 B9 S7 W
  15. : W# u7 W1 [6 q: S1 s
  16. #define E2PROM_CMD_READ 14 T+ s& n1 e) H
  17. #define E2PROM_CMD_WRITE 24 K0 T- Z& V/ ?3 ?+ f; y6 p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 W/ d+ b- h% R6 ?4 S* |7 N
  19. : N1 N3 C9 L2 Q& c; ~- c, }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 O' B( q# }9 @4 w# v) v! I
  21. {
    5 T( q# X1 s" F0 F
  22.         int fd, ret;" A# E" m/ c& I! z5 n
  23.         e2prom_s_cmd arg;" c3 k0 {# \6 e
  24.         unsigned char buf[0x18];
    . ?: |" B- y0 S5 Q
  25. ! g) r5 U! d4 w+ J4 S+ G2 i4 W) W, R9 |9 n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 t- f& p. C  y3 }! m) H5 }2 G
  27.         if (fd  < 0) {
    . W( p5 E6 N) U5 ?6 ?' S# U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) u! A; b- U5 P+ d$ O
  29.                 return -1;
    ! Q; j- l% i' M0 B; S
  30.         }2 c( Q' b+ x! H) s2 E6 n5 F
  31.         arg.sub_addr_count      = 2;9 }2 t- A5 Y/ H. |/ @6 R
  32.         arg.data_count          = 0x18;" q' s; J7 N4 D- A* v7 G+ k: f
  33.         arg.e2prom_cmd_sub_addr = 0x290;. A. s3 S0 v" D3 p2 U3 V3 N
  34.         arg.e2prom_cmd_data     = buf;
    + f: U4 O/ U/ \5 G9 b2 H1 c8 B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ i! Z+ @( a' ?) I! O" W% ^( `
  36.         if (ret != 0) {
    ! \5 u5 n8 r  g7 f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 {! ~6 M, S  @! \. m
  38.                 return -1;
      R3 G3 D. K# d# P0 n6 o
  39.         }
    & M) M1 s: n" W. j) i
  40.         memcpy(mac, buf, 6);$ ^% s3 Y- H# x' L
  41.         memcpy(stbid, &buf[6], 18);
    . R& u  l& d/ M5 `
  42.         stbid[18] = '\0';, V9 |( I/ u* W0 R1 a
  43. 4 m% c& c  l: ?. \- D. R7 ~- @* _# a
  44.         return 0;
    % k' X: n2 {, r1 c5 P& ?
  45. }  j- T2 `: j& D0 Q, s  H) C
  46. " B5 }4 e/ U5 w" n9 l& X4 _6 [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% W. g. i+ c# J5 W/ z( M
  48. {
    $ a( o' u$ x: z' G* ]+ y8 w
  49.         int fd, ret;$ C5 m+ L" z8 o0 ?
  50.         e2prom_s_cmd arg;
    , K. y0 ?8 l0 v4 d/ y
  51.         unsigned char buf[0x18];
    : X8 Z. f' H" ]' S

  52. 5 H' M7 t5 N# t6 |- ~3 b
  53.         memcpy(buf, mac, 6);/ |" x* Q* B, U" {) u( M0 A
  54.         memcpy(&buf[6], stbid, 18);7 w3 t. g; g: a  S+ Q5 A0 d
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 g7 e, w  h! B5 H
  56.         if (fd  < 0) {
    8 R# X3 y* f6 [2 H+ q9 u; ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: O5 v8 F4 i' O& p  L- }
  58.                 return -1;
    . Z  D# ?  J. g+ \6 t9 m) Z, n3 v
  59.         }
    $ @3 V, {! G/ L$ H: u0 h2 }
  60.         arg.sub_addr_count      = 2;
    * U6 k9 \9 L' X: k! o3 O
  61.         arg.data_count          = 0x18;
    : d8 g5 q' T- H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) q+ P' ~- W/ K5 M7 ]' [+ B
  63.         arg.e2prom_cmd_data     = buf;) D1 M) H0 _: E  G$ K: ~1 W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( I9 s. d2 ]7 `
  65.         if (ret != 0) {/ v8 @; I" J- Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & P/ u( ]# U! o7 ?$ y
  67.                 return -1;5 W1 g1 a6 w4 T
  68.         }' r3 i! U' c5 }, _

  69. : X$ y; W# C% B4 C: y, }7 l
  70.         return 0;( _% ]8 ~, D4 R
  71. }# }. z8 y8 \1 I, k
  72. * o' [6 o( K/ K# V$ ^' V
  73. int main()
    5 o5 ]/ |7 }  n- D5 o  I
  74. {; ]- `5 n/ R+ r- S: u! g9 Y9 B
  75.         char c;& L2 d! B1 k2 U8 G- C
  76.         int i, macs[6];
    % S* H7 i' ~- G; C5 N9 b: k* ^3 B
  77.         unsigned char mac[6];, d% N7 h6 C; R6 H9 a
  78.         unsigned char stbid[256];% X# I& s( w9 U! Z# \
  79. % ~( X  N; y* R4 I
  80.         if (readparam(mac, stbid) < 0)0 T* E' h3 j9 i4 o
  81.                 return 1;6 x2 d4 F! P; w( H& L8 D1 R1 c

  82. $ Z/ n7 N1 u4 U* t
  83.         printf("Current parameters: \n");- ?* i* I/ a* W) m- n& ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " _* ~6 A! Q- O7 t' y
  85.         printf("  STBID: %s\n", stbid);
      @! E/ p) d4 u. Q6 y
  86.         " B8 o- p; n& z" @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) p1 X/ e7 x9 T& R( o! p+ @
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( G7 k3 o1 q6 @. Z
  89.                 printf("Input MAC error\n");
    4 F6 c" Y/ |. M
  90.                 return 1;8 D2 \+ g! q: U" K# Z
  91.         }7 e' r9 ^- o( V3 W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! @# L& X6 C! t. G# R6 q: c
  93.         printf("\nPlease input new STBID: ");. d: y9 h, A% D/ u9 E, ]* t& p
  94.         scanf("%s", stbid);5 p) L- x$ a. C& i9 [: c. T
  95.         if (strlen(stbid) != 18) {
    + p' a1 K& l$ \$ Z* H8 L
  96.                 printf("Invalid stbid\n");
    1 t# t3 u9 R* W+ h8 I. l& \5 @
  97.                 return 1;1 V; s2 P+ L  Q8 E8 j
  98.         }
    , A- G7 N5 V& h, M/ x- a. W
  99.         printf("\nNew parameters: \n");
    8 j( v- [8 ]( S2 Z2 f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      X) }: H; V# \; s* K; G
  101.         printf("  STBID: %s\n", stbid);
    4 [0 I- L$ E! ~$ L/ ]& x
  102. % j; n' M$ L# w/ F2 ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ w% R  Y- s3 I4 H. G
  104.         for (;;) {
    ( M% @6 _( D; x5 n; p9 P3 u+ l
  105.                 c = getchar();3 T3 Z  j. P  @' d2 U% s
  106.                 if (c == 'y' || c == 'Y')0 @, Y! O4 q; |: f# Y: k$ ]/ ^5 S
  107.                         break;% c  Z: j4 `5 ~# F
  108.                 if (c == 'n' || c == 'N') {2 S- O' q! N# i/ \- X$ E6 e
  109.                         printf("\nAborted.\n");
    * E* W' m5 e! W7 ?5 x5 e
  110.                         return 1;$ U# E: U$ h" w( g3 P8 }/ ^
  111.                 }
    & U4 [' z2 y' |) [7 S/ e
  112.         }6 s. j$ h* U* R( E
  113.         if (writeparam(mac, stbid) == 0)
    7 Y5 m" G- E* s' z. U- z2 p; @
  114.                 printf("Parameters changed.\n");
      h2 V3 y) x: C
  115. : ?0 y) G9 e: L4 s5 L$ Y8 J4 F" o
  116.         return 0;) ?2 F6 J# e/ H
  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 $ w; \( `. f2 ^  `3 Q9 \+ F
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ Z% z3 D# p5 _) |0 o: J  I你用的编译命令行格式是什么?" Y% m* ~% h1 l9 j9 h) Y; T' Z& L
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-14 14:11 , Processed in 0.038667 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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